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) {
