Releases: Azure/go-amqp
Releases · Azure/go-amqp
v0.19.1
Bugs Fixed
- Fixed a race closing a
Session
,Receiver
, orSender
in succession when the first attempt times out. - Check the
LinkError.RemoteErr
field when determining if a link was cleanly closed.
v0.19.0
Final beta before v1.0.0
Breaking Changes
Dial()
andNewConn()
now require acontext.Context
as their first parameter.- As a result, the
ConnOptions.Timeout
field has been removed.
- As a result, the
- Methods
Sender.Send()
andReceiver.Receive()
now take their respective options-type as the final argument. - The
ManualCredits
field inReceiverOptions
has been consolidated into fieldCredit
. - Renamed fields in the
ReceiverOptions
for configuring options on the source. - Renamed
DetachError
toLinkError
as "detach" has a specific meaning which doesn't equate to the returned link errors. - The
Receiver.DrainCredit()
API has been removed. - Removed fields
Batching
andBatchMaxAge
inReceiverOptions
. - The
IncomingWindow
andOutgoingWindow
fields inSessionOptions
have been removed. - The field
SenderOptions.IgnoreDispositionErrors
has been removed.- By default, messages that are rejected by the peer no longer close the
Sender
.
- By default, messages that are rejected by the peer no longer close the
- The field
SendSettled
in typeMessage
has been moved to typeSendOptions
and renamed asSettled
. - The following type aliases have been removed.
Address
,Binary
,MessageID
,SequenceNumber
,Symbol
- Method
Message.LinkName()
has been removed.
Bugs Fixed
- Don't discard incoming frames while closing a Session.
- Client-side termination of a Session due to invalid state will wait for the peer to acknowledge the Session's end.
- Ensure that
Receiver.Receive()
drains prefetched messages when the link closed. - Fixed an issue that could cause closing a
Receiver
to hang under certain circumstances.
Other Changes
- Debug logging has been cleaned up to reduce the number of redundant entries and consolidate the entry format.
- DEBUG_LEVEL 1 now captures all sent/received frames along with basic flow control information.
- Higher debug levels add entries when a frame transitions across mux boundaries and other diagnostics info.
- Refactored handling of incoming frames to eliminate potential deadlocks due to "mux pumping".
- Disallow sending of frames once the end performative has been sent.
- Clean up client-side state when a
context.Context
expires or is cancelled and document the potential side-effects. - Unexpected frames will now terminate a
Session
,Receiver
, orSender
as required. - Cleaned up tests that triggered the race detector.
v0.18.1
Bugs Fixed
- Fixed an issue that could cause
Conn.connReader()
to become blocked in rare circumstances. - Fixed an issue that could cause outgoing transfers to be rejected by some brokers due to out-of-sequence delivery IDs.
- Fixed an issue that could cause senders and receivers within the same session to deadlock if the receiver was configured with
ReceiverSettleModeFirst
. - Enabled support for senders in an at-most-once configuration.
Other Changes
- The connection mux goroutine has been removed, eliminating a potential source of deadlocks.
- Automatic link flow control is built on the manual creditor.
- Clarified docs that messages received from a sender configured in a mode other than
SenderSettleModeSettled
must be acknowledged. - Clarified default value for
Conn.IdleTimeout
and removed unit prefix.
v0.18.0
This is intended to be the last release before GA with breaking changes. At this point the public surface area is frozen and will only break if something is wrong or can't be reasonably fixed in a non-breaking way.
Features Added
- Added
ConnError
type that's returned when a connection is no longer functional. - Added
SessionError
type that's returned when a session has been closed. - Added
SASLType
used when configuring the SASL authentication mechanism. - Added
Ptr()
method toSenderSettleMode
andReceiverSettleMode
types.
Breaking Changes
- The minimum version of Go required to build this module is now 1.18.
- The type
Client
has been renamed toConn
, and its constructorNew()
renamed toNewConn()
. - Removed
ErrConnClosed
,ErrSessionClosed
,ErrLinkClosed
, andErrTimeout
sentinel error types. - The following methods now require a
context.Context
as their first parameter.Conn.NewSession()
,Session.NewReceiver()
,Session.NewSender()
- Removed
context.Context
parameter anderror
return from methodReceiver.Prefetched()
. - The following type names had the prefix
AMQP
removed to prevent stuttering.AMQPAddress
,AMQPMessageID
,AMQPSymbol
,AMQPSequenceNumber
,AMQPBinary
- Various
Default*
constants are no longer exported. - The args to
Receiver.ModifyMessage()
have changed. - The "variadic config" pattern for
Conn
,Session
,Sender
, andReceiver
constructors has been replaced with a struct-based config.- This removes the
ConnOption
,SessionOption
, andLinkOption
types and all of the associated configuration funcs. - The sender and receiver specific link options have been moved into their respective options types.
- The
ConnTLS()
option was removed as part of this change.
- This removes the
- The
Dial()
andNew()
constructors now require an*ConnOptions
parameter. Conn.NewSession()
now requires a*SessionOptions
parameter.Session.NewSender()
now requirestarget
address and*SenderOptions
parameters.Session.NewReceiver()
now requiressource
address and*ReceiverOptions
parameters.- The various SASL configuration funcs have been slightly renamed.
- The following constant types had their values renamed in accordance with the SDK design guidelines.
SenderSettleMode
,ReceiverSettleMode
,ExpiryPolicy
- Constant type
ErrorCondition
has been renamed toErrCond
.- The
ErrCond
values have had their names updated to include theErrCond
prefix.
- The
LinkFilterSource
andLinkFilterSelector
have been renamed toNewLinkFilter
andNewSelectorFilter
respectively.- The
RemoteError
field inDetachError
has been renamed.
Bugs Fixed
- Fixed potential panic in
muxHandleFrame()
when checking for manual creditor. - Fixed potential panic in
attachLink()
when copying source filters. NewConn()
will no longer return a broken*Conn
in some instances.- Incoming transfer frames received during initial link detach are no longer discarded.
- Session will no longer flood peer with flow frames when half its incoming window is consumed.
- Newly created
Session
won't leak if the context passed toConn.NewSession()
expires before exit. - Newly created
link
won't leak if the context passed tolink.attach()
expires before exit. - Fixed an issue causing dispositions to hang indefinitely with batching enabled when the receiver link is detached.
Other Changes
- Errors when reading/writing to the underlying
net.Conn
are now wrapped in aConnError
type. - Disambiguate error message for distinct cases where a session wasn't found for the specified remote channel.
- Removed
link.Paused
as it didn't add much value and was broken in some cases. - Only send one flow frame when a drain has been requested.
- Session window size increased to 5000.
- Creation and deletion of
Session
instances have been made deterministic. - Allocation and deallocation of link handles has been made deterministic.
v0.17.5
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
Fixes
Breaking changes
- Message properties that are optional need to be nil-able #93
- ErrLinkDetached has been removed - all places that were previously returning ErrLinkDetached now properly return an amqp.DetachError