This is an automated email from the ASF dual-hosted git repository. khowe 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 0ccf9fa GEODE-3299: throw CacheClosedException in FunctionContext.getCache() (#975) 0ccf9fa is described below commit 0ccf9fab8c7ccf109b91f17272c9e29f0854545e Author: Kenneth Howe <kh...@pivotal.io> AuthorDate: Wed Oct 25 13:43:14 2017 -0700 GEODE-3299: throw CacheClosedException in FunctionContext.getCache() (#975) * GEODE-3299: throw CacheClosedException when FunctionContext.getCache() == null Gfsh functions handle CacheClosedException, whereas NullPointerExceptions that resulted from returning null are not. * GEODE-3299: Updates to ShowMissingDiskStoresFunction Adjusted test in ShowMissingDiskStoresDUniotTest to expect the exception instead of empty results. Also removed redundant fail() assertions from the tests. --- .../cache/execute/FunctionContextImpl.java | 6 ++++- .../functions/GetRegionDescriptionFunction.java | 2 -- .../functions/ShowMissingDiskStoresFunction.java | 29 +++++++++++----------- .../ShowMissingDiskStoresFunctionJUnitTest.java | 29 ++++------------------ 4 files changed, 24 insertions(+), 42 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionContextImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionContextImpl.java index 5fb52fc..985f12e 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionContextImpl.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionContextImpl.java @@ -15,6 +15,7 @@ package org.apache.geode.internal.cache.execute; import org.apache.geode.cache.Cache; +import org.apache.geode.cache.CacheClosedException; import org.apache.geode.cache.execute.Execution; import org.apache.geode.cache.execute.Function; import org.apache.geode.cache.execute.FunctionContext; @@ -99,7 +100,10 @@ public class FunctionContextImpl implements FunctionContext { } @Override - public Cache getCache() { + public Cache getCache() throws CacheClosedException { + if (cache == null) { + throw new CacheClosedException("FunctionContext does not have a valid Cache"); + } return cache; } diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction.java index 11c3678..afaeac5 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction.java @@ -43,8 +43,6 @@ public class GetRegionDescriptionFunction extends FunctionAdapter implements Int } else { context.getResultSender().lastResult(null); } - } catch (CacheClosedException e) { - context.getResultSender().sendException(e); } catch (Exception e) { context.getResultSender().sendException(e); } diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java index 2a1b746..656c0fd 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java @@ -23,7 +23,6 @@ import org.apache.geode.cache.execute.FunctionAdapter; import org.apache.geode.cache.execute.FunctionContext; import org.apache.geode.distributed.DistributedMember; import org.apache.geode.internal.InternalEntity; -import org.apache.geode.internal.cache.GemFireCacheImpl; import org.apache.geode.internal.cache.InternalCache; import org.apache.geode.internal.cache.PartitionedRegion; import org.apache.geode.internal.cache.partitioned.ColocatedRegionDetails; @@ -65,23 +64,23 @@ public class ShowMissingDiskStoresFunction extends FunctionAdapter implements In } } } + } catch (Exception e) { + context.getResultSender().sendException(e); + } - if (memberMissingIDs.isEmpty() && missingColocatedRegions.isEmpty()) { - context.getResultSender().lastResult(null); - } else { - if (!memberMissingIDs.isEmpty()) { - if (missingColocatedRegions.isEmpty()) { - context.getResultSender().lastResult(memberMissingIDs); - } else { - context.getResultSender().sendResult(memberMissingIDs); - } - } - if (!missingColocatedRegions.isEmpty()) { - context.getResultSender().lastResult(missingColocatedRegions); + if (memberMissingIDs.isEmpty() && missingColocatedRegions.isEmpty()) { + context.getResultSender().lastResult(null); + } else { + if (!memberMissingIDs.isEmpty()) { + if (missingColocatedRegions.isEmpty()) { + context.getResultSender().lastResult(memberMissingIDs); + } else { + context.getResultSender().sendResult(memberMissingIDs); } } - } catch (Exception e) { - context.getResultSender().sendException(e); + if (!missingColocatedRegions.isEmpty()) { + context.getResultSender().lastResult(missingColocatedRegions); + } } } diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunctionJUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunctionJUnitTest.java index 7e6688a..235ae39 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunctionJUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunctionJUnitTest.java @@ -19,7 +19,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.net.InetAddress; -import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -30,7 +29,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.geode.internal.cache.InternalCache; +import org.apache.geode.cache.CacheClosedException; import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.Logger; @@ -42,7 +41,6 @@ import org.junit.experimental.categories.Category; import org.junit.rules.ExpectedException; import org.mockito.ArgumentCaptor; -import org.apache.geode.cache.Cache; import org.apache.geode.cache.PartitionAttributes; import org.apache.geode.cache.execute.FunctionContext; import org.apache.geode.cache.execute.ResultSender; @@ -98,18 +96,13 @@ public class ShowMissingDiskStoresFunctionJUnitTest { } @Test - public void testExecute() { + public void testExecute() throws Exception { List<?> results = null; when(cache.getPersistentMemberManager()).thenReturn(memberManager); smdsFunc.execute(context); - try { - results = resultSender.getResults(); - } catch (Throwable e) { - e.printStackTrace(); - fail("Unexpected exception"); - } + results = resultSender.getResults(); assertNotNull(results); } @@ -118,7 +111,6 @@ public class ShowMissingDiskStoresFunctionJUnitTest { expectedException.expect(RuntimeException.class); smdsFunc.execute(null); - fail("Missing expected RuntimeException"); } /** @@ -126,15 +118,13 @@ public class ShowMissingDiskStoresFunctionJUnitTest { * {@link org.apache.geode.management.internal.cli.functions.ShowMissingDiskStoresFunction#execute(org.apache.geode.cache.execute.FunctionContext)}. */ @Test - public void testExecuteWithNullCacheInstanceHasEmptyResults() throws Throwable { + public void testExecuteWithNullCacheInstanceThrowsCacheClosedException() throws Throwable { + expectedException.expect(CacheClosedException.class); context = new FunctionContextImpl(null, "testFunction", null, resultSender); List<?> results = null; smdsFunc.execute(context); results = resultSender.getResults(); - assertNotNull(results); - assertEquals(1, results.size()); - assertNull(results.get(0)); } @Test @@ -195,8 +185,6 @@ public class ShowMissingDiskStoresFunctionJUnitTest { .equals("/diskStore2")) { assertEquals("/diskStore1", ((PersistentMemberPattern) detailSet.toArray()[1]).getDirectory()); - } else { - fail("Incorrect missing colocated region results"); } } @@ -229,8 +217,6 @@ public class ShowMissingDiskStoresFunctionJUnitTest { assertEquals("child2", ((ColocatedRegionDetails) detailSet.toArray()[1]).getChild()); } else if (((ColocatedRegionDetails) detailSet.toArray()[0]).getChild().equals("child2")) { assertEquals("child1", ((ColocatedRegionDetails) detailSet.toArray()[1]).getChild()); - } else { - fail("Incorrect missing colocated region results"); } } @@ -277,8 +263,6 @@ public class ShowMissingDiskStoresFunctionJUnitTest { .equals("/diskStore2")) { assertEquals("/diskStore1", ((PersistentMemberPattern) detailSet.toArray()[1]).getDirectory()); - } else { - fail("Incorrect missing colocated region results"); } } else if (detailSet.toArray()[0] instanceof ColocatedRegionDetails) { assertEquals(2, detailSet.toArray().length); @@ -293,8 +277,6 @@ public class ShowMissingDiskStoresFunctionJUnitTest { } else { fail("Incorrect missing colocated region results"); } - } else { - fail("Unexpected result type: " + detailSet.toArray()[0].getClass()); } } } @@ -307,7 +289,6 @@ public class ShowMissingDiskStoresFunctionJUnitTest { smdsFunc.execute(context); List<?> results = resultSender.getResults(); - fail("Failed to catch expected RuntimeException"); } @Test -- To stop receiving notification emails like this one, please contact ['"commits@geode.apache.org" <commits@geode.apache.org>'].