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 2018/10/17 14:20:53 UTC

ignite git commit: IGNITE-9877 .NET: Fix AmbiguousMatchException in LINQ under .NET Core 2.1

Repository: ignite
Updated Branches:
  refs/heads/master cb0d1de30 -> e0e02abaa


IGNITE-9877 .NET: Fix AmbiguousMatchException in LINQ under .NET Core 2.1


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

Branch: refs/heads/master
Commit: e0e02abaa58ed09ddd7e5eaf528b684dfcc21065
Parents: cb0d1de
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Wed Oct 17 17:20:37 2018 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Wed Oct 17 17:20:37 2018 +0300

----------------------------------------------------------------------
 .../Apache.Ignite.Core.Tests.DotNetCore.csproj  |  4 +-
 .../Serializable/AdvancedSerializationTest.cs   |  8 ++--
 .../Binary/Serializable/SqlDmlTest.cs           | 20 ++++-----
 .../Cache/CacheAbstractTest.cs                  | 45 ++++++++++----------
 .../Cache/Query/Linq/CacheLinqTest.Strings.cs   | 10 ++---
 .../Client/Cache/CacheTestSsl.cs                |  2 +-
 .../Client/Cache/ScanQueryTest.cs               |  4 +-
 .../Client/IgniteClientConfigurationTest.cs     |  2 +-
 .../Compute/ComputeApiTest.JavaTask.cs          |  2 +-
 .../Services/ServicesTest.cs                    |  2 +-
 .../Impl/Unmanaged/Jni/AppDomains.cs            |  8 ++--
 .../Impl/Unmanaged/Jni/Jvm.cs                   |  2 +-
 .../Impl/Unmanaged/Jni/JvmDll.cs                |  8 ++--
 .../Apache.Ignite.Linq/Impl/MethodVisitor.cs    | 10 ++---
 14 files changed, 63 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core.Tests.DotNetCore/Apache.Ignite.Core.Tests.DotNetCore.csproj
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.DotNetCore/Apache.Ignite.Core.Tests.DotNetCore.csproj b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.DotNetCore/Apache.Ignite.Core.Tests.DotNetCore.csproj
index e27f8b7..6550a7f 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.DotNetCore/Apache.Ignite.Core.Tests.DotNetCore.csproj
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.DotNetCore/Apache.Ignite.Core.Tests.DotNetCore.csproj
@@ -107,7 +107,7 @@
     <Compile Include="..\Apache.Ignite.Core.Tests\Client\Cache\LinqTest.cs" Link="ThinClient\Cache\LinqTest.cs" />
     <Compile Include="..\Apache.Ignite.Core.Tests\Client\ClientConnectionTest.cs" Link="ThinClient\ClientConnectionTest.cs" />
     <Compile Include="..\Apache.Ignite.Core.Tests\Client\ClientTestBase.cs" Link="ThinClient\ClientTestBase.cs" />
-    <Compile Include="..\Apache.Ignite.Core.Tests\Client\EndpointTest.cs" Link="ThinClient\EndpointTest.cs" />    
+    <Compile Include="..\Apache.Ignite.Core.Tests\Client\EndpointTest.cs" Link="ThinClient\EndpointTest.cs" />
     <Compile Include="..\Apache.Ignite.Core.Tests\Client\IgniteClientConfigurationTest.cs" Link="ThinClient\IgniteClientConfigurationTest.cs" />
     <Compile Include="..\Apache.Ignite.Core.Tests\Client\RawSecureSocketTest.cs" Link="ThinClient\RawSecureSocketTest.cs" />
     <Compile Include="..\Apache.Ignite.Core.Tests\Compute\ComputeApiTest.cs" Link="Compute\ComputeApiTest.cs" />
@@ -184,7 +184,7 @@
     <PackageReference Include="NUnit" Version="3.8.1" />
     <PackageReference Include="NUnit3TestAdapter" Version="3.9.0" />
     <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.0" />
-	
+
 	<ProjectReference Include="..\Apache.Ignite.Core\Apache.Ignite.Core.DotNetCore.csproj" />
 	<ProjectReference Include="..\Apache.Ignite.Linq\Apache.Ignite.Linq.DotNetCore.csproj" />
   </ItemGroup>

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/Serializable/AdvancedSerializationTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/Serializable/AdvancedSerializationTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/Serializable/AdvancedSerializationTest.cs
index 4a10922..d697e17 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/Serializable/AdvancedSerializationTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/Serializable/AdvancedSerializationTest.cs
@@ -96,7 +96,7 @@ namespace Apache.Ignite.Core.Tests.Binary.Serializable
             Assert.AreEqual(expectedRes, jobResult.InnerXml);
         }
 
-#if !NETCOREAPP2_0  // AppDomains are not supported in .NET Core
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1  // AppDomains are not supported in .NET Core
         /// <summary>
         /// Tests custom serialization binder.
         /// </summary>
@@ -111,7 +111,7 @@ namespace Apache.Ignite.Core.Tests.Binary.Serializable
             for (var i = 0; i < count; i++)
             {
                 dynamic val = Activator.CreateInstance(GenerateDynamicType());
-                
+
                 val.Id = i;
                 val.Name = "Name_" + i;
 
@@ -143,7 +143,7 @@ namespace Apache.Ignite.Core.Tests.Binary.Serializable
                 TypeAttributes.Class | TypeAttributes.Public | TypeAttributes.Serializable);
 
             typeBuilder.DefineField("Id", typeof (int), FieldAttributes.Public);
-            
+
             typeBuilder.DefineField("Name", typeof (string), FieldAttributes.Public);
 
             return typeBuilder.CreateType();
@@ -258,4 +258,4 @@ namespace Apache.Ignite.Core.Tests.Binary.Serializable
             // No-op.
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/Serializable/SqlDmlTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/Serializable/SqlDmlTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/Serializable/SqlDmlTest.cs
index 0ffd068..005488a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/Serializable/SqlDmlTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/Serializable/SqlDmlTest.cs
@@ -38,7 +38,7 @@ namespace Apache.Ignite.Core.Tests.Binary.Serializable
     {
         /** */
         private IIgnite _ignite;
-        
+
         /** */
         private StringBuilder _outSb;
 
@@ -109,7 +109,7 @@ namespace Apache.Ignite.Core.Tests.Binary.Serializable
             var guid = Guid.NewGuid();
             var insertRes = cache.Query(new SqlFieldsQuery(
                 "insert into SimpleSerializable(_key, Byte, Bool, Short, Int, Long, Float, Double, " +
-                "Decimal, Guid, String) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", 
+                "Decimal, Guid, String) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
                 3, 45, true, 43, 33, 99, 4.5f, 6.7, 9.04m, guid, "bar33")).GetAll();
 
             Assert.AreEqual(1, insertRes.Count);
@@ -163,7 +163,7 @@ namespace Apache.Ignite.Core.Tests.Binary.Serializable
             Assert.AreEqual("Value was either too large or too small for a UInt32.", ex.Message);
         }
 
-#if !NETCOREAPP2_0  // Console redirect issues on .NET Core
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1  // Console redirect issues on .NET Core
         /// <summary>
         /// Tests the log warning.
         /// </summary>
@@ -196,25 +196,25 @@ namespace Apache.Ignite.Core.Tests.Binary.Serializable
 
             [QuerySqlField]
             public short Short { get; set; }
-            
+
             [QuerySqlField]
             public int Int { get; set; }
-            
+
             [QuerySqlField]
             public long Long { get; set; }
-            
+
             [QuerySqlField]
             public float Float { get; set; }
-            
+
             [QuerySqlField]
             public double Double { get; set; }
-            
+
             [QuerySqlField]
             public decimal Decimal { get; set; }
-            
+
             [QuerySqlField]
             public Guid Guid { get; set; }
-            
+
             [QuerySqlField]
             public string String { get; set; }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/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 02ed39d..3c74ce4 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheAbstractTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheAbstractTest.cs
@@ -39,7 +39,7 @@ namespace Apache.Ignite.Core.Tests.Cache
     /// Base cache test.
     /// </summary>
     [SuppressMessage("ReSharper", "UnusedVariable")]
-    public abstract class CacheAbstractTest 
+    public abstract class CacheAbstractTest
     {
         /// <summary>
         /// Fixture setup.
@@ -91,7 +91,7 @@ namespace Apache.Ignite.Core.Tests.Cache
         /// </summary>
         [TearDown]
         public void AfterTest() {
-            for (int i = 0; i < GridCount(); i++) 
+            for (int i = 0; i < GridCount(); i++)
                 Cache(i).WithKeepBinary<object, object>().RemoveAll();
 
             for (int i = 0; i < GridCount(); i++)
@@ -213,7 +213,7 @@ namespace Apache.Ignite.Core.Tests.Cache
             Assert.IsTrue(cache.ContainsKey(key));
             Assert.IsFalse(cache.ContainsKey(-1));
         }
-        
+
         [Test]
         public void TestContainsKeys()
         {
@@ -229,7 +229,7 @@ namespace Apache.Ignite.Core.Tests.Cache
 
             Assert.IsFalse(cache.ContainsKeys(keys.Concat(new[] {int.MaxValue})));
         }
-        
+
         [Test]
         public void TestPeek()
         {
@@ -260,11 +260,11 @@ namespace Apache.Ignite.Core.Tests.Cache
 
             Assert.AreEqual(1, cache.Get(1));
             Assert.AreEqual(2, cache.Get(2));
-            
+
             Assert.Throws<KeyNotFoundException>(() => cache.Get(3));
 
             int value;
-            
+
             Assert.IsTrue(cache.TryGet(1, out value));
             Assert.AreEqual(1, value);
 
@@ -282,7 +282,7 @@ namespace Apache.Ignite.Core.Tests.Cache
 
             cache.Put(1, 1);
             cache.Put(2, 2);
-            
+
             Assert.AreEqual(1, cache.Get(1));
             Assert.AreEqual(2, cache.Get(2));
             Assert.IsFalse(cache.ContainsKey(3));
@@ -376,11 +376,11 @@ namespace Apache.Ignite.Core.Tests.Cache
             Assert.AreEqual(1, cache.Get(1));
 
             Assert.IsFalse(cache.GetAndRemove(0).Success);
-            
+
             Assert.AreEqual(1, cache.GetAndRemove(1).Value);
 
             Assert.IsFalse(cache.GetAndRemove(1).Success);
-            
+
             Assert.IsFalse(cache.ContainsKey(1));
         }
 
@@ -653,10 +653,9 @@ namespace Apache.Ignite.Core.Tests.Cache
         /// Expiry policy tests.
         /// </summary>
         [Test]
+        [Ignore("https://issues.apache.org/jira/browse/IGNITE-8983")]
         public void TestWithExpiryPolicy()
         {
-            Assert.Fail("https://issues.apache.org/jira/browse/IGNITE-8983");
-
             TestWithExpiryPolicy((cache, policy) => cache.WithExpiryPolicy(policy), true);
         }
 
@@ -680,11 +679,11 @@ namespace Apache.Ignite.Core.Tests.Cache
         /// <summary>
         /// Expiry policy tests.
         /// </summary>
-        private void TestWithExpiryPolicy(Func<ICache<int, int>, IExpiryPolicy, ICache<int, int>> withPolicyFunc, 
+        private void TestWithExpiryPolicy(Func<ICache<int, int>, IExpiryPolicy, ICache<int, int>> withPolicyFunc,
             bool origCache)
         {
             ICache<int, int> cache0 = Cache(0);
-            
+
             int key0;
             int key1;
 
@@ -698,7 +697,7 @@ namespace Apache.Ignite.Core.Tests.Cache
                 key0 = GetPrimaryKeyForCache(cache0);
                 key1 = GetPrimaryKeyForCache(Cache(1));
             }
-            
+
             // Test unchanged expiration.
             ICache<int, int> cache = withPolicyFunc(cache0, new ExpiryPolicy(null, null, null));
             cache0 = origCache ? cache0 : cache;
@@ -787,7 +786,7 @@ namespace Apache.Ignite.Core.Tests.Cache
             Assert.IsFalse(cache0.ContainsKey(key0));
             Assert.IsFalse(cache0.ContainsKey(key1));
         }
-        
+
         /// <summary>
         /// Expiry policy tests for zero and negative expiry values.
         /// </summary>
@@ -796,7 +795,7 @@ namespace Apache.Ignite.Core.Tests.Cache
         public void TestWithExpiryPolicyZeroNegative()
         {
             ICache<int, int> cache0 = Cache(0);
-            
+
             int key0;
             int key1;
 
@@ -838,7 +837,7 @@ namespace Apache.Ignite.Core.Tests.Cache
             cache0.RemoveAll(new List<int> { key0, key1 });
 
             // Test negative expiration.
-            cache = cache0.WithExpiryPolicy(new ExpiryPolicy(TimeSpan.FromMilliseconds(-100), 
+            cache = cache0.WithExpiryPolicy(new ExpiryPolicy(TimeSpan.FromMilliseconds(-100),
                 TimeSpan.FromMilliseconds(-100), TimeSpan.FromMilliseconds(-100)));
 
             cache.Put(key0, key0);
@@ -1714,7 +1713,7 @@ namespace Apache.Ignite.Core.Tests.Cache
 
             Assert.IsNull(err);
         }
-        
+
         /**
          * Test tries to provoke garbage collection for .Net future before it was completed to verify
          * futures pinning works.
@@ -2041,7 +2040,7 @@ namespace Apache.Ignite.Core.Tests.Cache
             foreach (var nearKey in nearKeys.Take(3))
                 Assert.AreNotEqual(0, cache.Get(nearKey));
         }
-        
+
         [Test]
         public void TestSerializable()
         {
@@ -2180,7 +2179,7 @@ namespace Apache.Ignite.Core.Tests.Cache
 
             var results = res.OrderBy(x => x.Key).Select(x => x.Result);
             var expectedResults = entries.OrderBy(x => x.Key).Select(x => x.Value + arg);
-            
+
             Assert.IsTrue(results.SequenceEqual(expectedResults));
 
             var resultEntries = cache.GetAll(entries.Keys);
@@ -2197,20 +2196,20 @@ namespace Apache.Ignite.Core.Tests.Cache
             res = cache.InvokeAll(entries.Keys, new T {Exists = false}, arg);
 
             Assert.IsTrue(res.All(x => x.Result == arg));
-            Assert.IsTrue(cache.GetAll(entries.Keys).All(x => x.Value == arg)); 
+            Assert.IsTrue(cache.GetAll(entries.Keys).All(x => x.Value == arg));
 
             // Test exceptions
             var errKey = entries.Keys.Reverse().Take(5).Last();
 
             TestInvokeAllException(cache, entries, new T { ThrowErr = true, ThrowOnKey = errKey }, arg, errKey);
-            TestInvokeAllException(cache, entries, new T { ThrowErrBinarizable = true, ThrowOnKey = errKey }, 
+            TestInvokeAllException(cache, entries, new T { ThrowErrBinarizable = true, ThrowOnKey = errKey },
                 arg, errKey);
             TestInvokeAllException(cache, entries, new T { ThrowErrNonSerializable = true, ThrowOnKey = errKey },
                 arg, errKey, "ExpectedException");
 
         }
 
-        private static void TestInvokeAllException<T>(ICache<int, int> cache, Dictionary<int, int> entries, 
+        private static void TestInvokeAllException<T>(ICache<int, int> cache, Dictionary<int, int> entries,
             T processor, int arg, int errKey, string exceptionText = null) where T : AddArgCacheEntryProcessor
         {
             var res = cache.InvokeAll(entries.Keys, processor, arg);

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Strings.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Strings.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Strings.cs
index cb89a5b..628f35c 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Strings.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Strings.cs
@@ -66,7 +66,7 @@ namespace Apache.Ignite.Core.Tests.Cache.Query.Linq
 
             CheckFunc(x => x.Trim(), strings);
 
-#if !NETCOREAPP2_0  // Trim is not supported on .NET Core
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1  // Trim is not supported on .NET Core
             CheckFunc(x => x.Trim('P'), strings);
             var toTrim = new[] { 'P' };
             CheckFunc(x => x.Trim(toTrim), strings);
@@ -89,9 +89,9 @@ namespace Apache.Ignite.Core.Tests.Cache.Query.Linq
             CheckFunc(x => Regex.Replace(x, @"son.\d", "kele!", RegexOptions.None), strings);
             CheckFunc(x => Regex.Replace(x, @"person.\d", "akele!", RegexOptions.IgnoreCase), strings);
             CheckFunc(x => Regex.Replace(x, @"person.\d", "akele!", RegexOptions.Multiline), strings);
-            CheckFunc(x => Regex.Replace(x, @"person.\d", "akele!", RegexOptions.IgnoreCase | RegexOptions.Multiline), 
+            CheckFunc(x => Regex.Replace(x, @"person.\d", "akele!", RegexOptions.IgnoreCase | RegexOptions.Multiline),
                 strings);
-            var notSupportedException = Assert.Throws<NotSupportedException>(() => CheckFunc(x => 
+            var notSupportedException = Assert.Throws<NotSupportedException>(() => CheckFunc(x =>
                 Regex.IsMatch(x, @"^person\d", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant), strings));
             Assert.AreEqual("RegexOptions.CultureInvariant is not supported", notSupportedException.Message);
 
@@ -100,7 +100,7 @@ namespace Apache.Ignite.Core.Tests.Cache.Query.Linq
             CheckFunc(x => Regex.IsMatch(x, @"^person_9\d", RegexOptions.IgnoreCase), strings);
             CheckFunc(x => Regex.IsMatch(x, @"^Person_9\d", RegexOptions.Multiline), strings);
             CheckFunc(x => Regex.IsMatch(x, @"^person_9\d", RegexOptions.IgnoreCase | RegexOptions.Multiline), strings);
-            notSupportedException = Assert.Throws<NotSupportedException>(() => CheckFunc(x => 
+            notSupportedException = Assert.Throws<NotSupportedException>(() => CheckFunc(x =>
                 Regex.IsMatch(x, @"^person_9\d",RegexOptions.IgnoreCase | RegexOptions.CultureInvariant), strings));
             Assert.AreEqual("RegexOptions.CultureInvariant is not supported", notSupportedException.Message);
 
@@ -114,4 +114,4 @@ namespace Apache.Ignite.Core.Tests.Cache.Query.Linq
             CheckFunc(x => x + 10, strings);
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/Cache/CacheTestSsl.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/Cache/CacheTestSsl.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/Cache/CacheTestSsl.cs
index 0f55ce5..f674232 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/Cache/CacheTestSsl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/Cache/CacheTestSsl.cs
@@ -54,7 +54,7 @@ namespace Apache.Ignite.Core.Tests.Client.Cache
                     CertificatePassword = "123456",
                     SkipServerCertificateValidation = true,
                     CheckCertificateRevocation = true,
-#if !NETCOREAPP2_0
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1
                     SslProtocols = SslProtocols.Tls
 #else
                     SslProtocols = SslProtocols.Tls12

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/Cache/ScanQueryTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/Cache/ScanQueryTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/Cache/ScanQueryTest.cs
index 71c8f0f..18ced28 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/Cache/ScanQueryTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/Cache/ScanQueryTest.cs
@@ -124,7 +124,7 @@ namespace Apache.Ignite.Core.Tests.Client.Cache
                 var single = clientCache.Query(new ScanQuery<int, Person>(new PersonKeyFilter(3))).Single();
                 Assert.AreEqual(3, single.Key);
 
-#if !NETCOREAPP2_0   // Serializing delegates is not supported on this platform.
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1   // Serializing delegates is not supported on this platform.
                 // Multiple results.
                 var res = clientCache.Query(new ScanQuery<int, Person>(new PersonFilter(x => x.Name.Length == 1)))
                     .ToList();
@@ -157,7 +157,7 @@ namespace Apache.Ignite.Core.Tests.Client.Cache
         }
 
 
-#if !NETCOREAPP2_0   // Serializing delegates and exceptions is not supported on this platform.
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1   // Serializing delegates and exceptions is not supported on this platform.
         /// <summary>
         /// Tests the exception in filter.
         /// </summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/IgniteClientConfigurationTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/IgniteClientConfigurationTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/IgniteClientConfigurationTest.cs
index 3d55f4c..a113193 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/IgniteClientConfigurationTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/IgniteClientConfigurationTest.cs
@@ -196,7 +196,7 @@ namespace Apache.Ignite.Core.Tests.Client
             }
         }
 
-#if !NETCOREAPP2_0
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1
         /// <summary>
         /// Tests the schema validation.
         /// </summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.JavaTask.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.JavaTask.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.JavaTask.cs
index 1f5c3a3..be0a203 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.JavaTask.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.JavaTask.cs
@@ -316,7 +316,7 @@ namespace Apache.Ignite.Core.Tests.Compute
 
                 Assert.AreEqual(val, binRes.GetField<long>("Field"));
 
-#if !NETCOREAPP2_0
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1
                 var dotNetBin = _grid1.GetBinary().ToBinary<BinaryObject>(res);
 
                 Assert.AreEqual(dotNetBin.Header.HashCode, ((BinaryObject)binRes).Header.HashCode);

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Services/ServicesTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Services/ServicesTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Services/ServicesTest.cs
index 81c3652..6bea9b2 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Services/ServicesTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Services/ServicesTest.cs
@@ -1018,7 +1018,7 @@ namespace Apache.Ignite.Core.Tests.Services
         /// </summary>
         private IgniteConfiguration GetConfiguration(string springConfigUrl)
         {
-#if !NETCOREAPP2_0
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1
             if (!CompactFooter)
             {
                 springConfigUrl = Compute.ComputeApiTestFullFooter.ReplaceFooterSetting(springConfigUrl);

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/AppDomains.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/AppDomains.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/AppDomains.cs
index e98796b..64c3665 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/AppDomains.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/AppDomains.cs
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-#if !NETCOREAPP2_0
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1
 namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
 {
     using System;
@@ -65,12 +65,12 @@ namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
             {
                 throw new IgniteException("Failed to get default AppDomain. Cannot create meta host: " + hr);
             }
-            
+
             var host = (ICLRMetaHost) objHost;
             var vers = Environment.Version;
             var versString = string.Format("v{0}.{1}.{2}", vers.Major, vers.Minor, vers.Build);
             var runtime = (ICLRRuntimeInfo) host.GetRuntime(versString, ref IID_CLRRuntimeInfo);
-            
+
             bool started;
             uint flags;
             runtime.IsStarted(out started, out flags);
@@ -133,4 +133,4 @@ namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
         }
     }
 }
-#endif
\ No newline at end of file
+#endif

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs
index 5c781b5..4e04a80 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs
@@ -107,7 +107,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
         /// </summary>
         private static Callbacks GetCallbacksFromDefaultDomain()
         {
-#if !NETCOREAPP2_0
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1
             // JVM exists once per process, and JVM callbacks exist once per process.
             // We should register callbacks ONLY from the default AppDomain (which can't be unloaded).
             // Non-default appDomains should delegate this logic to the default one.

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/JvmDll.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/JvmDll.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/JvmDll.cs
index ef161f4..682226d 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/JvmDll.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/JvmDll.cs
@@ -172,8 +172,8 @@ namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
 
         /// <summary>
         /// Gets the default JVM init args.
-        /// Before calling this function, native code must set the vm_args->version field to the JNI version 
-        /// it expects the VM to support. After this function returns, vm_args->version will be set 
+        /// Before calling this function, native code must set the vm_args->version field to the JNI version
+        /// it expects the VM to support. After this function returns, vm_args->version will be set
         /// to the actual JNI version the VM supports.
         /// </summary>
         public unsafe JniResult GetDefaultJvmInitArgs(JvmInitArgs* args)
@@ -305,7 +305,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
         /// </summary>
         private static IEnumerable<KeyValuePair<string, string>> GetJvmDllPathsWindows()
         {
-#if !NETCOREAPP2_0
+#if !NETCOREAPP2_0 && !NETCOREAPP2_1
             if (!Os.IsWindows)
             {
                 yield break;
@@ -446,4 +446,4 @@ namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
             internal static extern JniResult JNI_GetDefaultJavaVMInitArgs(JvmInitArgs* args);
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/e0e02aba/modules/platforms/dotnet/Apache.Ignite.Linq/Impl/MethodVisitor.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Linq/Impl/MethodVisitor.cs b/modules/platforms/dotnet/Apache.Ignite.Linq/Impl/MethodVisitor.cs
index 84bd98f..375c7a8 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Linq/Impl/MethodVisitor.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Linq/Impl/MethodVisitor.cs
@@ -54,7 +54,7 @@ namespace Apache.Ignite.Linq.Impl
         {
             GetStringMethod("ToLower", new Type[0], GetFunc("lower")),
             GetStringMethod("ToUpper", new Type[0], GetFunc("upper")),
-            GetStringMethod("Contains", del: (e, v) => VisitSqlLike(e, v, "'%' || ? || '%'")),
+            GetStringMethod("Contains", new[] {typeof (string)}, (e, v) => VisitSqlLike(e, v, "'%' || ? || '%'")),
             GetStringMethod("StartsWith", new[] {typeof (string)}, (e, v) => VisitSqlLike(e, v, "? || '%'")),
             GetStringMethod("EndsWith", new[] {typeof (string)}, (e, v) => VisitSqlLike(e, v, "'%' || ?")),
             GetStringMethod("IndexOf", new[] {typeof (string)}, GetFunc("instr", -1)),
@@ -72,7 +72,7 @@ namespace Apache.Ignite.Linq.Impl
             GetStringMethod("PadRight", "rpad", typeof (int), typeof (char)),
 
             GetRegexMethod("Replace", "regexp_replace", typeof (string), typeof (string), typeof (string)),
-            GetRegexMethod("Replace", "regexp_replace", typeof (string), typeof (string), typeof (string), 
+            GetRegexMethod("Replace", "regexp_replace", typeof (string), typeof (string), typeof (string),
                 typeof(RegexOptions)),
             GetRegexMethod("IsMatch", "regexp_like", typeof (string), typeof (string)),
             GetRegexMethod("IsMatch", "regexp_like", typeof (string), typeof (string), typeof(RegexOptions)),
@@ -205,7 +205,7 @@ namespace Apache.Ignite.Linq.Impl
         /// <summary>
         /// Visits the instance function.
         /// </summary>
-        private static void VisitFunc(MethodCallExpression expression, CacheQueryExpressionVisitor visitor, 
+        private static void VisitFunc(MethodCallExpression expression, CacheQueryExpressionVisitor visitor,
             string func, string suffix, params int[] adjust)
         {
             visitor.ResultBuilder.Append(func).Append("(");
@@ -358,7 +358,7 @@ namespace Apache.Ignite.Linq.Impl
         private static KeyValuePair<MethodInfo, VisitMethodDelegate> GetParameterizedTrimMethod(string name,
             string sqlName)
         {
-            return GetMethod(typeof(string), name, new[] {typeof(char[])}, 
+            return GetMethod(typeof(string), name, new[] {typeof(char[])},
                 (e, v) => VisitParameterizedTrimFunc(e, v, sqlName));
         }
 
@@ -379,4 +379,4 @@ namespace Apache.Ignite.Linq.Impl
             return GetMathMethod(name, name, argTypes);
         }
     }
-}
\ No newline at end of file
+}