Skip to content

Releases: Particular/NServiceBus.NHibernate

4.5.3

26 Nov 23:29
Compare
Choose a tag to compare

As part of this release we had 1 issue closed.

Bugs

#67 Cannot insert duplicate key in object 'dbo.TimeoutEntity'

Using existing message ID for timeout ID doesn't work when:

  • Timeout storage is shared between endpoints
  • and the same message goes through SLR subsequent times;

Fixed by always generating a new sequential GUID for timeout ID.

4.5.2

26 Sep 11:25
Compare
Choose a tag to compare

As part of this release we had 171 commits which resulted in 1 issue being closed.

Bugs

#60 4.5.1 has the wrong assembly version

Is 4.5.1 , should be 4.5.0. Fix is to update to GitVersion 1.3 and and a settings file

Where to get it

You can download this release from:

6.0.0

03 Oct 13:22
Compare
Choose a tag to compare

As part of this release we had 164 commits which resulted in 9 issues being closed.

Features

#39 Outbox implementation

NHibernate can now be used to store outbox related data

Improvements

#44 Move to .net 4.5

related to Particular/NServiceBus#2078

#13 Migrate TableNameAttribute and RowVersionAttribute to NServiceBus.SagaPersisters.NHibernate namespace

Both TableNameAttribute and RowVersionAttribute are in a very deep and hard to find namespace NServiceBus.SagaPersisters.NHibernate.AutoPersistence.Attributes

They are now migrated to NServiceBus.SagaPersisters.NHibernate ?

Bugs

#35 Provide a way for users to access the NHibernate session

Users implementing their own saga finder needs to get access to the current session. This can now be accomplished by taking a dependency on NHibernateStorageContext. The context provides access to both the NHibernate session and the underlying raw Ado.Net IConnection

Where to get it

You can download this release from nuget

5.0.0

23 Sep 09:47
Compare
Choose a tag to compare

As part of this release we had 7 commits which resulted in 1 issue being closed.

Features

#58 Upgraded to NHibernate v4

We now support NHibernate v4

Where to get it

You can download this release from:

4.5.1

18 Sep 04:59
Compare
Choose a tag to compare

As part of this release we had 7 commits which resulted in 2 issues being closed.

Features

#33 Cache subscriptions for a short amount of time

Every time you publish a message, it will query the subscription storage for endpoints to send to. This will generate a lot of sql queries in a high throughput scenario. Considering that subscriptions rarely change (only when you install/uninstall endpoints), quering the subscription storage for every message does not make much sense, IMHO.

I've implemented a very simple cache mechanism that optionally will cache these subscriptions for a configured amount of time. Setting expiration time to just 1 second can make quite a big performance boost if you have a lot of messages.

I made some very basic performance test:

No cache:
NumberOfMessages: 5000,0 (#)
PublishTimeNoTx: 2933,5 (msg/s)
PublishTimeWithTx: 4427,8 (msg/s)

Cache set to 1 second:
NumberOfMessages: 5000,0 (#)
PublishTimeNoTx: 6083,3 (msg/s)
PublishTimeWithTx: 22741,5 (msg/s)

To enable caching:

Configure.UseNHibernateSubscriptionPersister(TimeSpan.FromSeconds(10));

Bugs

#57 TimeoutEntity.State column size in Oracle is only 2000

When NServiceBus.NHibernate create table for TimeoutEntity, State column type is set to RAW(2000) on Oracle which is of course incorrect. I think that setting column size to int.MaxValue should resolve problem.

Where to get it

You can download this release from nuget

5.0.0 beta1

16 Jul 05:56
Compare
Choose a tag to compare
5.0.0 beta1 Pre-release
Pre-release

As part of this release we had 8 issues closed.

Improvements

#44 Move to .net 4.5

related to Particular/NServiceBus#2078

#36 NHibernate role

Introduce a UsePersistence<T> (very similar to UseTransport<T>), eg:

    Configure.With()
                     .DefaultBuilder()
                     .UseTransport<Msmq>()
                     .UsePersitence<NHibernate>();

See full issue*

#13 Migrate TableNameAttribute and RowVersionAttribute to NServiceBus.SagaPersisters.NHibernate namespace

Both TableNameAttribute and RowVersionAttribute are in a very deep and hard to find namespace NServiceBus.SagaPersisters.NHibernate.AutoPersistence.Attributes

These have been moved to NServiceBus.SagaPersisters.NHibernate

Bugs

#35 Provide a way for users to access the NHibernate session

Users implementing their own saga finder needs to get access to the current session:

https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/particularsoftware/43nBg0rSB-U/3FP-H-2wiXoJ

Where to get it

You can download this release from nuget

4.5.0

01 Apr 06:29
Compare
Choose a tag to compare

As part of this release we had 21 commits which resulted in 4 issues being closed.

Bugs

#31 Only apply Inverse=true if child has a reference to parent

The bag convention can only apply inverse=true when the child element has a reference back to the parent

#30 When updating/creating the schema we need to use the NHibernate Configuration instance from the fluent API

The installers code for NHibernate are newing up a new NHibernate.Cfg.Configuration instead of using the one that the user could have passed us in via the fluent API.

This causes issues like:

#26 When creating the indexes for the timeout table, they need to handle load by default

This relates to
Particular/NServiceBus#1512

The fix that was created to solve the deadlock issue, however, still did not create the default indexes the optimized way and deadlocks continue to happen under load with the current fix.

The proper fix would have been to create the indexes in the following manner:

  • A non-clustered index for the Id
  • A clustered index for Endpoint + Time
  • A non-clustered index for SagaId

This also relates to: https://nservicebus.desk.com/agent/case/4237
Content trimmed. See full issue

#5 NHibernate persister doesn't work with Oracle 11g database

It just created simply sample application that use saga and use Oracle 11g XE as saga and timeout persistence storage. I received the following exception:

2013-08-27 12:02:55,938 [45] INFO  NServiceBus.Unicast.Transport.TransportReceiver [(null)] <(null)> - Failed to process message
NServiceBus.Unicast.Transport.TransportMessageHandlingFailedException: An exception was thrown by the message handler. ---> NHibernate.TransactionException: Begin failed with SQL exception ---> System.InvalidOperationException: Connection is already part of a local or a distributed transaction
   at Oracle.DataAccess.Client.OracleConnection.BeginTransaction(IsolationLevel isolationLevel)
   at Oracle.DataAccess.Client.OracleConnection.BeginDbTransaction(IsolationLevel isolationLevel)
   at System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction(IsolationLevel isolationLevel)
   at NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel isolationLevel)
   --- End of inner exception stack trace ---
   at NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel isolationLevel)
   at NHibernate.AdoNet.ConnectionManager.BeginTransaction(IsolationLevel isolationLevel)

Content trimmed. See full issue

Where to get it

You can download this release from nuget

4.4.0

07 Mar 05:55
Compare
Choose a tag to compare

As part of this release we had 21 commits which resulted in 4 issues being closed.

Improvements

#25 RowVersion attribute not supported by subclasses.

Since RowVersion attribute is not supported in subclasses, we are now throwing a MappingException to alert the user.

#19 Implemented timestamp + dbtimestamp row version

Have added support for the last 2 scenarios mentioned in http://ayende.com/blog/3946/nhibernate-mapping-concurrency

So now, if the row version property return type is DateTime we get a timestamp column and if a it is byte[] we get dbtimestamp.

I also fixes a bug where the generated was set to "always" and for property return type of int and datetime it should be "never".

Bugs

#23 The bag should be marked as "inverse"

Since the child references back to its parent, the bag should be marked as "inverse".

This patch fixes #20

#20 NHibernate RowVersion saga concurrency throws errors

I get a SqlException: Cannot insert the value NULL into column 'Version'

Where to get it

You can download this release from:

4.3.0

05 Dec 12:12
Compare
Choose a tag to compare

Fixes issue #1