fixes re: @jcjones

This commit is contained in:
Roland Shoemaker 2015-04-08 19:17:39 -07:00
parent 16e0799742
commit e8ac96d68d
6 changed files with 21 additions and 62 deletions

View File

@ -7,8 +7,6 @@ package main
import (
"github.com/letsencrypt/boulder/Godeps/_workspace/src/github.com/streadway/amqp"
"log"
"time"
"github.com/letsencrypt/boulder/ca"
"github.com/letsencrypt/boulder/cmd"
@ -26,7 +24,7 @@ func main() {
cai, err := ca.NewCertificateAuthorityImpl(auditlogger, c.CA.Server, c.CA.AuthKey, c.CA.Profile)
cmd.FailOnError(err, "Failed to create CA impl")
for true {
for {
ch := cmd.AmqpChannel(c.AMQP.Server)
closeChan := ch.NotifyClose(make(chan *amqp.Error, 1))
@ -38,17 +36,7 @@ func main() {
cas, err := rpc.NewCertificateAuthorityServer(c.AMQP.CA.Server, ch, cai)
cmd.FailOnError(err, "Unable to create CA server")
forever := make(chan bool)
go func() {
for err := range closeChan {
log.Printf(" [!] AMQP Channel closed: [%s]", err)
time.Sleep(time.Second*10)
log.Printf(" [!] Reconnecting to AMQP...")
close(forever)
return
}
}()
cmd.MaybeRunForever(cas, forever)
cmd.RunUntilSignaled(auditlogger, cas, closeChan)
}
}

View File

@ -7,8 +7,6 @@ package main
import (
"github.com/letsencrypt/boulder/Godeps/_workspace/src/github.com/streadway/amqp"
"log"
"time"
"github.com/letsencrypt/boulder/cmd"
blog "github.com/letsencrypt/boulder/log"
@ -45,17 +43,7 @@ func main() {
ras, err := rpc.NewRegistrationAuthorityServer(c.AMQP.RA.Server, ch, &rai)
cmd.FailOnError(err, "Unable to create RA server")
forever := make(chan bool)
go func() {
for err := range closeChan {
log.Printf(" [!] AMQP Channel closed: [%s]", err)
time.Sleep(time.Second*10)
log.Printf(" [!] Reconnecting to AMQP...")
close(forever)
return
}
}()
cmd.MaybeRunForever(ras, forever)
cmd.RunUntilSignaled(auditlogger, ras, closeChan)
}
}

View File

@ -7,8 +7,6 @@ package main
import (
"github.com/letsencrypt/boulder/Godeps/_workspace/src/github.com/streadway/amqp"
"log"
"time"
// Load both drivers to allow configuring either
_ "github.com/letsencrypt/boulder/Godeps/_workspace/src/github.com/go-sql-driver/mysql"
@ -23,10 +21,10 @@ func main() {
app := cmd.NewAppShell("boulder-sa")
app.Action = func(c cmd.Config) {
// Set up logging
logger, err := blog.Dial(c.Syslog.Network, c.Syslog.Server, c.Syslog.Tag)
auditlogger, err := blog.Dial(c.Syslog.Network, c.Syslog.Server, c.Syslog.Tag)
cmd.FailOnError(err, "Could not connect to Syslog")
sai, err := sa.NewSQLStorageAuthority(logger, c.SA.DBDriver, c.SA.DBName)
sai, err := sa.NewSQLStorageAuthority(auditlogger, c.SA.DBDriver, c.SA.DBName)
cmd.FailOnError(err, "Failed to create SA impl")
for true {
@ -35,17 +33,7 @@ func main() {
sas := rpc.NewStorageAuthorityServer(c.AMQP.SA.Server, ch, sai)
forever := make(chan bool)
go func() {
for err := range closeChan {
log.Printf(" [!] AMQP Channel closed: [%s]", err)
time.Sleep(time.Second*10)
log.Printf(" [!] Reconnecting to AMQP...")
close(forever)
return
}
}()
cmd.MaybeRunForever(sas, forever)
cmd.RunUntilSignaled(auditlogger, sas, closeChan)
}
}

View File

@ -7,8 +7,6 @@ package main
import (
"github.com/letsencrypt/boulder/Godeps/_workspace/src/github.com/streadway/amqp"
"log"
"time"
"github.com/letsencrypt/boulder/cmd"
blog "github.com/letsencrypt/boulder/log"
@ -37,17 +35,7 @@ func main() {
vas, err := rpc.NewValidationAuthorityServer(c.AMQP.VA.Server, ch, &vai)
cmd.FailOnError(err, "Unable to create VA server")
forever := make(chan bool)
go func() {
for err := range closeChan {
log.Printf(" [!] AMQP Channel closed: [%s]", err)
time.Sleep(time.Second*10)
log.Printf(" [!] Reconnecting to AMQP...")
close(forever)
return
}
}()
cmd.MaybeRunForever(vas, forever)
cmd.RunUntilSignaled(auditlogger, vas, closeChan)
}
}

View File

@ -10,7 +10,6 @@ import (
"net/http"
"github.com/letsencrypt/boulder/Godeps/_workspace/src/github.com/streadway/amqp"
"log"
"time"
"github.com/letsencrypt/boulder/cmd"
@ -50,12 +49,12 @@ func main() {
// with new RA and SA rpc clients.
for true {
for err := range closeChan {
log.Printf(" [!] AMQP Channel closed: [%s]", err)
time.Sleep(time.Second*10)
auditlogger.Warning(fmt.Sprintf("AMQP Channel closed, will reconnect in 5 seconds: [%s]", err))
time.Sleep(time.Second*5)
rac, sac, closeChan = setupWFE(c, auditlogger)
wfe.RA = &rac
wfe.SA = &sac
log.Printf(" [!] Reconnected to AMQP")
auditlogger.Warning("Reconnected to AMQP")
}
}
}()

View File

@ -26,9 +26,11 @@ import (
"fmt"
"io/ioutil"
"os"
"time"
"github.com/letsencrypt/boulder/Godeps/_workspace/src/github.com/codegangsta/cli"
"github.com/letsencrypt/boulder/Godeps/_workspace/src/github.com/streadway/amqp"
blog "github.com/letsencrypt/boulder/log"
"github.com/letsencrypt/boulder/rpc"
)
@ -142,9 +144,15 @@ func RunForever(server *rpc.AmqpRPCServer) {
<-forever
}
// Start the server and maybe wait around forever...
func MaybeRunForever(server *rpc.AmqpRPCServer, forever chan bool) {
// Start the server and run until we get something on closeChan
func RunUntilSignaled(logger *blog.AuditLogger, server *rpc.AmqpRPCServer, closeChan chan *amqp.Error) {
server.Start()
fmt.Fprintf(os.Stderr, "Server running...\n")
<-forever
// Block until channel closes
err := <- closeChan
logger.Warning(fmt.Sprintf("AMQP Channel closed, will reconnect in 5 seconds: [%s]", err))
time.Sleep(time.Second*5)
logger.Warning("Reconnecting to AMQP...")
}