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/09/25 10:07:41 UTC
ignite git commit: IGNITE-6249 .NET: IgniteConfiguration.ConsistentId
Repository: ignite
Updated Branches:
refs/heads/master 6f1ca419f -> 68c100df2
IGNITE-6249 .NET: IgniteConfiguration.ConsistentId
This closes #2727
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/68c100df
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/68c100df
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/68c100df
Branch: refs/heads/master
Commit: 68c100df28ddd97828fd67c2d46f6124ce080d4c
Parents: 6f1ca41
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Mon Sep 25 13:07:35 2017 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Mon Sep 25 13:07:35 2017 +0300
----------------------------------------------------------------------
.../utils/PlatformConfigurationUtils.java | 10 +++
.../IgniteConfigurationSerializerTest.cs | 7 +-
.../IgniteConfigurationTest.cs | 73 ++++++++++++++++++--
.../Apache.Ignite.Core/IgniteConfiguration.cs | 7 ++
.../IgniteConfigurationSection.xsd | 5 ++
.../Common/IgniteConfigurationXmlSerializer.cs | 4 +-
6 files changed, 97 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/68c100df/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
index 7e17bdb..dc45166 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.processors.platform.utils;
+import java.io.Serializable;
import java.lang.management.ManagementFactory;
import java.net.InetSocketAddress;
import java.security.AccessController;
@@ -571,6 +572,14 @@ public class PlatformConfigurationUtils {
if (in.readBoolean())
cfg.setActiveOnStart(in.readBoolean());
+ Object consId = in.readObjectDetached();
+
+ if (consId instanceof Serializable) {
+ cfg.setConsistentId((Serializable) consId);
+ } else if (consId != null) {
+ throw new IgniteException("IgniteConfiguration.ConsistentId should be Serializable.");
+ }
+
// Thread pools.
if (in.readBoolean())
cfg.setPublicThreadPoolSize(in.readInt());
@@ -1025,6 +1034,7 @@ public class PlatformConfigurationUtils {
w.writeLong(cfg.getLongQueryWarningTimeout());
w.writeBoolean(true);
w.writeBoolean(cfg.isActiveOnStart());
+ w.writeObject(cfg.getConsistentId());
// Thread pools.
w.writeBoolean(true);
http://git-wip-us.apache.org/repos/asf/ignite/blob/68c100df/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
index ac214ce..23ee884 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
@@ -68,7 +68,7 @@ namespace Apache.Ignite.Core.Tests
[Test]
public void TestPredefinedXml()
{
- var xml = @"<igniteConfig workDirectory='c:' JvmMaxMemoryMb='1024' MetricsLogFrequency='0:0:10' isDaemon='true' isLateAffinityAssignment='false' springConfigUrl='c:\myconfig.xml' autoGenerateIgniteInstanceName='true' peerAssemblyLoadingMode='CurrentAppDomain' longQueryWarningTimeout='1:2:3' isActiveOnStart='false'>
+ var xml = @"<igniteConfig workDirectory='c:' JvmMaxMemoryMb='1024' MetricsLogFrequency='0:0:10' isDaemon='true' isLateAffinityAssignment='false' springConfigUrl='c:\myconfig.xml' autoGenerateIgniteInstanceName='true' peerAssemblyLoadingMode='CurrentAppDomain' longQueryWarningTimeout='1:2:3' isActiveOnStart='false' consistentId='someId012'>
<localhost>127.1.1.1</localhost>
<binaryConfiguration compactFooter='false' keepDeserialized='true'>
<nameMapper type='Apache.Ignite.Core.Tests.IgniteConfigurationSerializerTest+NameMapper' bar='testBar' />
@@ -145,6 +145,7 @@ namespace Apache.Ignite.Core.Tests
<sqlConnectorConfiguration host='bar' port='10' portRange='11' socketSendBufferSize='12' socketReceiveBufferSize='13' tcpNoDelay='true' maxOpenCursorsPerConnection='14' threadPoolSize='15' />
<clientConnectorConfiguration host='bar' port='10' portRange='11' socketSendBufferSize='12' socketReceiveBufferSize='13' tcpNoDelay='true' maxOpenCursorsPerConnection='14' threadPoolSize='15' />
<persistentStoreConfiguration alwaysWriteFullPages='true' checkpointingFrequency='00:00:1' checkpointingPageBufferSize='2' checkpointingThreads='3' lockWaitTime='00:00:04' persistentStorePath='foo' tlbSize='5' walArchivePath='bar' walFlushFrequency='00:00:06' walFsyncDelayNanos='7' walHistorySize='8' walMode='None' walRecordIteratorBufferSize='9' walSegments='10' walSegmentSize='11' walStorePath='baz' metricsEnabled='true' rateTimeInterval='0:0:6' subIntervals='3' />
+ <consistentId type='System.String'>someId012</consistentId>
</igniteConfig>";
var cfg = IgniteConfiguration.FromXml(xml);
@@ -171,6 +172,7 @@ namespace Apache.Ignite.Core.Tests
Assert.IsTrue(cfg.AutoGenerateIgniteInstanceName);
Assert.AreEqual(new TimeSpan(1, 2, 3), cfg.LongQueryWarningTimeout);
Assert.IsFalse(cfg.IsActiveOnStart);
+ Assert.AreEqual("someId012", cfg.ConsistentId);
Assert.AreEqual("secondCache", cfg.CacheConfiguration.Last().Name);
@@ -927,7 +929,8 @@ namespace Apache.Ignite.Core.Tests
MetricsEnabled = true,
RateTimeInterval = TimeSpan.FromDays(1)
},
- IsActiveOnStart = false
+ IsActiveOnStart = false,
+ ConsistentId = "myId123"
};
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/68c100df/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
index 5facb38..4f8014f 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
@@ -47,10 +47,10 @@ namespace Apache.Ignite.Core.Tests
public class IgniteConfigurationTest
{
/// <summary>
- /// Fixture setup.
+ /// Fixture tear down.
/// </summary>
[TestFixtureSetUp]
- public void FixtureSetUp()
+ public void FixtureTearDown()
{
Ignition.StopAll(true);
}
@@ -195,6 +195,8 @@ namespace Apache.Ignite.Core.Tests
Assert.AreEqual(cfg.UtilityCacheThreadPoolSize, resCfg.UtilityCacheThreadPoolSize);
Assert.AreEqual(cfg.QueryThreadPoolSize, resCfg.QueryThreadPoolSize);
+ Assert.AreEqual(cfg.ConsistentId, resCfg.ConsistentId);
+
var binCfg = cfg.BinaryConfiguration;
Assert.IsFalse(binCfg.CompactFooter);
@@ -463,6 +465,31 @@ namespace Apache.Ignite.Core.Tests
}
/// <summary>
+ /// Tests the consistent id.
+ /// </summary>
+ [Test]
+ [NUnit.Framework.Category(TestUtils.CategoryIntensive)]
+ public void TestConsistentId()
+ {
+ var ids = new object[]
+ {
+ null, new MyConsistentId {Data = "foo"}, "str", 1, 1.1, DateTime.Now, Guid.NewGuid()
+ };
+
+ var cfg = TestUtils.GetTestConfiguration();
+
+ foreach (var id in ids)
+ {
+ cfg.ConsistentId = id;
+
+ using (var ignite = Ignition.Start(cfg))
+ {
+ Assert.AreEqual(id, ignite.GetConfiguration().ConsistentId);
+ }
+ }
+ }
+
+ /// <summary>
/// Tests the ip finders.
/// </summary>
/// <param name="ipFinder">The ip finder.</param>
@@ -636,7 +663,7 @@ namespace Apache.Ignite.Core.Tests
JoinTimeout = TimeSpan.FromSeconds(5),
IpFinder = new TcpDiscoveryStaticIpFinder
{
- Endpoints = new[] { "127.0.0.1:49900", "127.0.0.1:49901" }
+ Endpoints = new[] {"127.0.0.1:49900", "127.0.0.1:49901"}
},
ClientReconnectDisabled = true,
ForceServerMode = true,
@@ -718,7 +745,7 @@ namespace Apache.Ignite.Core.Tests
}
},
// Skip cache check because with persistence the grid is not active by default.
- PluginConfigurations = new[] { new TestIgnitePluginConfiguration{ SkipCacheCheck = true } },
+ PluginConfigurations = new[] {new TestIgnitePluginConfiguration {SkipCacheCheck = true}},
EventStorageSpi = new MemoryEventStorageSpi
{
ExpirationTimeout = TimeSpan.FromSeconds(5),
@@ -754,7 +781,7 @@ namespace Apache.Ignite.Core.Tests
EmptyPagesPoolSize = 66,
SwapFilePath = "somePath2",
MetricsEnabled = true
- }
+ }
}
},
PublicThreadPoolSize = 3,
@@ -798,8 +825,42 @@ namespace Apache.Ignite.Core.Tests
MetricsEnabled = true,
SubIntervals = 7,
RateTimeInterval = TimeSpan.FromSeconds(9)
- }
+ },
+ ConsistentId = new MyConsistentId {Data = "abc"}
};
}
+
+ private class MyConsistentId
+ {
+ public string Data { get; set; }
+
+ private bool Equals(MyConsistentId other)
+ {
+ return string.Equals(Data, other.Data);
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(null, obj)) return false;
+ if (ReferenceEquals(this, obj)) return true;
+ if (obj.GetType() != GetType()) return false;
+ return Equals((MyConsistentId) obj);
+ }
+
+ public override int GetHashCode()
+ {
+ return (Data != null ? Data.GetHashCode() : 0);
+ }
+
+ public static bool operator ==(MyConsistentId left, MyConsistentId right)
+ {
+ return Equals(left, right);
+ }
+
+ public static bool operator !=(MyConsistentId left, MyConsistentId right)
+ {
+ return !Equals(left, right);
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/68c100df/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
index 14cd375..cb91ee1 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
@@ -281,6 +281,7 @@ namespace Apache.Ignite.Core
writer.WriteTimeSpanAsLongNullable(_clientFailureDetectionTimeout);
writer.WriteTimeSpanAsLongNullable(_longQueryWarningTimeout);
writer.WriteBooleanNullable(_isActiveOnStart);
+ writer.WriteObjectDetached(ConsistentId);
// Thread pools
writer.WriteIntNullable(_publicThreadPoolSize);
@@ -546,6 +547,7 @@ namespace Apache.Ignite.Core
_clientFailureDetectionTimeout = r.ReadTimeSpanNullable();
_longQueryWarningTimeout = r.ReadTimeSpanNullable();
_isActiveOnStart = r.ReadBooleanNullable();
+ ConsistentId = r.ReadObject<object>();
// Thread pools
_publicThreadPoolSize = r.ReadIntNullable();
@@ -1272,5 +1274,10 @@ namespace Apache.Ignite.Core
get { return _isActiveOnStart ?? DefaultIsActiveOnStart; }
set { _isActiveOnStart = value; }
}
+
+ /// <summary>
+ /// Gets or sets consistent globally unique node identifier which survives node restarts.
+ /// </summary>
+ public object ConsistentId { get; set; }
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/68c100df/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
index ac1111b..19ce110 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
@@ -1484,6 +1484,11 @@
</xs:sequence>
</xs:complexType>
</xs:element>
+ <xs:element name="consistentId" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Consistent globally unique node identifier which survives node restarts.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
</xs:all>
<xs:attribute name="igniteInstanceName" type="xs:string">
<xs:annotation>
http://git-wip-us.apache.org/repos/asf/ignite/blob/68c100df/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
index 775add4..8ee0c07 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
@@ -518,7 +518,9 @@ namespace Apache.Ignite.Core.Impl.Common
{
Debug.Assert(obj != null);
- return obj.GetType().GetProperties().Where(p => !Equals(p.GetValue(obj, null), GetDefaultValue(p)));
+ return obj.GetType().GetProperties()
+ .Where(p => p.GetIndexParameters().Length == 0 && // Skip indexed properties.
+ !Equals(p.GetValue(obj, null), GetDefaultValue(p)));
}
/// <summary>