You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pt...@apache.org on 2017/08/31 08:38:48 UTC

ignite git commit: IGNITE-6081 .NET: Fix PutAll for dependent objects

Repository: ignite
Updated Branches:
  refs/heads/master bc8e64567 -> f104976fe


IGNITE-6081 .NET: Fix PutAll for dependent objects

This closes #2555


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f104976f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f104976f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f104976f

Branch: refs/heads/master
Commit: f104976fe197d592c8265b3fd30bb0324f624e38
Parents: bc8e645
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Thu Aug 31 11:38:37 2017 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Thu Aug 31 11:38:37 2017 +0300

----------------------------------------------------------------------
 .../Binary/BinarySelfTest.cs                    |  7 +--
 .../Cache/CacheAbstractTest.cs                  | 50 ++++++++++++++++----
 .../Impl/Binary/BinaryWriter.cs                 |  9 ++--
 .../Impl/Binary/BinaryWriterExtensions.cs       |  4 +-
 .../Impl/Cache/CacheEntryFilterHolder.cs        |  2 +-
 .../Impl/Cache/CacheEntryProcessorHolder.cs     |  4 +-
 .../Impl/Cache/Store/CacheStoreInternal.cs      | 14 ++----
 .../Impl/Compute/Closure/ComputeActionJob.cs    |  2 +-
 .../Impl/Compute/Closure/ComputeFuncJob.cs      |  4 +-
 .../Impl/Compute/Closure/ComputeOutFuncJob.cs   |  2 +-
 .../Impl/Compute/ComputeFunc.cs                 |  2 +-
 .../Impl/Compute/ComputeJob.cs                  |  2 +-
 .../Impl/Compute/ComputeJobHolder.cs            |  2 +-
 .../Impl/Compute/ComputeOutFunc.cs              |  2 +-
 .../Impl/Deployment/PeerLoadingExtensions.cs    |  4 +-
 .../Impl/Deployment/PeerLoadingObjectHolder.cs  |  2 +-
 .../Impl/Messaging/MessageListenerHolder.cs     |  2 +-
 17 files changed, 68 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
index 4237eda..3ec1e8c 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
@@ -1302,8 +1302,6 @@ namespace Apache.Ignite.Core.Tests.Binary
 
             HandleOuter newOuter = outerObj.Deserialize<HandleOuter>();
 
-            Assert.IsFalse(newOuter == newOuter.Inner.Outer);
-            Assert.IsFalse(newOuter == newOuter.Inner.RawOuter);
             Assert.IsFalse(newOuter == newOuter.RawInner.RawOuter);
             Assert.IsFalse(newOuter == newOuter.RawInner.RawOuter);
 
@@ -1313,7 +1311,6 @@ namespace Apache.Ignite.Core.Tests.Binary
             Assert.IsTrue(newOuter.RawInner.Outer == newOuter.RawInner.RawOuter);
 
             Assert.IsTrue(newOuter.Inner == newOuter.Inner.Outer.Inner);
-            Assert.IsTrue(newOuter.Inner == newOuter.Inner.Outer.RawInner);
             Assert.IsTrue(newOuter.RawInner == newOuter.RawInner.Outer.Inner);
             Assert.IsTrue(newOuter.RawInner == newOuter.RawInner.Outer.RawInner);
         }
@@ -2341,7 +2338,7 @@ namespace Apache.Ignite.Core.Tests.Binary
 
                 writer.WriteString("before", Before);
 
-                writer0.WithDetach(w => w.WriteObject("inner", Inner));
+                writer0.WriteObject("inner", Inner);
                 
                 writer.WriteString("after", After);
 
@@ -2349,7 +2346,7 @@ namespace Apache.Ignite.Core.Tests.Binary
 
                 rawWriter.WriteString(RawBefore);
 
-                writer0.WithDetach(w => w.WriteObject(RawInner));
+                writer0.WriteObjectDetached(RawInner);
 
                 rawWriter.WriteString(RawAfter);
             }

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheAbstractTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheAbstractTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheAbstractTest.cs
index 9e44720..27ac3f4 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheAbstractTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheAbstractTest.cs
@@ -597,27 +597,52 @@ namespace Apache.Ignite.Core.Tests.Cache
         }
 
         [Test]
-        public void TestPutAll()
+        public void TestPutAll([Values(true, false)] bool async)
         {
             var cache = Cache();
 
+            if (async)
+            {
+                cache = cache.WrapAsync();
+            }
+
+            // Primitives.
             cache.PutAll(new Dictionary<int, int> { { 1, 1 }, { 2, 2 }, { 3, 3 } });
 
             Assert.AreEqual(1, cache.Get(1));
             Assert.AreEqual(2, cache.Get(2));
             Assert.AreEqual(3, cache.Get(3));
-        }
 
-        [Test]
-        public void TestPutAllAsync()
-        {
-            var cache = Cache().WrapAsync();
+            // Objects.
+            var cache2 = Cache<int, Container>();
 
-            cache.PutAll(new Dictionary<int, int> { { 1, 1 }, { 2, 2 }, { 3, 3 } });
+            if (async)
+            {
+                cache2 = cache2.WrapAsync();
+            }
 
-            Assert.AreEqual(1, cache.Get(1));
-            Assert.AreEqual(2, cache.Get(2));
-            Assert.AreEqual(3, cache.Get(3));
+            var obj1 = new Container();
+            var obj2 = new Container();
+            var obj3 = new Container();
+
+            obj1.Inner = obj2;
+            obj2.Inner = obj1;
+            obj3.Inner = obj2;
+
+            cache2.PutAll(new Dictionary<int, Container>
+            {
+                {1, obj1},
+                {2, obj2},
+                {3, obj3}
+            });
+
+            var res1 = cache2[1];
+            var res2 = cache2[2];
+            var res3 = cache2[3];
+
+            Assert.AreEqual(res1, res1.Inner.Inner);
+            Assert.AreEqual(res2, res2.Inner.Inner);
+            Assert.IsNotNull(res3.Inner.Inner.Inner);
         }
 
         /// <summary>
@@ -2537,5 +2562,10 @@ namespace Apache.Ignite.Core.Tests.Cache
                 }
             }
         }
+
+        private class Container
+        {
+            public Container Inner;
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriter.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriter.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriter.cs
index 3f35b7b..73b4136 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriter.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriter.cs
@@ -1413,11 +1413,12 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// <summary>
         /// Perform action with detached semantics.
         /// </summary>
-        /// <param name="a"></param>
-        internal void WithDetach(Action<BinaryWriter> a)
+        internal void WriteObjectDetached<T>(T o)
         {
             if (_detaching)
-                a(this);
+            {
+                Write(o);
+            }
             else
             {
                 _detaching = true;
@@ -1427,7 +1428,7 @@ namespace Apache.Ignite.Core.Impl.Binary
 
                 try
                 {
-                    a(this);
+                    Write(o);
                 }
                 finally
                 {

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriterExtensions.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriterExtensions.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriterExtensions.cs
index 3dc8a96..02b5dec 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriterExtensions.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryWriterExtensions.cs
@@ -174,8 +174,8 @@ namespace Apache.Ignite.Core.Impl.Binary
 
             foreach (var pair in vals)
             {
-                writer.Write(pair.Key);
-                writer.Write(pair.Value);
+                writer.WriteObjectDetached(pair.Key);
+                writer.WriteObjectDetached(pair.Value);
 
                 cnt++;
             }

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryFilterHolder.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryFilterHolder.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryFilterHolder.cs
index 779e350..3377f11 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryFilterHolder.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryFilterHolder.cs
@@ -82,7 +82,7 @@ namespace Apache.Ignite.Core.Impl.Cache
         {
             var writer0 = (BinaryWriter)writer.GetRawWriter();
 
-            writer0.WithDetach(w => w.WriteObject(_pred));
+            writer0.WriteObjectDetached(_pred);
             
             writer0.WriteBoolean(_keepBinary);
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryProcessorHolder.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryProcessorHolder.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryProcessorHolder.cs
index 9fc7c7d..24a142a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryProcessorHolder.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryProcessorHolder.cs
@@ -105,8 +105,8 @@ namespace Apache.Ignite.Core.Impl.Cache
         {
             var writer0 = (BinaryWriter) writer.GetRawWriter();
 
-            writer0.WithDetach(w => w.WriteObject(_proc));
-            writer0.WithDetach(w => w.WriteObject(_arg));
+            writer0.WriteObjectDetached(_proc);
+            writer0.WriteObjectDetached(_arg);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Store/CacheStoreInternal.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Store/CacheStoreInternal.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Store/CacheStoreInternal.cs
index df4c1ae..12183f8 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Store/CacheStoreInternal.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Store/CacheStoreInternal.cs
@@ -137,11 +137,8 @@ namespace Apache.Ignite.Core.Impl.Cache.Store
                         {
                             lock (writer) // User-defined store can be multithreaded.
                             {
-                                writer.WithDetach(w =>
-                                {
-                                    w.WriteObject(k);
-                                    w.WriteObject(v);
-                                });
+                                writer.WriteObjectDetached(k);
+                                writer.WriteObjectDetached(v);
 
                                 cnt++;
                             }
@@ -188,11 +185,8 @@ namespace Apache.Ignite.Core.Impl.Cache.Store
                         {
                             var entry0 = entry; // Copy modified closure.
 
-                            writer.WithDetach(w =>
-                            {
-                                w.WriteObject(entry0.Key);
-                                w.WriteObject(entry0.Value);
-                            });
+                            writer.WriteObjectDetached(entry0.Key);
+                            writer.WriteObjectDetached(entry0.Value);
 
                             cnt++;
                         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeActionJob.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeActionJob.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeActionJob.cs
index a1f84da..6db1055 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeActionJob.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeActionJob.cs
@@ -66,7 +66,7 @@ namespace Apache.Ignite.Core.Impl.Compute.Closure
         {
             var writer0 = (BinaryWriter) writer.GetRawWriter();
 
-            writer0.WithDetach(w => w.WriteWithPeerDeployment(_action));
+            writer0.WriteWithPeerDeployment(_action);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeFuncJob.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeFuncJob.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeFuncJob.cs
index 8350818..ecb4b98 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeFuncJob.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeFuncJob.cs
@@ -68,8 +68,8 @@ namespace Apache.Ignite.Core.Impl.Compute.Closure
         {
             BinaryWriter writer0 = (BinaryWriter) writer.GetRawWriter();
 
-            writer0.WithDetach(w => w.WriteWithPeerDeployment(_clo));
-            writer0.WithDetach(w => w.WriteWithPeerDeployment(_arg));
+            writer0.WriteWithPeerDeployment(_clo);
+            writer0.WriteWithPeerDeployment(_arg);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeOutFuncJob.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeOutFuncJob.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeOutFuncJob.cs
index abdf448..9652794 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeOutFuncJob.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/Closure/ComputeOutFuncJob.cs
@@ -62,7 +62,7 @@ namespace Apache.Ignite.Core.Impl.Compute.Closure
         {
             var writer0 = (BinaryWriter) writer.GetRawWriter();
 
-            writer0.WithDetach(w => w.WriteObject(_clo));
+            writer0.WriteObjectDetached(_clo);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeFunc.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeFunc.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeFunc.cs
index 4132347..44f2880 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeFunc.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeFunc.cs
@@ -79,7 +79,7 @@ namespace Apache.Ignite.Core.Impl.Compute
         {
             var writer0 = (BinaryWriter) writer.GetRawWriter();
 
-            writer0.WithDetach(w => w.WriteWithPeerDeployment(_func));
+            writer0.WriteWithPeerDeployment(_func);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJob.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJob.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJob.cs
index 56e3708..57e234c 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJob.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJob.cs
@@ -109,7 +109,7 @@ namespace Apache.Ignite.Core.Impl.Compute
         {
             var writer0 = (BinaryWriter)writer.GetRawWriter();
 
-            writer0.WithDetach(w => w.WriteWithPeerDeployment(Job));
+            writer0.WriteWithPeerDeployment(Job);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJobHolder.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJobHolder.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJobHolder.cs
index 120d074..5c009ac 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJobHolder.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJobHolder.cs
@@ -223,7 +223,7 @@ namespace Apache.Ignite.Core.Impl.Compute
         {
             BinaryWriter writer0 = (BinaryWriter) writer.GetRawWriter();
 
-            writer0.WithDetach(w => w.WriteObject(_job));
+            writer0.WriteObjectDetached(_job);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeOutFunc.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeOutFunc.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeOutFunc.cs
index 4e5f523..3d59245 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeOutFunc.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeOutFunc.cs
@@ -83,7 +83,7 @@ namespace Apache.Ignite.Core.Impl.Compute
         {
             var writer0 = (BinaryWriter)writer.GetRawWriter();
 
-            writer0.WithDetach(w => w.WriteWithPeerDeployment(_func));
+            writer0.WriteWithPeerDeployment(_func);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Deployment/PeerLoadingExtensions.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Deployment/PeerLoadingExtensions.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Deployment/PeerLoadingExtensions.cs
index 035a041..614f26c 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Deployment/PeerLoadingExtensions.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Deployment/PeerLoadingExtensions.cs
@@ -40,7 +40,7 @@ namespace Apache.Ignite.Core.Impl.Deployment
                 try
                 {
                     writer.WrapperFunc = WrapperFunc;
-                    writer.WriteObject(o);
+                    writer.WriteObjectDetached(o);
                 }
                 finally
                 {
@@ -49,7 +49,7 @@ namespace Apache.Ignite.Core.Impl.Deployment
             }
             else
             {
-                writer.WriteObject(o);
+                writer.WriteObjectDetached(o);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Deployment/PeerLoadingObjectHolder.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Deployment/PeerLoadingObjectHolder.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Deployment/PeerLoadingObjectHolder.cs
index 584750a..9457538 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Deployment/PeerLoadingObjectHolder.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Deployment/PeerLoadingObjectHolder.cs
@@ -84,7 +84,7 @@ namespace Apache.Ignite.Core.Impl.Deployment
 
             writer0.WriteGuid(writer0.Marshaller.Ignite.GetLocalNode().Id);
             writer0.WriteString(_object.GetType().AssemblyQualifiedName);
-            writer0.WithDetach(w => w.WriteObject(_object));
+            writer0.WriteObjectDetached(_object);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/f104976f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Messaging/MessageListenerHolder.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Messaging/MessageListenerHolder.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Messaging/MessageListenerHolder.cs
index 8e794d1..6e4e9f7 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Messaging/MessageListenerHolder.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Messaging/MessageListenerHolder.cs
@@ -148,7 +148,7 @@ namespace Apache.Ignite.Core.Impl.Messaging
         {
             var writer0 = (BinaryWriter)writer.GetRawWriter();
 
-            writer0.WithDetach(w => w.WriteObject(Filter));
+            writer0.WriteObjectDetached(Filter);
         }
 
         /// <summary>