Releases: Particular/NServiceBus
5.1.2
As part of this release we had 11 commits which resulted in 1 issue being closed.
Bug
- Adding an explicit configuration API for users to set the host identifier #2558
Where to get it
You can download this release from nuget
3.3.13
Bugs
#1243 Messages are being truncated to 8000 bytes when utilizing Second Level Retries and using NHibernate Timeout Persister
When utilizing Second Level Retires and using NHibernate Timeout Persister with a SQL server database, messages are being truncated to 8000 bytes prior to being persisted to the TimeoutEntity table. The following message is logged:
The fix was to explicitly set type of the column to NHibernateUtil.BinaryBlob in the mapping class.
5.1.1
As part of this release we had 3 commits which resulted in 1 issue being closed.
Bugs
#2555 MessageForwardingInCaseOfFaultConfig should not be required for sendonly
Where to get it
You can download this release from nuget
5.1.0
As part of this release we had 159 commits which resulted in 44 issues being closed.
Features
#2473 Adding a new Rx BusNotifications API
Streams added in this release:
MessageHasFailedAFirstLevelRetryAttempt
MessageHasBeenSentToSecondLevelRetries
MessageSentToErrorQueue
#2103 Expose a way to set TTRQ for MSMQ
Msmq in workgroup mode requires TTRQ to be set when sending.
http://serverfault.com/questions/480285/how-to-change-default-msmq-time-to-reach-queue-time
Exposed a key on the connection string ...;TimeToReachQueue=12:00:00;
where the value is a parsable timespan.
#1235 Prevent saga id from being changed
If a modification of the Saga Id then an exception will be thrown
A modification of IContainSagaData.Id has been detected. This property is for infrastructure purposes only and should not be modified. SagaType: TheSagaType
#1228 Make the timeouts for our circuit breakers configurable
Improvements
#2502 Remove redundant new() constraint from Saga.RequestTimeout
Since an instance is being passed in then there is no need for a new()
constraint
RequestTimeout<TTimeoutMessageType>(DateTime at, TTimeoutMessageType timeoutMessage)
RequestTimeout<TTimeoutMessageType>(TimeSpan within, TTimeoutMessageType timeoutMessage)
#2491 Obsolete Saga.RequestTimeout(Action)
Both have new()
constraints and hence cannot be an interface. No need to construct an instance when the consumer can do this themselves.
RequestTimeout<TTimeoutMessageType>(TimeSpan within, Action<TTimeoutMessageType> messageConstructor) where TTimeoutMessageType : new()
RequestTimeout<TTimeoutMessageType>(DateTime at, Action<TTimeoutMessageType> action) where TTimeoutMessageType : new()
#2487 improve performance of InMemoryTimeoutPersister
An ~4x improvement in the performance of InMemoryTimeoutPersister
#2480 Change callback so they fire on replies only
#2474 Performance counter can hang
Now doing the performance counter check (counter.CounterType
) in a time-bombed thread that if it doesn't return within 2 seconds we mark the counter as not "healthy".
#2457 Removed all the host related projects
As of 5.1 the Host will be on a seprarate repo/release cycle
#2447 Use Exception.ToString in headers
Store Exception.ToString()
instead of Exception.StackTrace
inside the NServiceBus.ExceptionInfo.StackTrace
header
#2439 Remove Add-BindingRedirect from nuget install
Not needed since we are locking assembly version number to major
#2431 Remove the logging from init.ps1
It creates noise in the package manager console
#2413 Should throw an error Definition does not have a public empty constructor
For Transport, Logging and Persistence definitions.
#2367 Persistence no longer required for SendOnly endpoints
#2286 InMemorySagaPersister should use a concurrent dictionary
#2056 Handle ReflectionTypeLoadException better (included successfully loaded types)
Bugs
#2507 DataBus is looking for FileShareDatabusPath when it should not
#2501 passing null messageConstructor parameter to ReplyToOriginator will result in a null message being sent
ReplyToOriginator<TMessage>(Action<TMessage> messageConstructor)
incorrectly did a null parameter check whichc resulted in a null being passed ass a message.
#2464 Impossible to register a custom IMessageSerializer
Now support two possible was to register a custom serializer.
A user can either config.UseSerialization(type of definition)
or config.UseSerialization(type of serializerImplementation)
#2463 Throw from NServiceBus.MsmqUtilities.Convert will result in message loss
Fixed so when NServiceBus.MsmqUtilities.Convert
throws the message will be sent to the error queue
#2407 FeatureStartupTasks are stopped too late
#2384 If handler throws a SerializationException then retries are ignored
#2352 Throw better exception when endpoint name maxes out endpoint name can max out PerformanceCounters
#2094 Incorrect logging when Retries are disabled
#2047 PerformanceCounters causes indefinite hang on bus start
#2031 Fall back to using WindowsIdentity.GetCurrent when IIS is impersonating
if Thread.CurrentPrincipal.Identity
is null (which can happen in IIS impersonation) fall back to using WindowsIdentity.GetCurrent()
instead of Thread.CurrentPrincipal.Identity
#2030 Add null Principal checks to WindowsIdentityEnricher
Thread.CurrentPrincipal
is now checked for null
#1976 IBus.OutgoingHeaders updates can cause InvalidOperationException
Change IBus.OutgoingHeaders
to a ConcurrentDictionary
#529 Headers set in handler should be visible to downstream handlers
Where to get it
You can download this release from nuget
4.7.4
As part of this release we had 1 commit which resulted in 1 issue being closed.
Bugs
#2553 4.7.x NServiceBus NuGet package does not contain Init.ps1 script
The missing file caused errors when installing NServiceBus.Host since the host Install.ps1 script tries to add config sections to the app.config file.
4.7.3
As part of this release we had 2 issues closed.
Improvements
#2515 Timeout messages should not invoke SagaNotFound handler
In the following scenarios timeouts for completed sagas can still be fired:
- When a timeout is already retrieved from storage and queued up to be executed;
- When the deletion of all timeouts misses to delete all of them due to stale indexes in Raven;
In the above circumstances, ISagaNotFound
handlers should not be invoked.
Bugs
#2544 When sending a message from a IFindSagas.FindBy should not attempt to set saga headers
Since the saga instance does not exist at that point there is no point attempting to set the OriginatingSagaId and OriginatingSagaType headers. Such attempt would result in exception being thrown instead of sending the message as user intended.
5.0.3
As part of this release we had 4 commits which resulted in 2 issues being closed.
Bugs
#2530 When transport is configured via INeedInitialization, it does not work, defaults to MSMQ.
This is an endpoint generated by ServiceMatrix.
It configures the transport in a class that implements INeedInitialization
.
public class TransportConfig : INeedInitialization
{
public void Customize(BusConfiguration config)
{
config.UseTransport<NServiceBus.RabbitMQTransport>();
}
}
Content trimmed. See full issue
#2481 DisableDistributedTransactions should default the ambient transaction to off
Double negative in distributed transaction configuration logic was causing distributed transactions to always be on even when disabled by consumer
Where to get it
You can download this release from nuget
5.0.2
As part of this release we had 1 issue closed.
Bugs
#2520 Fixing bug in distributor not notified about worker ready when handling message of to SLR
Related to this change in distributor
- Added raising FinishedMessageProcessing when handing msg off to SLR
- Moved raising StartedMessageProcessing so that it is invoked even for messages without ID
Where to get it
You can download this release from nuget
4.7.2
As part of this release we had 1 issue closed.
Bugs
#2520 Fixing bug in distributor not notified about worker ready when handling message of to SLR
Related to this change in distributor
- Added raising FinishedMessageProcessing when handing msg off to SLR
- Moved raising StartedMessageProcessing so that it is invoked even for messages without ID
Where to get it
You can download this release from nuget
4.0.9
As part of this release we had 1 issue closed.
Bugs
#2446 Saga with both IAmStartedByMessages and IHandleTimeouts for same message causes timeout to fire for empty saga
Messages handled by a saga that contains a explicit saga id should not be allowed to create a new saga if the given saga can't be found in storage. The saga loader has now been modified to check for the existence of the saga id header and also check that the message is directed to the specific saga by comparing the saga type with the saga type header.
Where to get it
You can download this release from nuget