Repository: geode
Updated Branches:
  refs/heads/develop cfd971338 -> 02adb28c0


GEODE-3178: Fix a flaky JTA test by adding retry.


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

Branch: refs/heads/develop
Commit: 02adb28c09a6d5a05a3458689a4444394966e7fd
Parents: cfd9713
Author: eshu <[email protected]>
Authored: Wed Jul 12 10:48:20 2017 -0700
Committer: eshu <[email protected]>
Committed: Wed Jul 12 10:48:20 2017 -0700

----------------------------------------------------------------------
 .../internal/jta/ClientServerJTADUnitTest.java  | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/02adb28c/geode-core/src/test/java/org/apache/geode/internal/jta/ClientServerJTADUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/jta/ClientServerJTADUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/internal/jta/ClientServerJTADUnitTest.java
index ddf08d0..f888fef 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/jta/ClientServerJTADUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/jta/ClientServerJTADUnitTest.java
@@ -35,6 +35,7 @@ import org.apache.geode.internal.AvailablePortHelper;
 import org.apache.geode.internal.cache.TXManagerImpl;
 import org.apache.geode.internal.cache.TXStateProxyImpl;
 import org.apache.geode.internal.cache.tx.ClientTXStateStub;
+import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.test.dunit.Assert;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.VM;
@@ -96,14 +97,27 @@ public class ClientServerJTADUnitTest extends 
JUnit4CacheTestCase {
       getBlackboard().signalGate(second);
     }
 
+    // GEODE commit apply the tx change to cache before releasing the locks 
held, so
+    // the region could have the new value but still hold the locks.
+    // Add the wait to check new JTA tx can be committed.
     Awaitility.await().pollInterval(10, TimeUnit.MILLISECONDS).pollDelay(10, 
TimeUnit.MILLISECONDS)
-        .atMost(30, TimeUnit.SECONDS).until(() -> 
region.get(key).equals(newValue));
+        .atMost(30, TimeUnit.SECONDS).until(() -> 
ableToCommitNewTx(regionName, mgr));
+  }
+
+  private boolean expectionLogged = false;
 
+  private boolean ableToCommitNewTx(final String regionName, TXManagerImpl 
mgr) {
     try {
-      commitTxWithBeforeCompletion(regionName, false, first, second);
+      commitTxWithBeforeCompletion(regionName, false, null, null);
     } catch (Exception e) {
-      Assert.fail("got unexpected exception", e);
+      if (!expectionLogged) {
+        LogService.getLogger().info("got exception stack trace", e);
+        expectionLogged = true;
+      }
+      mgr.setTXState(null);
+      return false;
     }
+    return true;
   }
 
   private CacheServer createCacheServer(Cache cache, int maxThreads) {

Reply via email to