You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/04/12 07:34:06 UTC

[35/57] [abbrv] ignite git commit: Merge branch 'master' into ignite-3477-master

Merge branch 'master' into ignite-3477-master

# Conflicts:
#	modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
#	modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
#	modules/platforms/dotnet/Apache.Ignite.Core.Tests/EventsTest.cs
#	modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
#	modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
#	modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
#	modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
#	modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd


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

Branch: refs/heads/ignite-3477-debug
Commit: 2210635aea0a39da7b3c9f699cbc268ef6eeece7
Parents: a68045f edfa353
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Tue Apr 11 12:57:38 2017 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Tue Apr 11 12:57:38 2017 +0300

----------------------------------------------------------------------
 DEVNOTES.txt                                    |    3 -
 assembly/dependencies-fabric-lgpl.xml           |    3 -
 assembly/dependencies-fabric.xml                |    3 -
 assembly/dependencies-schema-import.xml         |   57 -
 assembly/release-base.xml                       |    2 -
 assembly/release-fabric-base.xml                |    9 -
 assembly/release-schema-import.xml              |   50 -
 bin/ignite-schema-import.bat                    |  110 -
 bin/ignite-schema-import.sh                     |   87 -
 examples/README-LGPL.txt                        |    4 +-
 examples/README.txt                             |    2 -
 examples/pom-standalone-lgpl.xml                |    1 -
 examples/pom-standalone.xml                     |    1 -
 examples/pom.xml                                |    1 -
 examples/schema-import/README.txt               |   38 -
 examples/schema-import/bin/db-init.sql          |   28 -
 examples/schema-import/bin/h2-server.bat        |   80 -
 examples/schema-import/bin/h2-server.sh         |   66 -
 .../schema-import/bin/schema-import.properties  |   28 -
 examples/schema-import/pom-standalone.xml       |   90 -
 examples/schema-import/pom.xml                  |  101 -
 .../org/apache/ignite/schema/CacheConfig.java   |   36 -
 .../java/org/apache/ignite/schema/Demo.java     |  134 --
 .../java/org/apache/ignite/schema/DemoNode.java |   38 -
 .../ignite/schema/H2DataSourceFactory.java      |   35 -
 .../java/org/apache/ignite/schema/Person.java   |   44 -
 .../org/apache/ignite/schema/PersonKey.java     |   37 -
 .../JettyRestProcessorAbstractSelfTest.java     |    3 +-
 .../org/apache/ignite/IgniteFileSystem.java     |   26 +-
 .../configuration/FileSystemConfiguration.java  |    6 +-
 .../configuration/IgniteConfiguration.java      |    4 +-
 .../configuration/NearCacheConfiguration.java   |   56 +-
 .../ignite/internal/IgniteEventsImpl.java       |    8 +-
 .../org/apache/ignite/internal/IgnitionEx.java  |    4 +-
 .../binary/builder/BinaryObjectBuilderImpl.java |   36 +-
 .../eventstorage/GridEventStorageManager.java   |   12 +-
 .../processors/cache/GridCacheAtomicFuture.java |    2 +-
 .../processors/cache/GridCacheMvccManager.java  |   84 +-
 .../cache/GridDeferredAckMessageSender.java     |   11 +-
 .../GridDhtAtomicAbstractUpdateFuture.java      |    4 +-
 .../GridNearAtomicAbstractUpdateFuture.java     |    2 +-
 .../GridNearAtomicSingleUpdateFuture.java       |   21 +-
 .../dht/atomic/GridNearAtomicUpdateFuture.java  |   23 +-
 .../cache/transactions/IgniteTxManager.java     |    2 +-
 .../internal/processors/igfs/IgfsAsyncImpl.java |    8 +-
 .../internal/processors/igfs/IgfsImpl.java      |   20 +-
 .../utils/PlatformConfigurationUtils.java       |   28 +
 .../org/apache/ignite/internal/util/F0.java     |  196 +-
 .../ignite/internal/util/lang/GridFunc.java     |  620 +----
 .../visor/igfs/VisorIgfsFormatTask.java         |    2 +-
 .../visor/node/VisorIgfsConfiguration.java      |    2 +-
 .../deployment/local/LocalDeploymentSpi.java    |    5 +-
 .../spi/eventstorage/NoopEventStorageSpi.java   |   53 +
 .../test/config/store/jdbc/ignite-jdbc-type.xml |    2 +-
 .../cache/store/jdbc/model/Organization.java    |    2 -
 .../cache/store/jdbc/model/OrganizationKey.java |    2 -
 .../ignite/cache/store/jdbc/model/Person.java   |    2 -
 .../store/jdbc/model/PersonComplexKey.java      |    4 +-
 .../cache/store/jdbc/model/PersonKey.java       |    2 -
 .../ignite/igfs/IgfsEventsAbstractSelfTest.java |    2 +-
 .../igfs/IgfsFragmentizerAbstractSelfTest.java  |    2 +-
 .../ignite/igfs/IgfsFragmentizerSelfTest.java   |    2 +-
 .../GridEventStorageDefaultExceptionTest.java   |   94 +
 ...faultIgfsSecondaryFileSystemTestAdapter.java |    2 +-
 .../igfs/IgfsAbstractBaseSelfTest.java          |    2 +-
 .../processors/igfs/IgfsAbstractSelfTest.java   |    4 +-
 ...sCachePerBlockLruEvictionPolicySelfTest.java |    2 +-
 .../igfs/IgfsMetaManagerSelfTest.java           |    2 +-
 .../processors/igfs/IgfsMetricsSelfTest.java    |    2 +-
 .../internal/processors/igfs/IgfsMock.java      |    4 +-
 .../processors/igfs/IgfsProcessorSelfTest.java  |    8 +-
 .../processors/igfs/IgfsStreamsSelfTest.java    |    2 +-
 .../processors/igfs/IgfsTaskSelfTest.java       |    2 +-
 .../IgfsAbstractRecordResolverSelfTest.java     |    2 +-
 .../testframework/junits/GridAbstractTest.java  |   56 +-
 .../testsuites/IgniteComputeGridTestSuite.java  |    2 +
 .../impl/HadoopTaskExecutionSelfTest.java       |    2 +-
 ...opClientProtocolMultipleServersSelfTest.java |    2 +-
 .../client/HadoopClientProtocolSelfTest.java    |    2 +-
 .../hadoop/impl/igfs/IgfsEventsTestSuite.java   |    2 +-
 modules/log4j2/pom.xml                          |    4 +-
 .../ignite/logger/log4j2/Log4J2Logger.java      |   23 +-
 .../Apache.Ignite.Core.Tests/EventsTest.cs      |   63 +-
 .../IgniteConfigurationSerializerTest.cs        |   13 +-
 .../IgniteConfigurationTest.cs                  |   15 +-
 .../Apache.Ignite.Core.csproj                   |    4 +
 .../Events/IEventStorageSpi.cs                  |   33 +
 .../Events/MemoryEventStorageSpi.cs             |  100 +
 .../Events/NoopEventStorageSpi.cs               |   27 +
 .../Apache.Ignite.Core/IgniteConfiguration.cs   |   48 +-
 .../IgniteConfigurationSection.xsd              |   22 +
 .../Plugin/IPluginConfiguration.cs              |    4 +-
 modules/schema-import-db/README.txt             |    4 -
 modules/schema-import-db/pom.xml                |   55 -
 .../apache/ignite/schema/parser/DbColumn.java   |   88 -
 .../ignite/schema/parser/DbMetadataReader.java  |  147 --
 .../apache/ignite/schema/parser/DbTable.java    |   82 -
 .../parser/dialect/DB2MetadataDialect.java      |   33 -
 .../parser/dialect/DatabaseMetadataDialect.java |  102 -
 .../parser/dialect/JdbcMetadataDialect.java     |  199 --
 .../parser/dialect/MySQLMetadataDialect.java    |   82 -
 .../parser/dialect/OracleMetadataDialect.java   |  360 ---
 modules/schema-import/README.txt                |  216 --
 modules/schema-import/pom.xml                   |  119 -
 .../main/java/media/data_connection_48x48.png   |  Bin 4443 -> 0 bytes
 .../src/main/java/media/error_48x48.png         |  Bin 4349 -> 0 bytes
 .../src/main/java/media/ignite_128x128.png      |  Bin 4917 -> 0 bytes
 .../src/main/java/media/ignite_16x16.png        |  Bin 608 -> 0 bytes
 .../src/main/java/media/ignite_24x24.png        |  Bin 930 -> 0 bytes
 .../src/main/java/media/ignite_32x32.png        |  Bin 1203 -> 0 bytes
 .../src/main/java/media/ignite_48x48.png        |  Bin 1868 -> 0 bytes
 .../src/main/java/media/ignite_64x64.png        |  Bin 2453 -> 0 bytes
 .../src/main/java/media/information_48x48.png   |  Bin 4102 -> 0 bytes
 .../src/main/java/media/question_48x48.png      |  Bin 3857 -> 0 bytes
 .../src/main/java/media/sign_warning_48x48.png  |  Bin 2988 -> 0 bytes
 .../schema-import/src/main/java/media/style.css |  134 --
 .../src/main/java/media/text_tree_48x48.png     |  Bin 2567 -> 0 bytes
 .../ignite/schema/generator/CodeGenerator.java  |  831 -------
 .../ignite/schema/generator/GeneratorUtils.java |   70 -
 .../ignite/schema/generator/XmlGenerator.java   |  446 ----
 .../ignite/schema/model/PojoDescriptor.java     |  497 ----
 .../apache/ignite/schema/model/PojoField.java   |  461 ----
 .../ignite/schema/model/SchemaDescriptor.java   |   62 -
 .../schema/parser/DatabaseMetadataParser.java   |  115 -
 .../ignite/schema/ui/ConfirmCallable.java       |   83 -
 .../org/apache/ignite/schema/ui/Controls.java   |  697 ------
 .../org/apache/ignite/schema/ui/GridPaneEx.java |  180 --
 .../org/apache/ignite/schema/ui/MessageBox.java |  274 ---
 .../apache/ignite/schema/ui/ModalDialog.java    |   50 -
 .../ignite/schema/ui/SchemaImportApp.java       | 2115 ------------------
 .../ignite/schema/ui/TextColumnValidator.java   |   32 -
 .../schema/test/AbstractSchemaImportTest.java   |  181 --
 .../test/generator/CodeGeneratorTest.java       |   81 -
 .../schema/test/generator/XmlGeneratorTest.java |   42 -
 .../ignite/schema/test/model/CacheConfig.txt    |  409 ----
 .../apache/ignite/schema/test/model/Objects.txt |  531 -----
 .../ignite/schema/test/model/ObjectsKey.txt     |   96 -
 .../ignite/schema/test/model/Primitives.txt     |  535 -----
 .../ignite/schema/test/model/PrimitivesKey.txt  |   96 -
 .../org/apache/ignite/schema/test/model/Tst.txt |  535 -----
 .../apache/ignite/schema/test/model/TstKey.txt  |   96 -
 .../schema/test/model/ignite-type-metadata.xml  |  666 ------
 .../test/parser/DbMetadataParserTest.java       |  134 --
 .../testsuites/IgniteSchemaImportTestSuite.java |   42 -
 .../ignite/internal/GridFactorySelfTest.java    |    3 +
 modules/web-console/web-agent/pom.xml           |   12 -
 .../ignite/console/agent/db/DbColumn.java       |   88 +
 .../console/agent/db/DbMetadataReader.java      |  142 ++
 .../apache/ignite/console/agent/db/DbTable.java |   82 +
 .../agent/db/dialect/DB2MetadataDialect.java    |   33 +
 .../db/dialect/DatabaseMetadataDialect.java     |  102 +
 .../agent/db/dialect/JdbcMetadataDialect.java   |  199 ++
 .../agent/db/dialect/MySQLMetadataDialect.java  |   82 +
 .../agent/db/dialect/OracleMetadataDialect.java |  359 +++
 .../agent/handlers/DatabaseListener.java        |   20 +-
 .../dml/IgniteSqlDeleteFilteredBenchmark.java   |    5 +-
 .../dml/IgniteSqlUpdateFilteredBenchmark.java   |    5 +-
 pom.xml                                         |  121 -
 158 files changed, 1879 insertions(+), 13246 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/assembly/dependencies-fabric.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/main/java/org/apache/ignite/configuration/NearCacheConfiguration.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
index 46a9899,f1ef625..9c67b56
--- 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
@@@ -79,6 -67,11 +79,9 @@@ import org.apache.ignite.spi.discovery.
  import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
  import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder;
  import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+ import org.apache.ignite.spi.eventstorage.EventStorageSpi;
+ import org.apache.ignite.spi.eventstorage.NoopEventStorageSpi;
+ import org.apache.ignite.spi.eventstorage.memory.MemoryEventStorageSpi;
 -import org.apache.ignite.spi.swapspace.SwapSpaceSpi;
 -import org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi;
  import org.apache.ignite.transactions.TransactionConcurrency;
  import org.apache.ignite.transactions.TransactionIsolation;
  
@@@ -598,6 -654,39 +601,18 @@@ public class PlatformConfigurationUtil
              cfg.setTransactionConfiguration(tx);
          }
  
 -        byte swapType = in.readByte();
 -
 -        switch (swapType) {
 -            case SWAP_TYP_FILE: {
 -                FileSwapSpaceSpi swap = new FileSwapSpaceSpi();
 -
 -                swap.setBaseDirectory(in.readString());
 -                swap.setMaximumSparsity(in.readFloat());
 -                swap.setMaxWriteQueueSize(in.readInt());
 -                swap.setReadStripesNumber(in.readInt());
 -                swap.setWriteBufferSize(in.readInt());
 -
 -                cfg.setSwapSpaceSpi(swap);
 -
 -                break;
 -            }
 -
 -            default:
 -                assert swapType == SWAP_TYP_NONE;
 -        }
 -
+         switch (in.readByte()) {
+             case 1:
+                 cfg.setEventStorageSpi(new NoopEventStorageSpi());
+                 break;
+ 
+             case 2:
+                 cfg.setEventStorageSpi(new MemoryEventStorageSpi()
+                         .setExpireCount(in.readLong())
+                         .setExpireAgeMs(in.readLong()));
+                 break;
+         }
+ 
          readPluginConfiguration(cfg, in);
      }
  
@@@ -1001,6 -1113,36 +1016,19 @@@
          else
              w.writeBoolean(false);
  
 -        SwapSpaceSpi swap = cfg.getSwapSpaceSpi();
 -
 -        if (swap instanceof FileSwapSpaceSpi) {
 -            w.writeByte(SWAP_TYP_FILE);
 -
 -            FileSwapSpaceSpi fileSwap = (FileSwapSpaceSpi)swap;
 -
 -            w.writeString(fileSwap.getBaseDirectory());
 -            w.writeFloat(fileSwap.getMaximumSparsity());
 -            w.writeInt(fileSwap.getMaxWriteQueueSize());
 -            w.writeInt(fileSwap.getReadStripesNumber());
 -            w.writeInt(fileSwap.getWriteBufferSize());
 -        }
 -        else {
 -            w.writeByte(SWAP_TYP_NONE);
 -        }
 -
+         EventStorageSpi eventStorageSpi = cfg.getEventStorageSpi();
+ 
+         if (eventStorageSpi == null) {
+             w.writeByte((byte) 0);
+         } else if (eventStorageSpi instanceof NoopEventStorageSpi) {
+             w.writeByte((byte) 1);
+         } else if (eventStorageSpi instanceof MemoryEventStorageSpi) {
+             w.writeByte((byte) 2);
+ 
+             w.writeLong(((MemoryEventStorageSpi)eventStorageSpi).getExpireCount());
+             w.writeLong(((MemoryEventStorageSpi)eventStorageSpi).getExpireAgeMs());
+         }
+ 
          w.writeString(cfg.getIgniteHome());
  
          w.writeLong(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getInit());

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorIgfsConfiguration.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsCachePerBlockLruEvictionPolicySelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/EventsTest.cs
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
----------------------------------------------------------------------
diff --cc modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
index 58fda7c,1d39e69..89e0d3d
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
@@@ -769,7 -794,20 +775,12 @@@ namespace Apache.Ignite.Core.Test
                  SpringConfigUrl = "test",
                  Logger = new IgniteNLogLogger(),
                  FailureDetectionTimeout = TimeSpan.FromMinutes(2),
-                 PluginConfigurations = new[] {new TestIgnitePluginConfiguration() }
 -                SwapSpaceSpi = new FileSwapSpaceSpi
 -                {
 -                    MaximumSparsity = 0.1f,
 -                    MaximumWriteQueueSize = 55,
 -                    WriteBufferSize = 66,
 -                    ReadStripesNumber = 77,
 -                    BaseDirectory = "test"
 -                },
+                 PluginConfigurations = new[] {new TestIgnitePluginConfiguration() },
+                 EventStorageSpi = new MemoryEventStorageSpi
+                 {
+                     ExpirationTimeout = TimeSpan.FromMilliseconds(12345),
+                     MaxEventCount = 257
+                 }
              };
          }
  

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
----------------------------------------------------------------------
diff --cc modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
index 8358f69,f9f8a61..f642976
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
@@@ -80,6 -82,8 +80,7 @@@ namespace Apache.Ignite.Core.Test
              CheckDefaultValueAttributes(new LruEvictionPolicy());
              CheckDefaultValueAttributes(new AtomicConfiguration());
              CheckDefaultValueAttributes(new TransactionConfiguration());
 -            CheckDefaultValueAttributes(new FileSwapSpaceSpi());
+             CheckDefaultValueAttributes(new MemoryEventStorageSpi());
          }
  
          /// <summary>
@@@ -182,8 -194,18 +183,15 @@@
                  Assert.AreEqual("affKey", typ.AffinityKeyFieldName);
                  Assert.AreEqual(false, typ.KeepDeserialized);
  
 -                CollectionAssert.AreEqual(new[] {"fld1", "fld2"},
 -                    ((BinaryFieldEqualityComparer)typ.EqualityComparer).FieldNames);
 -
                  Assert.IsNotNull(resCfg.PluginConfigurations);
                  Assert.AreEqual(cfg.PluginConfigurations, resCfg.PluginConfigurations);
+ 
+                 var eventCfg = cfg.EventStorageSpi as MemoryEventStorageSpi;
+                 var resEventCfg = resCfg.EventStorageSpi as MemoryEventStorageSpi;
+                 Assert.IsNotNull(eventCfg);
+                 Assert.IsNotNull(resEventCfg);
+                 Assert.AreEqual(eventCfg.ExpirationTimeout, resEventCfg.ExpirationTimeout);
+                 Assert.AreEqual(eventCfg.MaxEventCount, resEventCfg.MaxEventCount);
              }
          }
  

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
----------------------------------------------------------------------
diff --cc modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
index 1a758ce,6553f1a..b52f968
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
@@@ -91,7 -91,12 +91,11 @@@
      <Reference Include="System.Xml" />
    </ItemGroup>
    <ItemGroup>
 -    <Compile Include="Binary\BinaryArrayEqualityComparer.cs" />
      <Compile Include="Common\ExceptionFactory.cs" />
+     <Compile Include="Events\IEventStorageSpi.cs" />
+     <Compile Include="Events\MemoryEventStorageSpi.cs" />
+     <Compile Include="Events\NoopEventStorageSpi.cs" />
+     <Compile Include="Impl\Binary\BinaryFieldEqualityComparer.cs" />
      <Compile Include="Binary\BinaryReflectiveSerializer.cs" />
      <Compile Include="Common\JavaException.cs" />
      <Compile Include="DataStructures\Configuration\Package-Info.cs" />

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
----------------------------------------------------------------------
diff --cc modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
index a3f5daf,20e2be8..c40fc6e
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
@@@ -319,7 -346,36 +320,33 @@@ namespace Apache.Ignite.Cor
              else
                  writer.WriteBoolean(false);
  
-             // Plugins
 -            // Swap space
 -            SwapSpaceSerializer.Write(writer, SwapSpaceSpi);
 -
+             // Event storage
+             if (EventStorageSpi == null)
+             {
+                 writer.WriteByte(0);
+             }
+             else if (EventStorageSpi is NoopEventStorageSpi)
+             {
+                 writer.WriteByte(1);
+             }
+             else
+             {
+                 var memEventStorage = EventStorageSpi as MemoryEventStorageSpi;
+ 
+                 if (memEventStorage == null)
+                 {
+                     throw new IgniteException(string.Format(
+                         "Unsupported IgniteConfiguration.EventStorageSpi: '{0}'. " +
+                         "Supported implementations: '{1}', '{2}'.",
+                         EventStorageSpi.GetType(), typeof(NoopEventStorageSpi), typeof(MemoryEventStorageSpi)));
+                 }
+ 
+                 writer.WriteByte(2);
+ 
+                 memEventStorage.Write(writer);
+             }
+ 
+             // Plugins (should be last)
              if (PluginConfigurations != null)
              {
                  var pos = writer.Stream.Position;
@@@ -433,6 -508,20 +460,17 @@@
                      PessimisticTransactionLogLinger = TimeSpan.FromMilliseconds(r.ReadInt())
                  };
              }
+ 
 -            // Swap
 -            SwapSpaceSpi = SwapSpaceSerializer.Read(r);
 -
+             // Event storage
+             switch (r.ReadByte())
+             {
+                 case 1: EventStorageSpi = new NoopEventStorageSpi();
+                     break;
+ 
+                 case 2:
+                     EventStorageSpi = MemoryEventStorageSpi.Read(r);
+                     break;
+             }
          }
  
          /// <summary>
@@@ -867,5 -961,13 +905,13 @@@
          /// </summary>
          [SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
          public ICollection<IPluginConfiguration> PluginConfigurations { get; set; }
+ 
+         /// <summary>
+         /// Gets or sets the event storage interface.
+         /// <para />
 -        /// Only predefined implementations are supported: 
++        /// Only predefined implementations are supported:
+         /// <see cref="NoopEventStorageSpi"/>, <see cref="MemoryEventStorageSpi"/>.
+         /// </summary>
+         public IEventStorageSpi EventStorageSpi { get; set; }
      }
  }

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
----------------------------------------------------------------------
diff --cc modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
index f041a8f,3691aa0..569925f
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
@@@ -1139,6 -1171,65 +1139,28 @@@
                          </xs:attribute>
                      </xs:complexType>
                  </xs:element>
 -                <xs:element name="swapSpaceSpi" minOccurs="0">
 -                    <xs:annotation>
 -                        <xs:documentation>Swap space SPI.</xs:documentation>
 -                    </xs:annotation>
 -                    <xs:complexType>
 -                        <xs:attribute name="type" type="xs:string" use="required">
 -                            <xs:annotation>
 -                                <xs:documentation>Assembly-qualified type name.</xs:documentation>
 -                            </xs:annotation>
 -                        </xs:attribute>
 -                        <xs:attribute name="baseDirectory" type="xs:string">
 -                            <xs:annotation>
 -                                <xs:documentation>Base directory.</xs:documentation>
 -                            </xs:annotation>
 -                        </xs:attribute>
 -                        <xs:attribute name="maximumSparsity" type="xs:decimal">
 -                            <xs:annotation>
 -                                <xs:documentation>Maximum sparsity. This property defines maximum acceptable wasted file space to whole file size ratio. When this ratio becomes higher than specified number compacting thread starts working.</xs:documentation>
 -                            </xs:annotation>
 -                        </xs:attribute>
 -                        <xs:attribute name="maximumWriteQueueSize" type="xs:int">
 -                            <xs:annotation>
 -                                <xs:documentation>Maximum size of the write queue in bytes. If there are more values are waiting to be written to disk then specified size, SPI will block on write operation.</xs:documentation>
 -                            </xs:annotation>
 -                        </xs:attribute>
 -                        <xs:attribute name="readStripesNumber" type="xs:int">
 -                            <xs:annotation>
 -                                <xs:documentation>Read stripes number. Defines number of file channels to be used concurrently. Defaults to Environment.ProcessorCount.</xs:documentation>
 -                            </xs:annotation>
 -                        </xs:attribute>
 -                        <xs:attribute name="writeBufferSize" type="xs:int">
 -                            <xs:annotation>
 -                                <xs:documentation>Size of the write buffer, in bytes. Write to disk occurs only when this buffer is full.</xs:documentation>
 -                            </xs:annotation>
 -                        </xs:attribute>
 -                    </xs:complexType>
 -                </xs:element>
+                 <xs:element name="eventStorageSpi" minOccurs="0">
+                     <xs:annotation>
+                         <xs:documentation>Event storage space SPI.</xs:documentation>
+                     </xs:annotation>
+                     <xs:complexType>
+                         <xs:attribute name="type" type="xs:string" use="required">
+                             <xs:annotation>
+                                 <xs:documentation>Assembly-qualified type name.</xs:documentation>
+                             </xs:annotation>
+                         </xs:attribute>
+                         <xs:attribute name="expirationTimeout" type="xs:string">
+                             <xs:annotation>
+                                 <xs:documentation>Expiration timeout for stored events. Negative for unlimited.</xs:documentation>
+                             </xs:annotation>
+                         </xs:attribute>
+                         <xs:attribute name="maxEventCount" type="xs:long">
+                             <xs:annotation>
+                                 <xs:documentation>Maximum event count to store.</xs:documentation>
+                             </xs:annotation>
+                         </xs:attribute>
+                     </xs:complexType>
+                 </xs:element>
                  <xs:element name="pluginConfigurations" minOccurs="0">
                      <xs:annotation>
                          <xs:documentation>Plugin configurations.</xs:documentation>

http://git-wip-us.apache.org/repos/asf/ignite/blob/2210635a/pom.xml
----------------------------------------------------------------------