mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
no unbound recursion in publish()
unbound recursion approach can blow up call stack, and - I think - allocate memory unboundedly as well. We can simply loop until err != nil I didn't actually test this live, though tests succeed
This commit is contained in:
parent
5896903bd3
commit
e9f38b9fc0
@ -109,25 +109,26 @@ func Setup() error {
|
||||
}
|
||||
|
||||
func publish(routingKey string, msgString []byte) {
|
||||
err := channel.Publish(
|
||||
exchange, //exchange
|
||||
routingKey, // routing key
|
||||
false, // mandatory
|
||||
false, // immediate
|
||||
amqp.Publishing{
|
||||
ContentType: "application/json",
|
||||
Body: msgString,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
for {
|
||||
err := channel.Publish(
|
||||
exchange, //exchange
|
||||
routingKey, // routing key
|
||||
false, // mandatory
|
||||
false, // immediate
|
||||
amqp.Publishing{
|
||||
ContentType: "application/json",
|
||||
Body: msgString,
|
||||
},
|
||||
)
|
||||
if err == nil {
|
||||
return
|
||||
}
|
||||
// failures are most likely because the connection was lost.
|
||||
// the connection will be re-established, so just keep
|
||||
// retrying every 2seconds until we successfully publish.
|
||||
time.Sleep(2 * time.Second)
|
||||
fmt.Println("publish failed, retrying.")
|
||||
publish(routingKey, msgString)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func eventListener(event interface{}) error {
|
||||
|
Loading…
Reference in New Issue
Block a user