Make it so we use a single management link (most of the time) when doing dispositions or lock renewal (or other management related operations).
Also, added in a simple stress test. It's a bit manual at the moment, but it initiates 1000 concurrent renew lock calls at once, so it's a decent test of our response routing.
* defer close the link!
* nicer wrapping
* fold error handling to avoid variable shadowing and make scopes clearer
* fix return
* revert to simplest change possible
* Add associated-link-name property to RenewLocks message. Fix connection idle timeout for messages with >=10minsprocessing time.
* Upgrade go-amqp
* Make message.getLinkName package level function
* only set associated link name if available
Co-authored-by: Robert Zakrzewski <Robert.Zakrzewski@tomtom.com>
Co-authored-by: Joel Hendrix <jhendrix@microsoft.com>
* Add recovery mechanism to rpcClient
RPC operations will now attempt to recover, similar to sender and
receiver, in case of failure.
Fixed Recover() to atomically rebuild the client.
Close() will now close auth auto-refresh.
* add transient error checks
* don't recover on a closed connection
use common.Retry() for Recover() retry loop
added recovery tracing and debug logging
* improve some doc comments
* avoid potential for infinite loop
* Consolidate auth auto-refresh
Moved the enabling of auth auto-refresh to when calling
negotiateClaim(). This ensures that all code paths that require
authentication will enable auto-refresh.
Ensure that there's only one goroutine that performs the refresh.
Changed auth refresh interval to 15 minutes per guideance from SB.
Exit auth auto-refresh goroutine if it fails; this should help trigger
recovering of clients due to failed authentication.
* cancel auth when closing RPC client
* reuse existing timer
* reset the the auto-refresh guard on exit
The Recover() case will rebuild the AMQP client which means a new
refresh goroutine should be started.
Use a channel to synchronize with the refresh goroutine exiting.
* improved refresh goroutine synchronization
* don't exit refresh goroutine on refresh failure
* rename vars
* simplify timer
* Fix lastError race
* Move websocket pkg out of std lib to deal with proxy.
* Add WebsocketEOF to connection closed error check.
* add comment
* added ctx to flow to ns.newClient
Co-authored-by: Alexander Pashkov <alexpashkov123@gmail.com>
Co-authored-by: Chris <christopher.mcmillon@halliburton.com>
Co-authored-by: Joel Hendrix <jhendrix@microsoft.com>
* Support send and receiving custom annotations in System Properties
* update changelog and version number
Co-authored-by: Joel Hendrix <jhendrix@microsoft.com>
* update dependencies
switched pack.ag/amqp to github.com/Azure/go-amqp
updated azure-amqp-common-go to v3
update Go SDK dependencies to latest versions
* fix test output, ignore .vscode directory
* update release notes and version info