Skip to content

Instantly share code, notes, and snippets.

@jtaubensee
Last active November 3, 2016 20:50
Show Gist options
  • Save jtaubensee/ac9c4f9fca7fb96f765bd23cdbfcbbef to your computer and use it in GitHub Desktop.
Save jtaubensee/ac9c4f9fca7fb96f765bd23cdbfcbbef to your computer and use it in GitHub Desktop.
Change log for WindowsAzure.ServiceBus NuGet package
NuGet Package Location: https://www.nuget.org/packages/WindowsAzure.ServiceBus/
3.4.1
Build: 3.0.50700.14
• Messaging: fix a bug in the netmessaging protocol where an invalid Sas token can sometimes cause a message sender to leak memory from connection handle, even after sender is closed. (This does not affect Amqp protocol)
3.4.0
Build: 3.0.50700.11
• EventHub/Messaging: fixed a bug where some of the Amqp session error are not mapped to MessagingCommunicationException. These are now returned as MessagingCommunicationException.
• EventHub: Add ability to receive from EndOfStream. You can now create receiver using EventHubConsumerGroup.EndOfStream as the offset and the receiver will start receiving from the current last offset (at the time of receiver creation).
• EventHub: Fixed a bug where max link credit may not have been set to the correct upper bound in some cases when user use the PrefetchSizeInBytes feature.
3.3.2
Build: 3.0.50700.7
• EventHub/Messaging: fixed a bug where a race condition in Amqp management code (AmqpServiceClient) can cause thread to spin. This mainly affect EventProcessorHost scenario.
• EventHub: fixed a bug in send code path where if user modified a batch event data list during send operation the send path can throwxception due to collection being modified.
3.3.1
Build: 3.0.50700.4
• Messaging: explicit and implicit batching performance improvements for Send and Complete operations.
• Messaging: fixed explicit and implicit batching logic for send operations with via senders.
• Messaging: added ability to schedule (and cancel scheduled) messages.
• Messaging: added Amqp support for runtime operations in both regular and partitioned entities:
- Messages Batch Send/Receive/ReceiveBySequenceNumber/Peek
- Message Locke Renewal
- Schedule/CancelScheduled Messages
- Add/Remove Rule
- Session operations: RenewSessionLock/MessagePeek/SetState/GetState
- Enumerat Sessions
• EventHub: fixed a bug where 'InvalidOperationException: Collection was modified...' can happen in high throughput send scenario due to serialization race condition.
3.2.4
Build: 3.0.50598.20
• EventHub: Fixed a bug in PrefetchSizeInBytes feature where prefetch can stuck if calculated average event size exceed the prefetch by size cache size. This only can happen in private stamp with custom config.
3.2.3
Build: 3.0.50598.19
• EventHub/Messaging: Added more information to TimeoutException.
• EventHub: Fixed a bug in PrefetchSizeInBytes feature where once the prefetch limit is reached, prefetch can slow down until client is reset if the cache is drained too quickly.
• EventHub: Fixed calculation for 'Entity Queue Depth' counter to reflect actual size rather than free space.
• Relay: Fixed a bug in RelayEnvironment constructor where an exception can be thrown in certain load context.
• Relay: Fixed an issue in relay hybrid connection mode for new SSL security update.
• Relay: General tracing cleanup.
3.2.2
Build: 3.0.50598.13
• EventHub/Messaging: Improve information in exception tracking in NamespaceManager to show namespace information in system tracker.
• EventHub: Refresh Amqp redirection feature to work with new environment.
• EventHub: Improve performance when using PrefetchSizeInBytes by not assuming worst case message size. Note that with this change it is now possible to exceed the cache size specified by the PrefetchSizeInBytes value (even though it is unlikly since we stop the credit at about 90%).
• EventHub/Messaging: Fix a bug where in Amqp transport the client is passing the wrong audience when the token provider's scope is a namespace.
• EventHub/Messaging: Improve information in exception tracking in NamespaceManager to show namespace information in system tracker.
• EventHub: Improve EventData(byte[]) to avoid unnecessary memory allocation, and added new constructor that can take in ArraySegement<byte> which also avoid memory allocation.
• EventHub: Fix a bug where IoT redirection fails when connecting to new namespaces
• Messaging: Fix a bug in all OnMessage pump api where a rare race condition can lead to ObjectDisposedException being thrown from the pump when processing callback takes too long.
• Messaging: Fix a bug in MessageReceiver and BrokeredMessage where user were seeing wrong exception message when performing Abandon() call in a non-PeekLock mode.
• Relay: Migrate relay client side traces to use dynamic EventSource support.
• Relay: Fixed an issue in relay connection which can lead to timeouts or hangs when establishing rendezvous connection.
• Relay: Fixed an issue in relay when using Websockets with NTLM in a proxy scenario, where the security context can have an output buffer that Relay did not forward to the proxy (which we should have forwarded).
• General: Fixed a bug in the WebSocket implementation where the underlying connection is not recreated in some case when keep-alive signal is not sent.
• Messaging: Added DeadLetterSource property on BrokeredMessage to capture dead letter queue if auto-forwarded.
3.1.7
Build: 2.0.50497.1
• EventHub/Messaging: Fix a potential problem in the Amqp IO layer when reading the protocol header frame, which can cause exception to upper layer in some system.
• Relay: Improve token handling to avoid errors from Relay client when the system run into clock skew condition.
3.1.6
Build: 2.0.50496.3
• EventHub: Enable Iot redirection feature to work in more enviornments.
3.1.5
Build: 2.0.50496.2
• General: Remove Microsoft.WindowsAzure.ConfigurationManager nuget dependency as it is not needed anymore.
3.1.4
Build: 2.0.50496.1
• General: Update code signing cert from Cert. 10006 to Cert. 401 Dual Signing
• General: Adding Basic-Auth. support through proxy in WebSocket layer.
3.1.3
Build: 2.0.50495.6
• General: .Net 4.6.1+ compatibility fix. Fixing custom DNS IdentityVerifier so that we honor multiple DNS claims returned by WIF
3.1.2
Build: 2.0.50495.4
• General: fixing Nuget dependency of Microsoft.WindowsAzure.ConfigurationManager to be at least 3.1.0
3.1.1
Build: 2.0.50495.3
• Relay: Add sync version of NamespaceManager API for relay.
• Relay: Fixed an issue that Channel.Open API call isn't honoring the passed timeout.
• EventHub: Fixed an issue where EventHub redirection feature can sometimes lead to a wrong port number being used in the target address.
• EventHub: Fixed an issue where EventData sent with external third party client can sometimes need to NullReferenceException in client receive if EventData contain empty (non-null) Amqp property bag.
3.0.9
Build: 2.0.50400.10
• EventHub: supports EventProcessor faulted handler.
3.0.8
Build: 2.0.50400.9
• EventHub: Fix bug where in IoT scneario GetRuntimeInfo() and GetPartitionRuntimeInfo() can hit internal Amqp link capacity limit, if connection to SB Gateway is lost while connection to IoT Gateway is prolonged.
3.0.7
Build: 2.0.50400.5
• Relay: Make improvement to previous fix on possible idle timeout of relay control channel if address resolve takes time, by using a simpler check.
3.0.6
Build: 2.0.50400.3
• EventHub: Fix entity level pending receive perf counter calculation to show the correct count.
• Relay: Remove possilbe effect of redirecting a relay connection.
• Relay: Fix possible idle timeout of relay control channel if address resolve takes time by adding heartbeat every 105 seconds.
3.0.4
• EventHub: Fix a bug in EventHubClient.GetRuntimeInformation() Api where the call can cause timeout exception if an internal connection is aborted.
3.0.3
Build: 2.0.50399.1
• EventHub: Remove Amqp credential type and scope from ServiceBusConnectionString as the scenario no longer needs it.
• EventHub: Fix a bug in the encoding used in token provider when using IoT connection string where we assumed UTF8 encoding when based 64 encoding should be used in IoT scenario.
• EventHub: Fix null check race in SaslPlain logic during client creation from ServiceBus connection string builder.
• EventHub: Fix token provider logic in IoT scenario because IoT and ServiceBus can use different encoding scheme.
• EventHub: Enable Cbs auth logic between IoT to ServiceBus inter-op scenario.
3.0.2
Build: 2.0.50398.20
• EventHub/Messaging: fix a bug in redirect logic that can incorrectly treat a transient exception as entity not found error
• EventHub/Messaging: fix a bug in amqp receiver creation logic where the creation can stuck in some cases when connection is being redirected.
• EventHub: fix a bug in amqp layer where management links are not being redirected for IoT scenarios.
3.0.1
Build: 2.0.50398.0
• General: Compiled against .Net 4.5
- If you have a .Net 4.0 project you should recompile against .Net 4.5 instead since 4.0 project cannot reference 4.5 dll.
• General: Removal of Asynchronous Programming Model (APM) API for all Messaging and EventHub classes.
- If your application use the old APM API you should switch over to use the Task-based Asynchronous Pattern (TAP) API instead
- e.g. instead of using QueueClient.BeginSend/EndSend, please use QueueClient.SendAsync.
- For more information on interop between APM and TAP, please refer to https://msdn.microsoft.com/en-us/library/hh873178(v=vs.110).aspx
- Note: support for CancellationToken in the TAP model will be implemented in later SDK update.
• General: Removal of Notification Hub API from Microsoft.ServiceBus.dll.
- To get the NotificationHub functionality please use the Microsoft.Azure.NotificationHubs nuget package instead: http://www.nuget.org/packages/Microsoft.Azure.NotificationHubs/
• General: ServiceBusEnvironment.SystemConnectivity.Mode now support explicit Https mode.
• EventHub/Messaging: AutoDetect will now perform detection in both Sbmp and Amqp transport.
- Detection happens at the first operation per AppDomain, and the purpose of the detection is to determine if the low level host and port requirement are functional.
- Once a detection completes the state is not changed unless AppDomain is unloaded or system network state has changed.
- The perference of mode used is tcp -> https (port 443) -> http (port 80).
• EventHub/Messaging: Amqp transport will always use WebSocket implementation when using Https or Http mode.
• EventHub/Messaging: New Api MessagingFactory.ResetConnection() to support manual internal connection reset.
- This gives user a more predictable control on when a transport level connection should be recreated.
- This is only implmented for Amqp transport. Other transports will throw NotSupportedException.
• EventHub: Low level data from the Amqp’s message Annotation section will now show up in EventData.SystemProperty
• EventHub: Remove DataContractSerializer dependency from EventHub by removing EventData.GetBody()
- User should use EventData.GetBodyStream() or EventData.GetBytes() to get the body stream/bytes, and pass it to the serializer if desired.
• EventHub: Client side support for future link level redirection work.
• EventHub: Connection string now support additional connection param for future link level redirection work: HostName, AmqpSecurityScheme, CredentialType
• Messaging: QueueClient and SubscriptionClient now exposes RenewMessageLock(lockToken) Api.
• Messaging: Optimization on connection/factory instances when creating client using XXXClient.CreateFromConnectionString()
- Multiple client creation using the same connection string (within the same AppDomain) will now use the same cached MessagingFactory instance.
- Connection string equality will now be based on key-value pair comparison rather than plain-string comparison. This means the ordering of the key-value pair within the string will not matter anymore.
- Note: MessagingFactory.CreateFromConnectionString will not be affected and will still create new instances everytime the method is called.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment