[3/3] ignite git commit: IGNITE-7594 Fixed performance drop after WAL optimization for FSYNC mode by reverting the old implementation - Fixes #3521.

2018-02-19 Thread agoncharuk
IGNITE-7594 Fixed performance drop after WAL optimization for FSYNC mode by 
reverting the old implementation - Fixes #3521.


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

Branch: refs/heads/master
Commit: 1c7b42285f27dbcb5bcc38fe3d7dee8aac5cb873
Parents: 692e488
Author: Ilya Lantukh 
Authored: Mon Feb 19 18:06:56 2018 +0300
Committer: Alexey Goncharuk 
Committed: Mon Feb 19 18:08:56 2018 +0300

--
 .../apache/ignite/IgniteSystemProperties.java   |6 +
 .../configuration/DataStorageConfiguration.java |   11 +-
 .../PersistentStoreConfiguration.java   |7 +-
 .../apache/ignite/configuration/WALMode.java|   15 +-
 .../internal/pagemem/wal/record/WALRecord.java  |   19 +-
 .../processors/cache/GridCacheProcessor.java|   10 +-
 .../wal/AbstractWalRecordsIterator.java |   83 +-
 .../wal/FileWriteAheadLogManager.java   |  107 +-
 .../wal/FsyncModeFileWriteAheadLogManager.java  | 3142 ++
 .../SingleSegmentLogicalRecordsIterator.java|   12 +-
 .../reader/StandaloneWalRecordsIterator.java|   13 +-
 .../db/wal/IgniteWalFlushDefaultSelfTest.java   |2 +-
 .../db/wal/reader/IgniteWalReaderTest.java  |4 +-
 13 files changed, 3354 insertions(+), 77 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/1c7b4228/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java 
b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 8e72099..b1a1542 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -815,6 +815,12 @@ public final class IgniteSystemProperties {
  * Because other thread may require exactly the same page to be loaded 
from store, reads are protected by locking.
  */
 public static final String IGNITE_DELAYED_REPLACED_PAGE_WRITE = 
"IGNITE_DELAYED_REPLACED_PAGE_WRITE";
+/**
+ * When set to {@code true}, WAL implementation with dedicated worker will 
be used even in FSYNC mode.
+ * Default is {@code false}.
+ */
+public static final String IGNITE_WAL_FSYNC_WITH_DEDICATED_WORKER = 
"IGNITE_WAL_FSYNC_WITH_DEDICATED_WORKER";
+
 
 /**
  * Enforces singleton.

http://git-wip-us.apache.org/repos/asf/ignite/blob/1c7b4228/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
index 8d91503..4a3dbbf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
@@ -120,7 +120,7 @@ public class DataStorageConfiguration implements 
Serializable {
 public static final int DFLT_WAL_SEGMENT_SIZE = 64 * 1024 * 1024;
 
 /** Default wal mode. */
-public static final WALMode DFLT_WAL_MODE = WALMode.DEFAULT;
+public static final WALMode DFLT_WAL_MODE = WALMode.LOG_ONLY;
 
 /** Default thread local buffer size. */
 public static final int DFLT_TLB_SIZE = 128 * 1024;
@@ -686,6 +686,9 @@ public class DataStorageConfiguration implements 
Serializable {
  * @param walMode Wal mode.
  */
 public DataStorageConfiguration setWalMode(WALMode walMode) {
+if (walMode == WALMode.DEFAULT)
+walMode = WALMode.FSYNC;
+
 this.walMode = walMode;
 
 return this;
@@ -755,7 +758,7 @@ public class DataStorageConfiguration implements 
Serializable {
 }
 
 /**
- * Property that allows to trade latency for throughput in {@link 
WALMode#DEFAULT} mode.
+ * Property that allows to trade latency for throughput in {@link 
WALMode#FSYNC} mode.
  * It limits minimum time interval between WAL fsyncs. First thread that 
initiates WAL fsync will wait for
  * this number of nanoseconds, another threads will just wait fsync of 
first thread (similar to CyclicBarrier).
  * Total throughput should increase under load as total WAL fsync rate 
will be limited.
@@ -765,7 +768,7 @@ public class DataStorageConfiguration implements 
Serializable {
 }
 
 /**
- * Sets property that allows to trade latency for throughput in {@link 
WALMode#DEFAULT} mode.
+ * S

[3/3] ignite git commit: IGNITE-7594 Fixed performance drop after WAL optimization for FSYNC mode by reverting the old implementation - Fixes #3521.

2018-02-19 Thread agoncharuk
IGNITE-7594 Fixed performance drop after WAL optimization for FSYNC mode by 
reverting the old implementation - Fixes #3521.

Signed-off-by: Alexey Goncharuk 


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

Branch: refs/heads/ignite-2.4
Commit: b7cc1d745b44f7a0e32333c2716799e2cfac2988
Parents: 2eec607
Author: Ilya Lantukh 
Authored: Mon Feb 19 18:06:56 2018 +0300
Committer: Alexey Goncharuk 
Committed: Mon Feb 19 18:06:56 2018 +0300

--
 .../apache/ignite/IgniteSystemProperties.java   |6 +
 .../configuration/DataStorageConfiguration.java |   11 +-
 .../PersistentStoreConfiguration.java   |7 +-
 .../apache/ignite/configuration/WALMode.java|   15 +-
 .../internal/pagemem/wal/record/WALRecord.java  |   19 +-
 .../processors/cache/GridCacheProcessor.java|   10 +-
 .../wal/AbstractWalRecordsIterator.java |   83 +-
 .../wal/FileWriteAheadLogManager.java   |  107 +-
 .../wal/FsyncModeFileWriteAheadLogManager.java  | 3142 ++
 .../SingleSegmentLogicalRecordsIterator.java|   12 +-
 .../reader/StandaloneWalRecordsIterator.java|   13 +-
 .../db/wal/IgniteWalFlushDefaultSelfTest.java   |2 +-
 .../db/wal/reader/IgniteWalReaderTest.java  |4 +-
 13 files changed, 3354 insertions(+), 77 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/b7cc1d74/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java 
b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 43b718b..383d700 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -792,6 +792,12 @@ public final class IgniteSystemProperties {
  */
 public static final String IGNITE_DIRECT_IO_ENABLED = 
"IGNITE_DIRECT_IO_ENABLED";
 
+/**
+ * When set to {@code true}, WAL implementation with dedicated worker will 
be used even in FSYNC mode.
+ * Default is {@code false}.
+ */
+public static final String IGNITE_WAL_FSYNC_WITH_DEDICATED_WORKER = 
"IGNITE_WAL_FSYNC_WITH_DEDICATED_WORKER";
+
 
 /**
  * Enforces singleton.

http://git-wip-us.apache.org/repos/asf/ignite/blob/b7cc1d74/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
index 8d91503..4a3dbbf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
@@ -120,7 +120,7 @@ public class DataStorageConfiguration implements 
Serializable {
 public static final int DFLT_WAL_SEGMENT_SIZE = 64 * 1024 * 1024;
 
 /** Default wal mode. */
-public static final WALMode DFLT_WAL_MODE = WALMode.DEFAULT;
+public static final WALMode DFLT_WAL_MODE = WALMode.LOG_ONLY;
 
 /** Default thread local buffer size. */
 public static final int DFLT_TLB_SIZE = 128 * 1024;
@@ -686,6 +686,9 @@ public class DataStorageConfiguration implements 
Serializable {
  * @param walMode Wal mode.
  */
 public DataStorageConfiguration setWalMode(WALMode walMode) {
+if (walMode == WALMode.DEFAULT)
+walMode = WALMode.FSYNC;
+
 this.walMode = walMode;
 
 return this;
@@ -755,7 +758,7 @@ public class DataStorageConfiguration implements 
Serializable {
 }
 
 /**
- * Property that allows to trade latency for throughput in {@link 
WALMode#DEFAULT} mode.
+ * Property that allows to trade latency for throughput in {@link 
WALMode#FSYNC} mode.
  * It limits minimum time interval between WAL fsyncs. First thread that 
initiates WAL fsync will wait for
  * this number of nanoseconds, another threads will just wait fsync of 
first thread (similar to CyclicBarrier).
  * Total throughput should increase under load as total WAL fsync rate 
will be limited.
@@ -765,7 +768,7 @@ public class DataStorageConfiguration implements 
Serializable {
 }
 
 /**
- * Sets property that allows to trade latency for throughput in {@link 
WALMode#DEFAULT} mode.
+ * Sets property that allows to trade latency for throughput in {@link 
WALMode#FSYNC} mode.
  * It l