v0.7.0
Pre-release
Pre-release
This version overhauls connection retry and fixes the connection event dispatch order issue. Some internal changes to Joe were also made, which makes it faster and more resilient.
Removed
ConnectionError.TemporaryConnectionError.Timeout
Changed
- Go's
TimeoutandTemporaryinterfaces are not used anymore – the client makes no assumptions and retries on every network or response read error. The only cases whenConnection.Connectreturns now are either when there are no more retries left (when the number is not infinite), or when the request context was cancelled. *url.Errors that occur on the HTTP request are now unwrapped and their cause is put inside aConnectionError.Connection.Connectdoesn't suppress any errors anymore: the request context errors are returned as is, all other errors are wrapped insideConnectionError.- On reconnection attempt, the response reset error is now wrapped inside
ConnectionError. With this change, all errors other than the context errors are wrapped insideConnectionError. - Subscription callbacks are no longer called in individual goroutines. This caused messages to be received in an indereminate order. Make sure that your callbacks do not block for too long!
- If a
ReplayProvidermethod panics when called byJoe, instead of closing itself completely it just stops replaying, putting or GC-ing messages to upcoming clients.Joecontinues to function as if no replay provider was given. A stack trace is printed to stderr when such a panic occurs.