Particular / NServiceBus.Azure

Transports and storage for Windows Azure
https://docs.particular.net/nservicebus/azure/
Other
10 stars 15 forks source link

Azure persistence for NServiceBus 5 incompatible with Newtonsoft.Json (10.0.3) #320

Closed ramonsmits closed 6 years ago

ramonsmits commented 6 years ago

Azure persistence for NServiceBus 5 incompatible with Newtonsoft.Json (10.0.3). Due to this it is very difficult to unify all dependencies.

Either persistence should be upgraded, or the compatibility with Newtonsoft.Json should be restricted.

Fails on the following line:

Strange thing is that is only present on the support-1.2 branch but not on support-1.3.

With exception:

System.MissingMethodException: Method not found: 'Void Newtonsoft.Json.Serialization.DefaultContractResolver..ctor(Boolean)'.

Assemblies loaded

2017-11-14 22:00:09,266|INFO|1|AssemblyScanner|Loaded: log4net (2.0.8.0-.NET 4.5)
2017-11-14 22:00:09,268|INFO|1|AssemblyScanner|Loaded: Microsoft.Data.Edm (5.7.0.62414)
2017-11-14 22:00:09,269|INFO|1|AssemblyScanner|Loaded: Microsoft.Data.OData (5.7.0.62414)
2017-11-14 22:00:09,269|INFO|1|AssemblyScanner|Loaded: Microsoft.Data.Services.Client (5.7.0.62414)
2017-11-14 22:00:09,270|INFO|1|AssemblyScanner|Loaded: Microsoft.WindowsAzure.Configuration (2.0.2.11210)
2017-11-14 22:00:09,271|INFO|1|AssemblyScanner|Loaded: Microsoft.WindowsAzure.Storage (4.3.0.0)
2017-11-14 22:00:09,271|INFO|1|AssemblyScanner|Loaded: mscorlib (4.7.2556.0)
2017-11-14 22:00:09,272|INFO|1|AssemblyScanner|Loaded: Newtonsoft.Json (10.0.3)
2017-11-14 22:00:09,273|INFO|1|AssemblyScanner|Loaded: NServiceBus.Azure (6.2.7+Branch.support-6.2.Sha.f8becd6144638f210c2809281c40697e5cbd9593)
2017-11-14 22:00:09,273|INFO|1|AssemblyScanner|Loaded: NServiceBus.Core (5.2.24+2.Branch.support-5.2.Sha.36f8af8cf8452a71f11f754c91c4aafd4cfd1c0c)
2017-11-14 22:00:09,274|INFO|1|AssemblyScanner|Loaded: NServiceBus.Log4Net (1.0.0+Branch.master.Sha.d79bb596f43a9ec24d2c790cdf17369acb05c707)
2017-11-14 22:00:09,275|INFO|1|AssemblyScanner|Loaded: NServiceBus5 (0.0.0.0)
2017-11-14 22:00:09,275|INFO|1|AssemblyScanner|Loaded: Persistence.V5.Azure_v6 (0.0.0.0)
2017-11-14 22:00:09,277|INFO|1|AssemblyScanner|Loaded: System (4.7.2556.0)
2017-11-14 22:00:09,277|INFO|1|AssemblyScanner|Loaded: System.Configuration (4.7.2556.0)
2017-11-14 22:00:09,278|INFO|1|AssemblyScanner|Loaded: System.Core (4.7.2556.0)
2017-11-14 22:00:09,279|INFO|1|AssemblyScanner|Loaded: System.Spatial (5.7.0.62414)
2017-11-14 22:00:09,279|INFO|1|AssemblyScanner|Loaded: System.Xml (4.7.2556.0)
2017-11-14 22:00:09,280|INFO|1|AssemblyScanner|Loaded: Transport.V5.MSMQ (0.0.0.0)
2017-11-14 22:00:09,281|INFO|1|AssemblyScanner|Loaded: Utils (1.0.0)
2017-11-14 22:00:09,282|INFO|1|AssemblyScanner|Loaded: VisualStudioDebugHelper (0.0.0.0)

Exception

2017-11-14 22:00:44,790|INFO|7|NServiceBus.Unicast.Transport.TransportReceiver|Failed to process message
System.MissingMethodException: Method not found: 'Void Newtonsoft.Json.Serialization.DefaultContractResolver..ctor(Boolean)'.
   at NServiceBus.SagaPersisters.Azure.SecondaryIndeces.SagaDataSerializer.SagaOnlyPropertiesDataContractResolver..ctor()
   at NServiceBus.SagaPersisters.Azure.SecondaryIndeces.SagaDataSerializer.SerializeSagaData[TSagaData](TSagaData sagaData) in C:\BuildAgent\work\32a824616368e685\src\NServiceBus.Azure\SagaPersisters\Azure\SecondaryIndeces\SagaDataSerializer.cs:line 19
   at NServiceBus.SagaPersisters.Azure.SecondaryIndeces.SecondaryIndexPersister.Insert(IContainSagaData sagaData) in C:\BuildAgent\work\32a824616368e685\src\NServiceBus.Azure\SagaPersisters\Azure\SecondaryIndeces\SecondaryIndexPersister.cs:line 44
   at NServiceBus.SagaPersisters.Azure.AzureSagaPersister.Save(IContainSagaData saga) in C:\BuildAgent\work\32a824616368e685\src\NServiceBus.Azure\SagaPersisters\Azure\AzureSagaPersister.cs:line 53
   at NServiceBus.SagaPersistenceBehavior.Invoke(IncomingContext context, Action next) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Sagas\SagaPersistenceBehavior.cs:line 111
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.SetCurrentMessageBeingHandledBehavior.Invoke(IncomingContext context, Action next) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Unicast\Behaviors\SetCurrentMessageBeingHandledBehavior.cs:line 17
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.LoadHandlersBehavior.Invoke(IncomingContext context, Action next) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Unicast\Behaviors\LoadHandlersBehavior.cs:line 45
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.InvokeSagaNotFoundBehavior.Invoke(IncomingContext context, Action next) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Unicast\Behaviors\InvokeSagaNotFoundBehavior.cs:line 17
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.ExecuteLogicalMessagesBehavior.Invoke(IncomingContext context, Action next) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Unicast\Messages\ExecuteLogicalMessagesBehavior.cs:line 24
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.UnitOfWorkBehavior.Invoke(IncomingContext context, Action next) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\UnitOfWork\UnitOfWorkBehavior.cs:line 42
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.ChildContainerBehavior.Invoke(IncomingContext context, Action next) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Unicast\Behaviors\ChildContainerBehavior.cs:line 17
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.Performance.StatisticsBehavior.Invoke(IncomingContext context, Action next) in S:\particular\EndToEnd\src\PerformanceTests\Common\Statistics\StatisticsBehavior.V5.cs:line 28
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 95
   at NServiceBus.ProcessingStatisticsBehavior.Invoke(IncomingContext context, Action next) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Monitoring\ProcessingStatisticsBehavior.cs:line 23
   at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
   at NServiceBus.BehaviorChain`1.Invoke() in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 52
   at NServiceBus.Pipeline.PipelineExecutor.Execute[T](BehaviorChain`1 pipelineAction, T context) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Pipeline\PipelineExecutor.cs:line 129
   at NServiceBus.Unicast.Transport.TransportReceiver.OnTransportMessageReceived(TransportMessage msg) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.cs:line 413
   at NServiceBus.Unicast.Transport.TransportReceiver.ProcessMessage(TransportMessage message) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.cs:line 344
   at NServiceBus.Unicast.Transport.TransportReceiver.TryProcess(TransportMessage message) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.cs:line 230
   at NServiceBus.Transports.Msmq.MsmqDequeueStrategy.Action(TransactionSettings transactionSettings, TransactionOptions transactionOptions, MsmqUnitOfWork unitOfWork, MessageQueue receiveQueue, MessageQueue errorQueue, CircuitBreaker circuitBreaker, CriticalError criticalError, AutoResetEvent peekResetEvent, TimeSpan receiveTimeout, SemaphoreSlim throttlingSemaphore, Func`2 tryProcessMessage, Action`2 endProcessMessage) in C:\BuildAgent\work\a93f853f0c1b9532\src\NServiceBus.Core\Transports\Msmq\MsmqDequeueStrategy.cs:line 229
SeanFeldman commented 6 years ago

@ramonsmits something is off. NServiceBus v5 would be using NServiceBus.Azure package for persistence, with supported version 6.2.x. That version is on Newtonsoft.JSON 5.x.

NServiceBus.Persistence.AzureStorage is targetting NServiceBus version 6 and higher. Supported versions are 1.4.x and up. You should not look at 1.2 or 1.3

SeanFeldman commented 6 years ago

@ramonsmits NServiceBus.Azure persistence should work with Newtonsoft.Json v5, not 10. It looks like the test is mixing dependencies between tests and applies Newtonsoft.Json v10 with NServiceBus v5 when it shouldn't.

NServiceBus.Azure persistence (6.2.x) should not be modified to change the dependencies. Therefore, going to close this issue as withdrawn. Please feel free to re-open if this is not accurate.