You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by is...@apache.org on 2018/10/09 14:47:20 UTC

[05/21] ignite git commit: Merge branch 'ignite-2.7' into ignite-2.7-master

Merge branch 'ignite-2.7' into ignite-2.7-master


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

Branch: refs/heads/ignite-2.7-master
Commit: a35dac25c996e3fd6ddbe159217d50d5218c30a7
Parents: 60a8c8c beb7eb0
Author: devozerov <vo...@gridgain.com>
Authored: Thu Oct 4 11:33:10 2018 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Thu Oct 4 11:33:10 2018 +0300

----------------------------------------------------------------------
 DEVNOTES.txt                                    |  14 +-
 README.txt                                      |   4 +-
 RELEASE_NOTES.txt                               |  76 ++---
 bin/ignite.bat                                  |  48 ++-
 bin/ignite.sh                                   |  37 +-
 bin/include/functions.sh                        |   5 -
 doap_Ignite.rdf                                 |   4 +-
 .../JdbcThinConnectionMvccEnabledSelfTest.java  |   8 +-
 .../jdbc/thin/JdbcThinTransactionsSelfTest.java |   4 +-
 ...ThinTransactionsWithMvccEnabledSelfTest.java |  15 +-
 .../ignite/codegen/MessageCodeGenerator.java    |   1 +
 .../communication/GridIoMessageFactory.java     |  10 +-
 .../processors/cache/CacheInvokeEntry.java      |  45 ++-
 .../processors/cache/GridCacheEntryEx.java      |  10 +
 .../processors/cache/GridCacheMapEntry.java     | 108 +++++-
 .../processors/cache/GridCacheProcessor.java    |  33 ++
 .../cache/GridCacheUpdateTxResult.java          |  27 +-
 .../cache/IgniteCacheOffheapManager.java        |  11 +-
 .../cache/IgniteCacheOffheapManagerImpl.java    | 104 +++++-
 .../dht/GridDhtTxAbstractEnlistFuture.java      |  35 +-
 .../distributed/dht/GridDhtTxEnlistFuture.java  |  22 +-
 .../dht/GridDhtTxQueryEnlistRequest.java        |   8 +-
 .../cache/distributed/dht/GridDhtTxRemote.java  |  18 +-
 .../cache/distributed/dht/GridInvokeValue.java  | 186 ++++++++++
 .../dht/GridPartitionedGetFuture.java           |   3 +-
 .../dht/GridPartitionedSingleGetFuture.java     |   3 +-
 .../dht/colocated/GridDhtColocatedCache.java    |   5 +-
 .../near/GridNearTxEnlistFuture.java            |  19 +-
 .../near/GridNearTxEnlistRequest.java           |  35 +-
 .../cache/distributed/near/GridNearTxLocal.java |  55 +--
 .../cache/mvcc/MvccProcessorImpl.java           |  31 +-
 .../persistence/GridCacheOffheapManager.java    |   5 +-
 .../cache/tree/mvcc/data/MvccUpdateDataRow.java |  29 +-
 .../cache/tree/mvcc/data/MvccUpdateResult.java  |   7 +
 .../cache/tree/mvcc/data/ResultType.java        |   4 +-
 .../processors/query/EnlistOperation.java       |  11 +-
 .../AuthenticationProcessorNodeRestartTest.java | 340 +++++++++----------
 .../cache/GridCacheAbstractMetricsSelfTest.java |  46 +--
 .../processors/cache/GridCacheTestEntryEx.java  |   8 +-
 .../IgniteCacheTxIteratorSelfTest.java          |   2 +-
 .../cache/mvcc/CacheMvccAbstractTest.java       |  10 +-
 .../CacheMvccConfigurationValidationTest.java   | 287 +++++++---------
 .../cache/mvcc/CacheMvccTransactionsTest.java   |  87 ++++-
 .../persistence/wal/aware/SegmentAwareTest.java |  38 +++
 .../DataStreamProcessorMvccSelfTest.java        |  40 +--
 ...sactionsCommandsWithMvccEnabledSelfTest.java |  27 --
 .../mvcc/CacheMvccSqlQueriesAbstractTest.java   |   2 +-
 .../mvcc/MvccRepeatableReadBulkOpsTest.java     | 261 ++++++++++++--
 .../mvcc/MvccRepeatableReadOperationsTest.java  |  42 ++-
 .../ignite/mesos/resource/IgniteProvider.java   |   4 +-
 modules/platforms/cpp/core/namespaces.dox       |   2 +-
 .../Cache/DataRegionMetricsTest.cs              |   2 +-
 .../Cache/MemoryMetricsTest.cs                  |   2 +-
 .../rest/protocols/http/jetty/rest.html         |   4 +-
 .../org/apache/ignite/yarn/IgniteProvider.java  |   6 +-
 parent/pom.xml                                  |   4 +-
 56 files changed, 1548 insertions(+), 706 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/a35dac25/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/aware/SegmentAwareTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/aware/SegmentAwareTest.java
index 0869356,c1948c7..b50c9eb
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/aware/SegmentAwareTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/aware/SegmentAwareTest.java
@@@ -31,47 -31,46 +31,85 @@@ import static org.junit.Assert.assertTh
   * Test for {@link SegmentAware}.
   */
  public class SegmentAwareTest extends TestCase {
+     /**
+      * Checking to avoid deadlock SegmentArchivedStorage.markAsMovedToArchive -> SegmentLockStorage.locked <->
+      * SegmentLockStorage.releaseWorkSegment -> SegmentArchivedStorage.onSegmentUnlocked
+      *
+      * @throws IgniteCheckedException if failed.
+      */
+     public void testAvoidDeadlockArchiverAndLockStorage() throws IgniteCheckedException {
+         SegmentAware aware = new SegmentAware(10);
+ 
+         int iterationCnt = 100_000;
+         int segmentToHandle = 1;
+ 
+         IgniteInternalFuture archiverThread = GridTestUtils.runAsync(() -> {
+             int i = iterationCnt;
+ 
+             while (i-- > 0) {
+                 try {
+                     aware.markAsMovedToArchive(segmentToHandle);
+                 }
+                 catch (IgniteInterruptedCheckedException e) {
+                     throw new RuntimeException(e);
+                 }
+             }
+         });
+ 
+         IgniteInternalFuture lockerThread = GridTestUtils.runAsync(() -> {
+             int i = iterationCnt;
+ 
+             while (i-- > 0) {
+                 aware.lockWorkSegment(segmentToHandle);
+ 
+                 aware.releaseWorkSegment(segmentToHandle);
+             }
+         });
+ 
+         archiverThread.get();
+         lockerThread.get();
+     }
  
      /**
 +     * Checking to avoid deadlock SegmentArchivedStorage.markAsMovedToArchive -> SegmentLockStorage.locked <->
 +     * SegmentLockStorage.releaseWorkSegment -> SegmentArchivedStorage.onSegmentUnlocked
 +     *
 +     * @throws IgniteCheckedException if failed.
 +     */
 +    public void testAvoidDeadlockArchiverAndLockStorage() throws IgniteCheckedException {
 +        SegmentAware aware = new SegmentAware(10, false);
 +
 +        int iterationCnt = 100_000;
 +        int segmentToHandle = 1;
 +
 +        IgniteInternalFuture archiverThread = GridTestUtils.runAsync(() -> {
 +            int i = iterationCnt;
 +
 +            while (i-- > 0) {
 +                try {
 +                    aware.markAsMovedToArchive(segmentToHandle);
 +                }
 +                catch (IgniteInterruptedCheckedException e) {
 +                    throw new RuntimeException(e);
 +                }
 +            }
 +        });
 +
 +        IgniteInternalFuture lockerThread = GridTestUtils.runAsync(() -> {
 +            int i = iterationCnt;
 +
 +            while (i-- > 0) {
 +                aware.lockWorkSegment(segmentToHandle);
 +
 +                aware.releaseWorkSegment(segmentToHandle);
 +            }
 +        });
 +
 +        archiverThread.get();
 +        lockerThread.get();
 +    }
 +
 +    /**
       * Waiting finished when work segment is set.
       */
      public void testFinishAwaitSegment_WhenExactWaitingSegmentWasSet() throws IgniteCheckedException, InterruptedException {