This is an automated email from the ASF dual-hosted git repository. eshu11 pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push: new d429c0c GEODE-5702: Rethrows a specific TransactionExeption instead wrapped to a new TransactionException. (#2430) d429c0c is described below commit d429c0c3fbd5597e5ee9232460128dca53d127a7 Author: pivotal-eshu <e...@pivotal.io> AuthorDate: Thu Sep 6 14:19:34 2018 -0700 GEODE-5702: Rethrows a specific TransactionExeption instead wrapped to a new TransactionException. (#2430) --- .../cache/tx/AbstractPeerTXRegionStub.java | 32 +++++---- .../cache/tx/AbstractPeerTXRegionStubTest.java | 82 +++++++++++++++++++--- 2 files changed, 91 insertions(+), 23 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/AbstractPeerTXRegionStub.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/AbstractPeerTXRegionStub.java index 1a8b0bb..c6a8d1c 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/AbstractPeerTXRegionStub.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/AbstractPeerTXRegionStub.java @@ -42,15 +42,17 @@ public abstract class AbstractPeerTXRegionStub implements TXRegionStub { RemoteFetchKeysMessage.FetchKeysResponse response = RemoteFetchKeysMessage.send((LocalRegion) getRegion(), state.getTarget()); return response.waitForKeys(); - } catch (RegionDestroyedException e) { + } catch (RegionDestroyedException regionDestroyedException) { throw new TransactionDataNotColocatedException( LocalizedStrings.RemoteMessage_REGION_0_NOT_COLOCATED_WITH_TRANSACTION - .toLocalizedString(e.getRegionFullPath()), - e); - } catch (CacheClosedException e) { + .toLocalizedString(regionDestroyedException.getRegionFullPath()), + regionDestroyedException); + } catch (CacheClosedException cacheClosedException) { throw new TransactionDataNodeHasDepartedException("Cache was closed while fetching keys"); - } catch (Exception e) { - throw new TransactionException(e); + } catch (TransactionException transactionException) { + throw transactionException; + } catch (Exception exception) { + throw new TransactionException(exception); } } @@ -60,16 +62,18 @@ public abstract class AbstractPeerTXRegionStub implements TXRegionStub { RemoteSizeMessage.SizeResponse response = RemoteSizeMessage.send(this.state.getTarget(), getRegion()); return response.waitForSize(); - } catch (RegionDestroyedException rde) { + } catch (RegionDestroyedException regionDestroyedException) { throw new TransactionDataNotColocatedException( LocalizedStrings.RemoteMessage_REGION_0_NOT_COLOCATED_WITH_TRANSACTION - .toLocalizedString(rde.getRegionFullPath()), - rde); - } catch (Exception e) { - throw new TransactionException(e); + .toLocalizedString(regionDestroyedException.getRegionFullPath()), + regionDestroyedException); + } catch (CacheClosedException cacheClosedException) { + throw new TransactionDataNodeHasDepartedException( + "Cache was closed while performing size operation"); + } catch (TransactionException transactionException) { + throw transactionException; + } catch (Exception exception) { + throw new TransactionException(exception); } } - - - } diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tx/AbstractPeerTXRegionStubTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tx/AbstractPeerTXRegionStubTest.java index aa3cbc8..018297f 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/cache/tx/AbstractPeerTXRegionStubTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tx/AbstractPeerTXRegionStubTest.java @@ -35,6 +35,8 @@ import org.apache.geode.cache.Region.Entry; import org.apache.geode.cache.RegionDestroyedException; import org.apache.geode.cache.TransactionDataNodeHasDepartedException; import org.apache.geode.cache.TransactionDataNotColocatedException; +import org.apache.geode.cache.TransactionException; +import org.apache.geode.distributed.DistributedMember; import org.apache.geode.distributed.internal.ClusterDistributionManager; import org.apache.geode.distributed.internal.InternalDistributedSystem; import org.apache.geode.distributed.internal.ReplyException; @@ -107,11 +109,6 @@ public class AbstractPeerTXRegionStubTest { } @Override - public int entryCount() { - return 0; - } - - @Override public void postPutAll(DistributedPutAllOperation putallOp, VersionedObjectList successfulPuts, InternalRegion region) {} @@ -142,6 +139,8 @@ public class AbstractPeerTXRegionStubTest { state = mock(TXStateStub.class); region = mock(LocalRegion.class); txrStub = new TestingAbstractPeerTXRegionStub(state, region); + + when(state.getTarget()).thenReturn(mock(DistributedMember.class)); } @After @@ -158,14 +157,13 @@ public class AbstractPeerTXRegionStubTest { txrStub.getRegionKeysForIteration(); fail( - "AbstractPeerTXRegionStub expected to transalate CacheClosedException to TransactionDataNodeHasDepartedException "); + "AbstractPeerTXRegionStub expected to translate CacheClosedException to TransactionDataNodeHasDepartedException "); } @Test public void getRegionKeysForIterationTranslatesRemoteOperationException() { expectedException.expect(TransactionDataNodeHasDepartedException.class); - InternalDistributedSystem system = mock(InternalDistributedSystem.class); ClusterDistributionManager manager = mock(ClusterDistributionManager.class); when(system.getDistributionManager()).thenReturn(manager); @@ -183,7 +181,7 @@ public class AbstractPeerTXRegionStubTest { spy.waitForKeys(); fail( - "Expected to transalate RemoteOperationException.CacheClosedException to TransactionDataNodeHasDepartedException "); + "Expected to translate RemoteOperationException.CacheClosedException to TransactionDataNodeHasDepartedException "); } @Test @@ -197,7 +195,73 @@ public class AbstractPeerTXRegionStubTest { txrStub.getRegionKeysForIteration(); fail( - "AbstractPeerTXRegionStub expected to transalate CacheClosedException to TransactionDataNodeHasDepartedException "); + "AbstractPeerTXRegionStub expected to translate CacheClosedException to TransactionDataNodeHasDepartedException "); + } + + @Test + public void getRegionKeysForIterationRethrowTransactionException() { + expectedException.expect(TransactionDataNodeHasDepartedException.class); + + when((region).getSystem()).thenThrow(TransactionDataNodeHasDepartedException.class); + + txrStub.getRegionKeysForIteration(); + fail( + "AbstractPeerTXRegionStub expected to rethrow TransactionDataNodeHasDepartedException "); + } + + @Test + public void getRegionKeysForIterationTranslatesRuntimeException() { + expectedException.expect(TransactionException.class); + + when((region).getSystem()).thenThrow(new RuntimeException()); + + txrStub.getRegionKeysForIteration(); + fail( + "AbstractPeerTXRegionStub expected to translate RuntimeException to TransactionException "); + } + + @Test + public void entryCountTranslatesCacheClosedException() { + expectedException.expect(TransactionDataNodeHasDepartedException.class); + + when((region).getSystem()).thenThrow(CacheClosedException.class); + + txrStub.entryCount(); + fail( + "AbstractPeerTXRegionStub expected to translate CacheClosedException to TransactionDataNodeHasDepartedException "); + } + + @Test + public void entryCountTranslatesRegionDestroyedException() { + expectedException.expect(TransactionDataNotColocatedException.class); + + when((region).getSystem()).thenThrow(RegionDestroyedException.class); + + txrStub.entryCount(); + fail( + "AbstractPeerTXRegionStub expected to translate CacheClosedException to TransactionDataNodeHasDepartedException "); + } + + @Test + public void entryCountRethrowTransactionException() { + expectedException.expect(TransactionDataNodeHasDepartedException.class); + + when((region).getSystem()).thenThrow(TransactionDataNodeHasDepartedException.class); + + txrStub.entryCount(); + fail( + "AbstractPeerTXRegionStub expected to rethrow TransactionDataNodeHasDepartedException "); + } + + @Test + public void entryCountTranslatesRuntimeException() { + expectedException.expect(TransactionException.class); + + when((region).getSystem()).thenThrow(new RuntimeException()); + + txrStub.entryCount(); + fail( + "AbstractPeerTXRegionStub expected to translate RuntimeException to TransactionException "); } }