Skip to content

Releases: Azure/go-amqp

v0.19.1

31 Mar 14:03
968a444
Compare
Choose a tag to compare

Bugs Fixed

  • Fixed a race closing a Session, Receiver, or Sender in succession when the first attempt times out.
  • Check the LinkError.RemoteErr field when determining if a link was cleanly closed.

v0.19.0

30 Mar 19:51
48a018f
Compare
Choose a tag to compare

Final beta before v1.0.0

Breaking Changes

  • Dial() and NewConn() now require a context.Context as their first parameter.
    • As a result, the ConnOptions.Timeout field has been removed.
  • Methods Sender.Send() and Receiver.Receive() now take their respective options-type as the final argument.
  • The ManualCredits field in ReceiverOptions has been consolidated into field Credit.
  • Renamed fields in the ReceiverOptions for configuring options on the source.
  • Renamed DetachError to LinkError 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 and BatchMaxAge in ReceiverOptions.
  • The IncomingWindow and OutgoingWindow fields in SessionOptions have been removed.
  • The field SenderOptions.IgnoreDispositionErrors has been removed.
    • By default, messages that are rejected by the peer no longer close the Sender.
  • The field SendSettled in type Message has been moved to type SendOptions and renamed as Settled.
  • 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, or Sender as required.
  • Cleaned up tests that triggered the race detector.

v0.18.1

17 Jan 18:31
368f546
Compare
Choose a tag to compare

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

06 Dec 18:35
cb02e53
Compare
Choose a tag to compare

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 to SenderSettleMode and ReceiverSettleMode types.

Breaking Changes

  • The minimum version of Go required to build this module is now 1.18.
  • The type Client has been renamed to Conn, and its constructor New() renamed to NewConn().
  • Removed ErrConnClosed, ErrSessionClosed, ErrLinkClosed, and ErrTimeout 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 and error return from method Receiver.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, and Receiver constructors has been replaced with a struct-based config.
    • This removes the ConnOption, SessionOption, and LinkOption 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.
  • The Dial() and New() constructors now require an *ConnOptions parameter.
  • Conn.NewSession() now requires a *SessionOptions parameter.
  • Session.NewSender() now requires target address and *SenderOptions parameters.
  • Session.NewReceiver() now requires source 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 to ErrCond.
    • The ErrCond values have had their names updated to include the ErrCond prefix.
  • LinkFilterSource and LinkFilterSelector have been renamed to NewLinkFilter and NewSelectorFilter respectively.
  • The RemoteError field in DetachError 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 to Conn.NewSession() expires before exit.
  • Newly created link won't leak if the context passed to link.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 a ConnError 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

19 May 15:09
9467a94
Compare
Choose a tag to compare
  • SASL External Fix #129
  • Remove unneeded disposition in modeFirst #130

v0.17.4

10 Feb 21:44
4192b7c
Compare
Choose a tag to compare
  • Fixing bug where DrainCredit() would return invalid errors when detached. #123

v0.17.3

08 Feb 22:50
68d964a
Compare
Choose a tag to compare

Add amqp+ssl scheme #122

v0.17.2

07 Feb 19:58
9181141
Compare
Choose a tag to compare
  • Adding in AMQP sequence support. #121

v0.17.1

01 Feb 21:10
df6b6c4
Compare
Choose a tag to compare

Bug Fixes

  • Fix hang closing receiver when there are pending messages #115
  • fix reading application properties with ULong type #120

v0.17.0

07 Dec 23:16
01b4c64
Compare
Choose a tag to compare

Fixes

  • Fix deadlock between conn and session #100
  • Fix hangs in manual credit management by #110

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