http://git-wip-us.apache.org/repos/asf/geode/blob/634cbb34/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MemberRegionFunction.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MemberRegionFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MemberRegionFunction.java deleted file mode 100644 index c23bcbe..0000000 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MemberRegionFunction.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.management.internal.cli.functions; - -import org.apache.geode.cache.Cache; -import org.apache.geode.cache.CacheFactory; -import org.apache.geode.cache.execute.Execution; -import org.apache.geode.cache.execute.Function; -import org.apache.geode.cache.execute.FunctionContext; -import org.apache.geode.cache.execute.FunctionException; -import org.apache.geode.cache.execute.FunctionService; -import org.apache.geode.internal.InternalEntity; - - -public class MemberRegionFunction implements Function, InternalEntity { - public static final String ID = MemberRegionFunction.class.getName(); - private static final long serialVersionUID = 1L; - - @Override - public void execute(FunctionContext context) { - Object[] args = (Object[]) context.getArguments(); - String region = (String) args[0]; - String functionId = (String) args[1]; - Cache cache = CacheFactory.getAnyInstance(); - - try { - Function function = FunctionService.getFunction(functionId); - if (function == null) { - context.getResultSender() - .lastResult("For region on a member did not get function " + functionId); - } - Execution execution = FunctionService.onRegion(cache.getRegion(region)); - if (execution == null) { - context.getResultSender().lastResult("For region on a member could not execute"); - } else { - execution.execute(function); - context.getResultSender().lastResult("succeeded in executing on region " + region); - } - - } catch (FunctionException e) { - context.getResultSender() - .lastResult("FunctionException in MemberRegionFunction =" + e.getMessage()); - } catch (Exception e) { - context.getResultSender().lastResult("Exception in MemberRegionFunction =" + e.getMessage()); - } - - } - - @Override - public String getId() { - return MemberRegionFunction.ID; - - } - - @Override - public boolean hasResult() { - return true; - } - - @Override - public boolean optimizeForWrite() { - // no need of optimization since read-only. - return false; - } - - @Override - public boolean isHA() { - return false; - } - -}
http://git-wip-us.apache.org/repos/asf/geode/blob/634cbb34/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MembersForRegionFunction.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MembersForRegionFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MembersForRegionFunction.java index 72d37e7..931e01c 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MembersForRegionFunction.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MembersForRegionFunction.java @@ -21,7 +21,6 @@ import java.util.Map; import org.apache.logging.log4j.Logger; import org.apache.geode.cache.Cache; -import org.apache.geode.cache.CacheFactory; import org.apache.geode.cache.Region; import org.apache.geode.cache.execute.Function; import org.apache.geode.cache.execute.FunctionContext; @@ -29,24 +28,20 @@ import org.apache.geode.internal.InternalEntity; import org.apache.geode.internal.logging.LogService; /** - * * @since GemFire 8.0 */ - public class MembersForRegionFunction implements Function, InternalEntity { private static final Logger logger = LogService.getLogger(); - private static final long serialVersionUID = 8746830191680509335L; - private static final String ID = MembersForRegionFunction.class.getName(); - @Override - public void execute(FunctionContext context) { - Map<String, String> resultMap = new HashMap<String, String>(); + public void execute(final FunctionContext context) { + Map<String, String> resultMap = new HashMap<>(); + try { - Cache cache = CacheFactory.getAnyInstance(); + Cache cache = context.getCache(); String memberNameOrId = cache.getDistributedSystem().getDistributedMember().getId(); - Object args = (Object) context.getArguments(); + Object args = context.getArguments(); String regionName = ((String) args); Region<Object, Object> region = cache.getRegion(regionName); @@ -61,9 +56,10 @@ public class MembersForRegionFunction implements Function, InternalEntity { resultMap.put("", ""); } } + context.getResultSender().lastResult(resultMap); + } catch (Exception ex) { - Cache cache = CacheFactory.getAnyInstance(); logger.info("MembersForRegionFunction exception {}", ex.getMessage(), ex); resultMap.put("", ""); context.getResultSender().lastResult(resultMap); @@ -71,22 +67,17 @@ public class MembersForRegionFunction implements Function, InternalEntity { } @Override - public String getId() { - return MembersForRegionFunction.ID; + public boolean hasResult() { + return true; } @Override - public boolean isHA() { + public boolean optimizeForWrite() { return false; } @Override - public boolean hasResult() { - return true; - } - - @Override - public boolean optimizeForWrite() { + public boolean isHA() { return false; } http://git-wip-us.apache.org/repos/asf/geode/blob/634cbb34/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/NetstatFunction.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/NetstatFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/NetstatFunction.java index 5c1cb29..f054621 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/NetstatFunction.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/NetstatFunction.java @@ -14,7 +14,12 @@ */ package org.apache.geode.management.internal.cli.functions; -import static org.apache.geode.internal.lang.SystemUtils.*; +import static org.apache.geode.internal.lang.SystemUtils.getOsArchitecture; +import static org.apache.geode.internal.lang.SystemUtils.getOsName; +import static org.apache.geode.internal.lang.SystemUtils.getOsVersion; +import static org.apache.geode.internal.lang.SystemUtils.isLinux; +import static org.apache.geode.internal.lang.SystemUtils.isMacOSX; +import static org.apache.geode.internal.lang.SystemUtils.isSolaris; import java.io.BufferedReader; import java.io.IOException; @@ -29,7 +34,6 @@ import org.apache.logging.log4j.Logger; import org.apache.geode.cache.execute.Function; import org.apache.geode.cache.execute.FunctionContext; import org.apache.geode.distributed.DistributedSystem; -import org.apache.geode.distributed.internal.InternalDistributedSystem; import org.apache.geode.internal.InternalEntity; import org.apache.geode.internal.logging.LogService; import org.apache.geode.management.internal.cli.CliUtil; @@ -42,36 +46,26 @@ import org.apache.geode.management.internal.cli.i18n.CliStrings; * * @since GemFire 7.0 */ -@SuppressWarnings({"serial"}) public class NetstatFunction implements Function, InternalEntity { - private static final Logger logger = LogService.getLogger(); private static final long serialVersionUID = 1L; - - public static final NetstatFunction INSTANCE = new NetstatFunction(); - - private static final String ID = NetstatFunction.class.getName(); + private static final Logger logger = LogService.getLogger(); private static final String NETSTAT_COMMAND = "netstat"; private static final String LSOF_COMMAND = "lsof"; @Override - public boolean hasResult() { - return true; - } - - @Override public void execute(final FunctionContext context) { - DistributedSystem ds = InternalDistributedSystem.getConnectedInstance(); + DistributedSystem ds = context.getCache().getDistributedSystem(); if (ds == null || !ds.isConnected()) { return; } String host = ds.getDistributedMember().getHost(); NetstatFunctionArgument args = (NetstatFunctionArgument) context.getArguments(); - boolean withlsof = args.isWithlsof(); + boolean withLsof = args.isWithLsof(); String lineSeparator = args.getLineSeparator(); - String netstatOutput = executeCommand(lineSeparator, withlsof); + String netstatOutput = executeCommand(lineSeparator, withLsof); StringBuilder netstatInfo = new StringBuilder(); @@ -84,6 +78,21 @@ public class NetstatFunction implements Function, InternalEntity { context.getResultSender().lastResult(result); } + @Override + public boolean hasResult() { + return true; + } + + @Override + public boolean optimizeForWrite() { + return false; + } + + @Override + public boolean isHA() { + return false; + } + private static void addMemberHostHeader(final StringBuilder netstatInfo, final String id, final String host, final String lineSeparator) { @@ -91,7 +100,7 @@ public class NetstatFunction implements Function, InternalEntity { StringBuilder memberPlatFormInfo = new StringBuilder(); memberPlatFormInfo.append(CliStrings.format(CliStrings.NETSTAT__MSG__FOR_HOST_1_OS_2_MEMBER_0, - new Object[] {id, host, osInfo, lineSeparator})); + id, host, osInfo, lineSeparator)); int nameIdLength = Math.max(Math.max(id.length(), host.length()), osInfo.length()) * 2; @@ -126,24 +135,27 @@ public class NetstatFunction implements Function, InternalEntity { } ProcessBuilder processBuilder = new ProcessBuilder(cmdOptionsList); + Process netstat = null; try { - Process netstat = processBuilder.start(); - + netstat = processBuilder.start(); InputStream is = netstat.getInputStream(); - BufferedReader breader = new BufferedReader(new InputStreamReader(is)); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is)); String line; - while ((line = breader.readLine()) != null) { + while ((line = bufferedReader.readLine()) != null) { netstatInfo.append(line).append(lineSeparator); } - // TODO: move to finally-block - netstat.destroy(); } catch (IOException e) { // TODO: change this to keep the full stack trace netstatInfo.append(CliStrings.format(CliStrings.NETSTAT__MSG__COULD_NOT_EXECUTE_0_REASON_1, - new Object[] {NETSTAT_COMMAND, e.getMessage()})); + NETSTAT_COMMAND, e.getMessage())); + } finally { + if (netstat != null) { + netstat.destroy(); + } + netstatInfo.append(lineSeparator); // additional new line } } @@ -154,10 +166,10 @@ public class NetstatFunction implements Function, InternalEntity { .append(" output ###################").append(lineSeparator); if (isLinux() || isMacOSX() || isSolaris()) { - ProcessBuilder procBuilder = new ProcessBuilder(LSOF_COMMAND); + Process lsof = null; try { - Process lsof = procBuilder.start(); + lsof = procBuilder.start(); InputStreamReader reader = new InputStreamReader(lsof.getInputStream()); BufferedReader breader = new BufferedReader(reader); String line = ""; @@ -165,23 +177,27 @@ public class NetstatFunction implements Function, InternalEntity { while ((line = breader.readLine()) != null) { existingNetstatInfo.append(line).append(lineSeparator); } - // TODO: move this to finally-block - lsof.destroy(); + } catch (IOException e) { // TODO: change this to keep the full stack trace String message = e.getMessage(); if (message.contains("error=2, No such file or directory")) { existingNetstatInfo .append(CliStrings.format(CliStrings.NETSTAT__MSG__COULD_NOT_EXECUTE_0_REASON_1, - new Object[] {LSOF_COMMAND, CliStrings.NETSTAT__MSG__LSOF_NOT_IN_PATH})); + LSOF_COMMAND, CliStrings.NETSTAT__MSG__LSOF_NOT_IN_PATH)); } else { - existingNetstatInfo - .append(CliStrings.format(CliStrings.NETSTAT__MSG__COULD_NOT_EXECUTE_0_REASON_1, - new Object[] {LSOF_COMMAND, e.getMessage()})); + existingNetstatInfo.append(CliStrings.format( + CliStrings.NETSTAT__MSG__COULD_NOT_EXECUTE_0_REASON_1, LSOF_COMMAND, e.getMessage())); } + } finally { + if (lsof != null) { + lsof.destroy(); + } + existingNetstatInfo.append(lineSeparator); // additional new line } + } else { existingNetstatInfo.append(CliStrings.NETSTAT__MSG__NOT_AVAILABLE_FOR_WINDOWS) .append(lineSeparator); @@ -200,46 +216,40 @@ public class NetstatFunction implements Function, InternalEntity { return netstatInfo.toString(); } - @Override - public String getId() { - return ID; - } - - @Override - public boolean optimizeForWrite() { - return false; - } - - @Override - public boolean isHA() { - return false; - } - + /** + * Java main, probably for manual testing? + */ public static void main(final String[] args) { String netstat = executeCommand(GfshParser.LINE_SEPARATOR, true); System.out.println(netstat); } + /** + * Argument for NetstatFunction. + */ public static class NetstatFunctionArgument implements Serializable { private static final long serialVersionUID = 1L; private final String lineSeparator; - private final boolean withlsof; + private final boolean withLsof; - public NetstatFunctionArgument(final String lineSeparator, final boolean withlsof) { + public NetstatFunctionArgument(final String lineSeparator, final boolean withLsof) { this.lineSeparator = lineSeparator; - this.withlsof = withlsof; + this.withLsof = withLsof; } public String getLineSeparator() { return lineSeparator; } - public boolean isWithlsof() { - return withlsof; + public boolean isWithLsof() { + return withLsof; } } + /** + * Result of executing NetstatFunction. + */ public static class NetstatFunctionResult implements Serializable { private static final long serialVersionUID = 1L; @@ -266,4 +276,5 @@ public class NetstatFunction implements Function, InternalEntity { return compressedBytes; } } + } http://git-wip-us.apache.org/repos/asf/geode/blob/634cbb34/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RebalanceFunction.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RebalanceFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RebalanceFunction.java index 218f212..df83a82 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RebalanceFunction.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RebalanceFunction.java @@ -14,14 +14,12 @@ */ package org.apache.geode.management.internal.cli.functions; -import java.util.Iterator; import java.util.Set; import java.util.concurrent.CancellationException; import org.apache.logging.log4j.Logger; import org.apache.geode.cache.Cache; -import org.apache.geode.cache.CacheFactory; import org.apache.geode.cache.control.RebalanceFactory; import org.apache.geode.cache.control.RebalanceOperation; import org.apache.geode.cache.control.RebalanceResults; @@ -32,23 +30,13 @@ import org.apache.geode.cache.partition.PartitionRebalanceInfo; import org.apache.geode.internal.InternalEntity; import org.apache.geode.internal.logging.LogService; - - public class RebalanceFunction implements Function, InternalEntity { - private static final Logger logger = LogService.getLogger(); - - public static final String ID = RebalanceFunction.class.getName(); - - private static final long serialVersionUID = 1L; + private static final Logger logger = LogService.getLogger(); @Override - public void execute(FunctionContext context) { - - RebalanceOperation op = null; - String[] str = new String[0]; - - Cache cache = CacheFactory.getAnyInstance(); + public void execute(final FunctionContext context) { + Cache cache = context.getCache(); ResourceManager manager = cache.getResourceManager(); Object[] args = (Object[]) context.getArguments(); String simulate = ((String) args[0]); @@ -59,6 +47,7 @@ public class RebalanceFunction implements Function, InternalEntity { rbFactory.includeRegions(includeRegionNames); RebalanceResults results = null; + RebalanceOperation op; if (simulate.equals("true")) { op = rbFactory.simulate(); } else { @@ -68,24 +57,29 @@ public class RebalanceFunction implements Function, InternalEntity { try { results = op.getResults(); logger.info("Starting RebalanceFunction got results = {}", results); - StringBuilder str1 = new StringBuilder(); - str1.append(results.getTotalBucketCreateBytes() + "," + results.getTotalBucketCreateTime() - + "," + results.getTotalBucketCreatesCompleted() + "," - + results.getTotalBucketTransferBytes() + "," + results.getTotalBucketTransferTime() + "," - + results.getTotalBucketTransfersCompleted() + "," + results.getTotalPrimaryTransferTime() - + "," + results.getTotalPrimaryTransfersCompleted() + "," + results.getTotalTime() + ","); + StringBuilder sb = new StringBuilder(); + sb.append(results.getTotalBucketCreateBytes()).append(",") + .append(results.getTotalBucketCreateTime()).append(",") + .append(results.getTotalBucketCreatesCompleted()).append(",") + .append(results.getTotalBucketTransferBytes()).append(",") + .append(results.getTotalBucketTransferTime()).append(",") + .append(results.getTotalBucketTransfersCompleted()).append(",") + .append(results.getTotalPrimaryTransferTime()).append(",") + .append(results.getTotalPrimaryTransfersCompleted()).append(",") + .append(results.getTotalTime()).append(","); Set<PartitionRebalanceInfo> regns1 = results.getPartitionRebalanceDetails(); - Iterator it = regns1.iterator(); - while (it.hasNext()) { - PartitionRebalanceInfo rgn = (PartitionRebalanceInfo) it.next(); - str1.append(rgn.getRegionPath() + ","); + for (PartitionRebalanceInfo rgn : regns1) { + sb.append(rgn.getRegionPath()).append(","); } - logger.info("Starting RebalanceFunction str1={}", str1); - context.getResultSender().lastResult(str1.toString()); + + logger.info("Starting RebalanceFunction with {}", sb); + context.getResultSender().lastResult(sb.toString()); + } catch (CancellationException e) { - logger.info("Starting RebalanceFunction CancellationException: ", e.getMessage(), e); + logger.info("Starting RebalanceFunction CancellationException: {}", e.getMessage(), e); context.getResultSender().lastResult("CancellationException1 " + e.getMessage()); + } catch (InterruptedException e) { logger.info("Starting RebalanceFunction InterruptedException: {}", e.getMessage(), e); context.getResultSender().lastResult("InterruptedException2 " + e.getMessage()); @@ -93,11 +87,6 @@ public class RebalanceFunction implements Function, InternalEntity { } @Override - public String getId() { - return RebalanceFunction.ID; - } - - @Override public boolean hasResult() { return true; } http://git-wip-us.apache.org/repos/asf/geode/blob/634cbb34/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java index 79dcbd4..ea1d27d 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java @@ -21,14 +21,13 @@ import org.apache.logging.log4j.Logger; import org.apache.geode.SystemFailure; import org.apache.geode.cache.AttributesMutator; import org.apache.geode.cache.Cache; -import org.apache.geode.cache.CacheFactory; import org.apache.geode.cache.CacheListener; import org.apache.geode.cache.CacheLoader; import org.apache.geode.cache.CacheWriter; import org.apache.geode.cache.ExpirationAction; import org.apache.geode.cache.ExpirationAttributes; import org.apache.geode.cache.Region; -import org.apache.geode.cache.execute.FunctionAdapter; +import org.apache.geode.cache.execute.Function; import org.apache.geode.cache.execute.FunctionContext; import org.apache.geode.cache.execute.ResultSender; import org.apache.geode.internal.ClassPathLoader; @@ -46,21 +45,15 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity; * * @since GemFire 8.0 */ -public class RegionAlterFunction extends FunctionAdapter implements InternalEntity { - private static final Logger logger = LogService.getLogger(); - +public class RegionAlterFunction implements Function, InternalEntity { private static final long serialVersionUID = -4846425364943216425L; + private static final Logger logger = LogService.getLogger(); @Override - public boolean isHA() { - return false; - } - - @Override - public void execute(FunctionContext context) { + public void execute(final FunctionContext context) { ResultSender<Object> resultSender = context.getResultSender(); - Cache cache = CacheFactory.getAnyInstance(); + Cache cache = context.getCache(); String memberNameOrId = CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember()); @@ -70,16 +63,12 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti XmlEntity xmlEntity = new XmlEntity(CacheXml.REGION, "name", alteredRegion.getName()); resultSender.lastResult(new CliFunctionResult(memberNameOrId, xmlEntity, CliStrings.format(CliStrings.ALTER_REGION__MSG__REGION_0_ALTERED_ON_1, - new Object[] {alteredRegion.getFullPath(), memberNameOrId}))); + alteredRegion.getFullPath(), memberNameOrId))); - } catch (IllegalStateException e) { + } catch (IllegalArgumentException | IllegalStateException e) { logger.error(e.getMessage(), e); - resultSender.lastResult(new CliFunctionResult(memberNameOrId, false, e.getMessage())); - } catch (IllegalArgumentException e) { - logger.error(e.getMessage(), e); - resultSender.lastResult(new CliFunctionResult(memberNameOrId, false, e.getMessage())); } catch (VirtualMachineError e) { SystemFailure.initiateFailure(e); throw e; @@ -96,8 +85,14 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti } } - private <K, V> Region<?, ?> alterRegion(Cache cache, RegionFunctionArgs regionAlterArgs) { - final String regionPathString = regionAlterArgs.getRegionPath(); + @Override + public boolean isHA() { + return false; + } + + private <K, V> Region<?, ?> alterRegion(final Cache cache, + final RegionFunctionArgs regionAlterArgs) { + String regionPathString = regionAlterArgs.getRegionPath(); RegionPath regionPath = new RegionPath(regionPathString); AbstractRegion region = (AbstractRegion) cache.getRegion(regionPathString); @@ -123,7 +118,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti } // Alter expiration attributes - final RegionFunctionArgs.ExpirationAttrs newEntryExpirationIdleTime = + RegionFunctionArgs.ExpirationAttrs newEntryExpirationIdleTime = regionAlterArgs.getEntryExpirationIdleTime(); if (newEntryExpirationIdleTime != null) { mutator.setEntryIdleTimeout( @@ -133,7 +128,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti } } - final RegionFunctionArgs.ExpirationAttrs newEntryExpirationTTL = + RegionFunctionArgs.ExpirationAttrs newEntryExpirationTTL = regionAlterArgs.getEntryExpirationTTL(); if (newEntryExpirationTTL != null) { mutator.setEntryTimeToLive( @@ -143,7 +138,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti } } - final RegionFunctionArgs.ExpirationAttrs newRegionExpirationIdleTime = + RegionFunctionArgs.ExpirationAttrs newRegionExpirationIdleTime = regionAlterArgs.getRegionExpirationIdleTime(); if (newRegionExpirationIdleTime != null) { mutator.setRegionIdleTimeout( @@ -153,7 +148,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti } } - final RegionFunctionArgs.ExpirationAttrs newRegionExpirationTTL = + RegionFunctionArgs.ExpirationAttrs newRegionExpirationTTL = regionAlterArgs.getRegionExpirationTTL(); if (newRegionExpirationTTL != null) { mutator.setRegionTimeToLive( @@ -164,7 +159,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti } // Alter Gateway Sender Ids - final Set<String> newGatewaySenderIds = regionAlterArgs.getGatewaySenderIds(); + Set<String> newGatewaySenderIds = regionAlterArgs.getGatewaySenderIds(); if (newGatewaySenderIds != null) { // Remove old gateway sender ids that aren't in the new list @@ -190,7 +185,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti } // Alter Async Queue Ids - final Set<String> newAsyncEventQueueIds = regionAlterArgs.getAsyncEventQueueIds(); + Set<String> newAsyncEventQueueIds = regionAlterArgs.getAsyncEventQueueIds(); if (newAsyncEventQueueIds != null) { // Remove old async event queue ids that aren't in the new list @@ -216,7 +211,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti } // Alter Cache Listeners - final Set<String> newCacheListenerNames = regionAlterArgs.getCacheListeners(); + Set<String> newCacheListenerNames = regionAlterArgs.getCacheListeners(); if (newCacheListenerNames != null) { // Remove old cache listeners that aren't in the new list @@ -232,6 +227,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti if (newCacheListenerName.isEmpty()) { continue; } + boolean nameFound = false; for (CacheListener oldCacheListener : oldCacheListeners) { if (oldCacheListener.getClass().getName().equals(newCacheListenerName)) { @@ -253,7 +249,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti } } - final String cacheLoader = regionAlterArgs.getCacheLoader(); + String cacheLoader = regionAlterArgs.getCacheLoader(); if (cacheLoader != null) { if (cacheLoader.isEmpty()) { mutator.setCacheLoader(null); @@ -268,7 +264,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti } } - final String cacheWriter = regionAlterArgs.getCacheWriter(); + String cacheWriter = regionAlterArgs.getCacheWriter(); if (cacheWriter != null) { if (cacheWriter.isEmpty()) { mutator.setCacheWriter(null); @@ -293,12 +289,12 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti * @param newExpirationAttrs Attributes supplied by the command * @param oldExpirationAttributes Attributes currently applied to the Region. * - * @return A new pair of expiration attributes taken from the command if it was given or the - * current value from the Region if it was not. + * @return New expiration attributes taken from the command if it was given or the current value + * from the Region if it was not. */ private ExpirationAttributes parseExpirationAttributes( - RegionFunctionArgs.ExpirationAttrs newExpirationAttrs, - ExpirationAttributes oldExpirationAttributes) { + final RegionFunctionArgs.ExpirationAttrs newExpirationAttrs, + final ExpirationAttributes oldExpirationAttributes) { ExpirationAction action = oldExpirationAttributes.getAction(); int timeout = oldExpirationAttributes.getTimeout(); @@ -306,6 +302,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti if (newExpirationAttrs.getTime() != null) { timeout = newExpirationAttrs.getTime(); } + if (newExpirationAttrs.getAction() != null) { action = newExpirationAttrs.getAction(); } @@ -313,20 +310,22 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti return new ExpirationAttributes(timeout, action); } - @SuppressWarnings("unchecked") - private static <K> Class<K> forName(String classToLoadName, String neededFor) { + private static <K> Class<K> forName(final String classToLoadName, final String neededFor) { Class<K> loadedClass = null; + try { // Set Constraints ClassPathLoader classPathLoader = ClassPathLoader.getLatest(); if (classToLoadName != null && !classToLoadName.isEmpty()) { loadedClass = (Class<K>) classPathLoader.forName(classToLoadName); } + } catch (ClassNotFoundException e) { throw new RuntimeException( CliStrings.format(CliStrings.ALTER_REGION__MSG__COULD_NOT_FIND_CLASS_0_SPECIFIED_FOR_1, classToLoadName, neededFor), e); + } catch (ClassCastException e) { throw new RuntimeException(CliStrings.format( CliStrings.ALTER_REGION__MSG__CLASS_SPECIFIED_FOR_0_SPECIFIED_FOR_1_IS_NOT_OF_EXPECTED_TYPE, @@ -336,14 +335,17 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti return loadedClass; } - private static <K> K newInstance(Class<K> klass, String neededFor) { - K instance = null; + private static <K> K newInstance(final Class<K> klass, final String neededFor) { + K instance; + try { instance = klass.newInstance(); + } catch (InstantiationException e) { throw new RuntimeException(CliStrings.format( CliStrings.ALTER_REGION__MSG__COULD_NOT_INSTANTIATE_CLASS_0_SPECIFIED_FOR_1, klass, neededFor), e); + } catch (IllegalAccessException e) { throw new RuntimeException( CliStrings.format(CliStrings.ALTER_REGION__MSG__COULD_NOT_ACCESS_CLASS_0_SPECIFIED_FOR_1, @@ -354,8 +356,4 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti return instance; } - @Override - public String getId() { - return RegionAlterFunction.class.getName(); - } } http://git-wip-us.apache.org/repos/asf/geode/blob/634cbb34/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java index 6ae10a3..ea4f288 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java @@ -20,7 +20,6 @@ import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.Logger; import org.apache.geode.cache.Cache; -import org.apache.geode.cache.CacheFactory; import org.apache.geode.cache.CacheListener; import org.apache.geode.cache.CacheLoader; import org.apache.geode.cache.CacheWriter; @@ -33,7 +32,7 @@ import org.apache.geode.cache.RegionAttributes; import org.apache.geode.cache.RegionExistsException; import org.apache.geode.cache.RegionFactory; import org.apache.geode.cache.RegionShortcut; -import org.apache.geode.cache.execute.FunctionAdapter; +import org.apache.geode.cache.execute.Function; import org.apache.geode.cache.execute.FunctionContext; import org.apache.geode.cache.execute.ResultSender; import org.apache.geode.compression.Compressor; @@ -50,29 +49,17 @@ import org.apache.geode.management.internal.cli.util.RegionPath; import org.apache.geode.management.internal.configuration.domain.XmlEntity; /** - * * @since GemFire 7.0 */ -public class RegionCreateFunction extends FunctionAdapter implements InternalEntity { - - private static final Logger logger = LogService.getLogger(); - +public class RegionCreateFunction implements Function, InternalEntity { private static final long serialVersionUID = 8746830191680509335L; - - private static final String ID = RegionCreateFunction.class.getName(); - - public static RegionCreateFunction INSTANCE = new RegionCreateFunction(); - - @Override - public boolean isHA() { - return false; - } + private static final Logger logger = LogService.getLogger(); @Override - public void execute(FunctionContext context) { + public void execute(final FunctionContext context) { ResultSender<Object> resultSender = context.getResultSender(); - Cache cache = CacheFactory.getAnyInstance(); + Cache cache = context.getCache(); String memberNameOrId = CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember()); @@ -94,7 +81,8 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt XmlEntity xmlEntity = new XmlEntity(CacheXml.REGION, "name", createdRegion.getName()); resultSender.lastResult(new CliFunctionResult(memberNameOrId, xmlEntity, CliStrings.format(CliStrings.CREATE_REGION__MSG__REGION_0_CREATED_ON_1, - new Object[] {createdRegion.getFullPath(), memberNameOrId}))); + createdRegion.getFullPath(), memberNameOrId))); + } catch (IllegalStateException e) { String exceptionMsg = e.getMessage(); String localizedString = @@ -105,15 +93,16 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt String.valueOf(CreateAlterDestroyRegionCommands.PERSISTENT_OVERFLOW_SHORTCUTS)}); } resultSender.lastResult(handleException(memberNameOrId, exceptionMsg, null/* do not log */)); - } catch (IllegalArgumentException e) { + + } catch (CreateSubregionException | IllegalArgumentException e) { resultSender.lastResult(handleException(memberNameOrId, e.getMessage(), e)); + } catch (RegionExistsException e) { String exceptionMsg = CliStrings.format(CliStrings.CREATE_REGION__MSG__REGION_PATH_0_ALREADY_EXISTS_ON_1, regionCreateArgs.getRegionPath(), memberNameOrId); resultSender.lastResult(handleException(memberNameOrId, exceptionMsg, e)); - } catch (CreateSubregionException e) { - resultSender.lastResult(handleException(memberNameOrId, e.getMessage(), e)); + } catch (Exception e) { String exceptionMsg = e.getMessage(); if (exceptionMsg == null) { @@ -123,11 +112,17 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt } } + @Override + public boolean isHA() { + return false; + } + private CliFunctionResult handleException(final String memberNameOrId, final String exceptionMsg, final Exception e) { if (e != null && logger.isDebugEnabled()) { logger.debug(e.getMessage(), e); } + if (exceptionMsg != null) { return new CliFunctionResult(memberNameOrId, false, exceptionMsg); } @@ -135,17 +130,17 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt return new CliFunctionResult(memberNameOrId); } - public static <K, V> Region<?, ?> createRegion(Cache cache, RegionFunctionArgs regionCreateArgs) { - Region<K, V> createdRegion = null; - - final String regionPath = regionCreateArgs.getRegionPath(); - final RegionShortcut regionShortcut = regionCreateArgs.getRegionShortcut(); - final String useAttributesFrom = regionCreateArgs.getUseAttributesFrom(); + public static <K, V> Region<?, ?> createRegion(final Cache cache, + final RegionFunctionArgs regionCreateArgs) { + String regionPath = regionCreateArgs.getRegionPath(); + RegionShortcut regionShortcut = regionCreateArgs.getRegionShortcut(); + String useAttributesFrom = regionCreateArgs.getUseAttributesFrom(); // If a region path indicates a sub-region, check whether the parent region exists RegionPath regionPathData = new RegionPath(regionPath); String parentRegionPath = regionPathData.getParent(); Region<?, ?> parentRegion = null; + if (parentRegionPath != null && !Region.SEPARATOR.equals(parentRegionPath)) { parentRegion = cache.getRegion(parentRegionPath); if (parentRegion == null) { @@ -168,9 +163,10 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt CliStrings.CREATE_REGION__MSG__ONE_OF_REGIONSHORTCUT_AND_USEATTRIBUTESFROM_IS_REQUIRED); } - boolean isPartitioned = false; - RegionFactory<K, V> factory = null; - RegionAttributes<K, V> regionAttributes = null; + boolean isPartitioned; + RegionFactory<K, V> factory; + RegionAttributes<K, V> regionAttributes; + if (regionShortcut != null) { regionAttributes = cache.getRegionAttributes(regionShortcut.toString()); if (logger.isDebugEnabled()) { @@ -187,6 +183,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt CliStrings.CREATE_REGION__MSG__COULD_NOT_LOAD_REGION_ATTRIBUTES_FOR_SHORTCUT_0, regionShortcut)); } + } else { if (logger.isDebugEnabled()) { logger.debug("Using Manager's region attributes for {}", regionPath); @@ -196,8 +193,8 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt logger.debug("Using Attributes : {}", regionAttributes); } } - isPartitioned = regionAttributes.getPartitionAttributes() != null; + isPartitioned = regionAttributes.getPartitionAttributes() != null; factory = cache.createRegionFactory(regionAttributes); if (!isPartitioned && regionCreateArgs.hasPartitionAttributes()) { @@ -219,8 +216,9 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt } // Set Constraints - final String keyConstraint = regionCreateArgs.getKeyConstraint(); - final String valueConstraint = regionCreateArgs.getValueConstraint(); + String keyConstraint = regionCreateArgs.getKeyConstraint(); + String valueConstraint = regionCreateArgs.getValueConstraint(); + if (keyConstraint != null && !keyConstraint.isEmpty()) { Class<K> keyConstraintClass = CliUtil.forName(keyConstraint, CliStrings.CREATE_REGION__KEYCONSTRAINT); @@ -234,32 +232,36 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt } // Expiration attributes - final RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime = + RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime = regionCreateArgs.getEntryExpirationIdleTime(); if (entryExpirationIdleTime != null) { factory.setEntryIdleTimeout(entryExpirationIdleTime.convertToExpirationAttributes()); } - final RegionFunctionArgs.ExpirationAttrs entryExpirationTTL = + + RegionFunctionArgs.ExpirationAttrs entryExpirationTTL = regionCreateArgs.getEntryExpirationTTL(); if (entryExpirationTTL != null) { factory.setEntryTimeToLive(entryExpirationTTL.convertToExpirationAttributes()); } - final RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime = + + RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime = regionCreateArgs.getRegionExpirationIdleTime(); if (regionExpirationIdleTime != null) { factory.setEntryIdleTimeout(regionExpirationIdleTime.convertToExpirationAttributes()); } - final RegionFunctionArgs.ExpirationAttrs regionExpirationTTL = + + RegionFunctionArgs.ExpirationAttrs regionExpirationTTL = regionCreateArgs.getRegionExpirationTTL(); if (regionExpirationTTL != null) { factory.setEntryTimeToLive(regionExpirationTTL.convertToExpirationAttributes()); } // Associate a Disk Store - final String diskStore = regionCreateArgs.getDiskStore(); + String diskStore = regionCreateArgs.getDiskStore(); if (diskStore != null && !diskStore.isEmpty()) { factory.setDiskStoreName(diskStore); } + if (regionCreateArgs.isSetDiskSynchronous()) { factory.setDiskSynchronous(regionCreateArgs.isDiskSynchronous()); } @@ -277,12 +279,13 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt if (regionCreateArgs.isSetEnableAsyncConflation()) { factory.setEnableAsyncConflation(regionCreateArgs.isEnableAsyncConflation()); } + if (regionCreateArgs.isSetEnableSubscriptionConflation()) { factory.setEnableSubscriptionConflation(regionCreateArgs.isEnableSubscriptionConflation()); } // Gateway Sender Ids - final Set<String> gatewaySenderIds = regionCreateArgs.getGatewaySenderIds(); + Set<String> gatewaySenderIds = regionCreateArgs.getGatewaySenderIds(); if (gatewaySenderIds != null && !gatewaySenderIds.isEmpty()) { for (String gatewaySenderId : gatewaySenderIds) { factory.addGatewaySenderId(gatewaySenderId); @@ -290,7 +293,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt } // Async Queue Ids - final Set<String> asyncEventQueueIds = regionCreateArgs.getAsyncEventQueueIds(); + Set<String> asyncEventQueueIds = regionCreateArgs.getAsyncEventQueueIds(); if (asyncEventQueueIds != null && !asyncEventQueueIds.isEmpty()) { for (String asyncEventQueueId : asyncEventQueueIds) { factory.addAsyncEventQueueId(asyncEventQueueId); @@ -301,6 +304,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt if (regionCreateArgs.isSetConcurrencyChecksEnabled()) { factory.setConcurrencyChecksEnabled(regionCreateArgs.isConcurrencyChecksEnabled()); } + if (regionCreateArgs.isSetConcurrencyLevel()) { factory.setConcurrencyLevel(regionCreateArgs.getConcurrencyLevel()); } @@ -316,7 +320,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt } // Set plugins - final Set<String> cacheListeners = regionCreateArgs.getCacheListeners(); + Set<String> cacheListeners = regionCreateArgs.getCacheListeners(); if (cacheListeners != null && !cacheListeners.isEmpty()) { for (String cacheListener : cacheListeners) { Class<CacheListener<K, V>> cacheListenerKlass = @@ -334,7 +338,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt CliUtil.newInstance(compressorKlass, CliStrings.CREATE_REGION__COMPRESSOR)); } - final String cacheLoader = regionCreateArgs.getCacheLoader(); + String cacheLoader = regionCreateArgs.getCacheLoader(); if (cacheLoader != null) { Class<CacheLoader<K, V>> cacheLoaderKlass = CliUtil.forName(cacheLoader, CliStrings.CREATE_REGION__CACHELOADER); @@ -342,7 +346,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt CliUtil.newInstance(cacheLoaderKlass, CliStrings.CREATE_REGION__CACHELOADER)); } - final String cacheWriter = regionCreateArgs.getCacheWriter(); + String cacheWriter = regionCreateArgs.getCacheWriter(); if (cacheWriter != null) { Class<CacheWriter<K, V>> cacheWriterKlass = CliUtil.forName(cacheWriter, CliStrings.CREATE_REGION__CACHEWRITER); @@ -351,7 +355,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt } String regionName = regionPathData.getName(); - + Region<K, V> createdRegion; if (parentRegion != null) { createdRegion = factory.createSubregion(parentRegion, regionName); } else { @@ -361,13 +365,11 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt return createdRegion; } - @SuppressWarnings("unchecked") - private static <K, V> PartitionAttributes<K, V> extractPartitionAttributes(Cache cache, - RegionAttributes<K, V> regionAttributes, RegionFunctionArgs regionCreateArgs) { + private static <K, V> PartitionAttributes<K, V> extractPartitionAttributes(final Cache cache, + final RegionAttributes<K, V> regionAttributes, final RegionFunctionArgs regionCreateArgs) { RegionFunctionArgs.PartitionArgs partitionArgs = regionCreateArgs.getPartitionArgs(); - PartitionAttributesFactory<K, V> prAttrFactory = null; - + PartitionAttributesFactory<K, V> prAttrFactory; PartitionAttributes<K, V> partitionAttributes = regionAttributes.getPartitionAttributes(); if (partitionAttributes != null) { prAttrFactory = new PartitionAttributesFactory<K, V>(partitionAttributes); @@ -389,21 +391,27 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt } prAttrFactory.setColocatedWith(colocatedWith); } + if (partitionArgs.isSetPRLocalMaxMemory()) { prAttrFactory.setLocalMaxMemory(partitionArgs.getPrLocalMaxMemory()); } + if (partitionArgs.isSetPRTotalMaxMemory()) { prAttrFactory.setTotalMaxMemory(partitionArgs.getPrTotalMaxMemory()); } + if (partitionArgs.isSetPRTotalNumBuckets()) { prAttrFactory.setTotalNumBuckets(partitionArgs.getPrTotalNumBuckets()); } + if (partitionArgs.isSetPRRedundantCopies()) { prAttrFactory.setRedundantCopies(partitionArgs.getPrRedundantCopies()); } + if (partitionArgs.isSetPRRecoveryDelay()) { prAttrFactory.setRecoveryDelay(partitionArgs.getPrRecoveryDelay()); } + if (partitionArgs.isSetPRStartupRecoveryDelay()) { prAttrFactory.setStartupRecoveryDelay(partitionArgs.getPrStartupRecoveryDelay()); } @@ -415,22 +423,24 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt .setPartitionResolver((PartitionResolver<K, V>) newInstance(partitionResolverClass, CliStrings.CREATE_REGION__PARTITION_RESOLVER)); } + return prAttrFactory.create(); } - - private static Class<PartitionResolver> forName(String className, String neededFor) { + private static Class<PartitionResolver> forName(final String className, final String neededFor) { if (StringUtils.isBlank(className)) { - throw new IllegalArgumentException( - CliStrings.format(CliStrings.CREATE_REGION__MSG__INVALID_PARTITION_RESOLVER, - new Object[] {className, neededFor})); + throw new IllegalArgumentException(CliStrings + .format(CliStrings.CREATE_REGION__MSG__INVALID_PARTITION_RESOLVER, className, neededFor)); } + try { return (Class<PartitionResolver>) ClassPathLoader.getLatest().forName(className); + } catch (ClassNotFoundException e) { throw new RuntimeException(CliStrings.format( CliStrings.CREATE_REGION_PARTITION_RESOLVER__MSG__COULD_NOT_FIND_CLASS_0_SPECIFIED_FOR_1, className, neededFor), e); + } catch (ClassCastException e) { throw new RuntimeException(CliStrings.format( CliStrings.CREATE_REGION__MSG__PARTITION_RESOLVER__CLASS_0_SPECIFIED_FOR_1_IS_NOT_OF_EXPECTED_TYPE, @@ -438,13 +448,16 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt } } - private static PartitionResolver newInstance(Class<PartitionResolver> klass, String neededFor) { + private static PartitionResolver newInstance(final Class<PartitionResolver> klass, + final String neededFor) { try { return klass.newInstance(); + } catch (InstantiationException e) { throw new RuntimeException(CliStrings.format( CliStrings.CREATE_REGION__MSG__PARTITION_RESOLVER__COULD_NOT_INSTANTIATE_CLASS_0_SPECIFIED_FOR_1, klass, neededFor), e); + } catch (IllegalAccessException e) { throw new RuntimeException(CliStrings.format( CliStrings.CREATE_REGION__MSG__PARTITION_RESOLVER__COULD_NOT_ACCESS_CLASS_0_SPECIFIED_FOR_1, @@ -452,8 +465,4 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt } } - @Override - public String getId() { - return ID; - } } http://git-wip-us.apache.org/repos/asf/geode/blob/634cbb34/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunction.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunction.java index 5e4af3d..3a2becd 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunction.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunction.java @@ -15,7 +15,6 @@ package org.apache.geode.management.internal.cli.functions; import org.apache.geode.cache.Cache; -import org.apache.geode.cache.CacheFactory; import org.apache.geode.cache.Region; import org.apache.geode.cache.execute.Function; import org.apache.geode.cache.execute.FunctionContext; @@ -25,31 +24,22 @@ import org.apache.geode.management.internal.cli.i18n.CliStrings; import org.apache.geode.management.internal.configuration.domain.XmlEntity; /** - * * @since GemFire 7.0 */ public class RegionDestroyFunction implements Function, InternalEntity { private static final long serialVersionUID = 9172773671865750685L; - public static final RegionDestroyFunction INSTANCE = new RegionDestroyFunction(); - - private static final String ID = RegionDestroyFunction.class.getName(); - - @Override - public boolean hasResult() { - return true; - } - @Override - public void execute(FunctionContext context) { + public void execute(final FunctionContext context) { String regionPath = null; + try { String functionId = context.getFunctionId(); if (getId().equals(functionId)) { Object arguments = context.getArguments(); if (arguments != null) { regionPath = (String) arguments; - Cache cache = CacheFactory.getAnyInstance(); + Cache cache = context.getCache(); Region<?, ?> region = cache.getRegion(regionPath); region.destroyRegion(); String regionName = @@ -58,22 +48,25 @@ public class RegionDestroyFunction implements Function, InternalEntity { context.getResultSender().lastResult(new CliFunctionResult("", xmlEntity, regionPath)); } } + context.getResultSender().lastResult(new CliFunctionResult("", false, "FAILURE")); + } catch (IllegalStateException e) { context.getResultSender().lastResult(new CliFunctionResult("", e, null)); + } catch (Exception ex) { context.getResultSender() .lastResult(new CliFunctionResult("", new RuntimeException(CliStrings.format( CliStrings.DESTROY_REGION__MSG__ERROR_WHILE_DESTROYING_REGION_0_REASON_1, - new Object[] {regionPath, ex.getMessage()})), + regionPath, ex.getMessage())), null)); } } @Override - public String getId() { - return ID; + public boolean hasResult() { + return true; } @Override @@ -85,4 +78,5 @@ public class RegionDestroyFunction implements Function, InternalEntity { public boolean isHA() { return false; } + } http://git-wip-us.apache.org/repos/asf/geode/blob/634cbb34/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java index 3af79eb..96c1cf8 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java @@ -44,55 +44,130 @@ public class RegionFunctionArgs implements Serializable { private final Boolean skipIfExists; private final String keyConstraint; private final String valueConstraint; - private Boolean statisticsEnabled; + private final Boolean statisticsEnabled; private final boolean isSetStatisticsEnabled; private final RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime; private final RegionFunctionArgs.ExpirationAttrs entryExpirationTTL; private final RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime; private final RegionFunctionArgs.ExpirationAttrs regionExpirationTTL; private final String diskStore; - private Boolean diskSynchronous; + private final Boolean diskSynchronous; private final boolean isSetDiskSynchronous; - private Boolean enableAsyncConflation; + private final Boolean enableAsyncConflation; private final boolean isSetEnableAsyncConflation; - private Boolean enableSubscriptionConflation; + private final Boolean enableSubscriptionConflation; private final boolean isSetEnableSubscriptionConflation; private final Set<String> cacheListeners; private final String cacheLoader; private final String cacheWriter; private final Set<String> asyncEventQueueIds; private final Set<String> gatewaySenderIds; - private Boolean concurrencyChecksEnabled; + private final Boolean concurrencyChecksEnabled; private final boolean isSetConcurrencyChecksEnabled; - private Boolean cloningEnabled; + private final Boolean cloningEnabled; private final boolean isSetCloningEnabled; - private Boolean mcastEnabled; + private final Boolean mcastEnabled; private final boolean isSetMcastEnabled; - private Integer concurrencyLevel; + private final Integer concurrencyLevel; private final boolean isSetConcurrencyLevel; private final PartitionArgs partitionArgs; private final Integer evictionMax; - private String compressor; + private final String compressor; private final boolean isSetCompressor; - private Boolean offHeap; + private final Boolean offHeap; private final boolean isSetOffHeap; - private RegionAttributes<?, ?> regionAttributes; private final boolean isPartitionResolver; - private String partitionResolver; - - public RegionFunctionArgs(String regionPath, RegionShortcut regionShortcut, - String useAttributesFrom, boolean skipIfExists, String keyConstraint, String valueConstraint, - Boolean statisticsEnabled, RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime, - RegionFunctionArgs.ExpirationAttrs entryExpirationTTL, - RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime, - RegionFunctionArgs.ExpirationAttrs regionExpirationTTL, String diskStore, - Boolean diskSynchronous, Boolean enableAsyncConflation, Boolean enableSubscriptionConflation, - String[] cacheListeners, String cacheLoader, String cacheWriter, String[] asyncEventQueueIds, - String[] gatewaySenderIds, Boolean concurrencyChecksEnabled, Boolean cloningEnabled, - Integer concurrencyLevel, String prColocatedWith, Integer prLocalMaxMemory, - Long prRecoveryDelay, Integer prRedundantCopies, Long prStartupRecoveryDelay, - Long prTotalMaxMemory, Integer prTotalNumBuckets, Integer evictionMax, String compressor, - Boolean offHeap, Boolean mcastEnabled, final String partitionResolver) { + private final String partitionResolver; + private final RegionAttributes<?, ?> regionAttributes; + + /** + * Constructor with RegionShortcut instead of RegionAttributes. + * + * <p> + * NOTE: evictionMax and compressor used to be hardcoded to null but are now passed in. + * RegionAttributes is still null. + */ + public RegionFunctionArgs(final String regionPath, final RegionShortcut regionShortcut, + final String useAttributesFrom, final boolean skipIfExists, final String keyConstraint, + final String valueConstraint, final Boolean statisticsEnabled, + final RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime, + final RegionFunctionArgs.ExpirationAttrs entryExpirationTTL, + final RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime, + final RegionFunctionArgs.ExpirationAttrs regionExpirationTTL, final String diskStore, + final Boolean diskSynchronous, final Boolean enableAsyncConflation, + final Boolean enableSubscriptionConflation, final String[] cacheListeners, + final String cacheLoader, final String cacheWriter, final String[] asyncEventQueueIds, + final String[] gatewaySenderIds, final Boolean concurrencyChecksEnabled, + final Boolean cloningEnabled, final Integer concurrencyLevel, final String prColocatedWith, + final Integer prLocalMaxMemory, final Long prRecoveryDelay, final Integer prRedundantCopies, + final Long prStartupRecoveryDelay, final Long prTotalMaxMemory, + final Integer prTotalNumBuckets, final Integer evictionMax, final String compressor, + final Boolean offHeap, final Boolean mcastEnabled, final String partitionResolver) { + + this(regionPath, regionShortcut, useAttributesFrom, skipIfExists, keyConstraint, + valueConstraint, statisticsEnabled, entryExpirationIdleTime, entryExpirationTTL, + regionExpirationIdleTime, regionExpirationTTL, diskStore, diskSynchronous, + enableAsyncConflation, enableSubscriptionConflation, cacheListeners, cacheLoader, + cacheWriter, asyncEventQueueIds, gatewaySenderIds, concurrencyChecksEnabled, cloningEnabled, + concurrencyLevel, prColocatedWith, prLocalMaxMemory, prRecoveryDelay, prRedundantCopies, + prStartupRecoveryDelay, prTotalMaxMemory, prTotalNumBuckets, evictionMax, compressor, + offHeap, mcastEnabled, partitionResolver, null); + } + + /** + * Constructor with RegionAttributes instead of RegionShortcut. + * + * <p> + * Note: regionShortcut, evictionMax and compressor are hardcoded to null. + */ + public RegionFunctionArgs(final String regionPath, final String useAttributesFrom, + final boolean skipIfExists, final String keyConstraint, final String valueConstraint, + final Boolean statisticsEnabled, + final RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime, + final RegionFunctionArgs.ExpirationAttrs entryExpirationTTL, + final RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime, + final RegionFunctionArgs.ExpirationAttrs regionExpirationTTL, final String diskStore, + final Boolean diskSynchronous, final Boolean enableAsyncConflation, + final Boolean enableSubscriptionConflation, final String[] cacheListeners, + final String cacheLoader, final String cacheWriter, final String[] asyncEventQueueIds, + final String[] gatewaySenderIds, final Boolean concurrencyChecksEnabled, + final Boolean cloningEnabled, final Integer concurrencyLevel, final String prColocatedWith, + final Integer prLocalMaxMemory, final Long prRecoveryDelay, final Integer prRedundantCopies, + final Long prStartupRecoveryDelay, final Long prTotalMaxMemory, + final Integer prTotalNumBuckets, final Boolean offHeap, final Boolean mcastEnabled, + final String partitionResolver, final RegionAttributes<?, ?> regionAttributes) { + + this(regionPath, null, useAttributesFrom, skipIfExists, keyConstraint, valueConstraint, + statisticsEnabled, entryExpirationIdleTime, entryExpirationTTL, regionExpirationIdleTime, + regionExpirationTTL, diskStore, diskSynchronous, enableAsyncConflation, + enableSubscriptionConflation, cacheListeners, cacheLoader, cacheWriter, asyncEventQueueIds, + gatewaySenderIds, concurrencyChecksEnabled, cloningEnabled, concurrencyLevel, + prColocatedWith, prLocalMaxMemory, prRecoveryDelay, prRedundantCopies, + prStartupRecoveryDelay, prTotalMaxMemory, prTotalNumBuckets, null, null, offHeap, + mcastEnabled, partitionResolver, regionAttributes); + } + + /** + * Constructor with everything. + */ + RegionFunctionArgs(final String regionPath, final RegionShortcut regionShortcut, + final String useAttributesFrom, final boolean skipIfExists, final String keyConstraint, + final String valueConstraint, final Boolean statisticsEnabled, + final RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime, + final RegionFunctionArgs.ExpirationAttrs entryExpirationTTL, + final RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime, + final RegionFunctionArgs.ExpirationAttrs regionExpirationTTL, final String diskStore, + final Boolean diskSynchronous, final Boolean enableAsyncConflation, + final Boolean enableSubscriptionConflation, final String[] cacheListeners, + final String cacheLoader, final String cacheWriter, final String[] asyncEventQueueIds, + final String[] gatewaySenderIds, final Boolean concurrencyChecksEnabled, + final Boolean cloningEnabled, final Integer concurrencyLevel, final String prColocatedWith, + final Integer prLocalMaxMemory, final Long prRecoveryDelay, final Integer prRedundantCopies, + final Long prStartupRecoveryDelay, final Long prTotalMaxMemory, + final Integer prTotalNumBuckets, final Integer evictionMax, final String compressor, + final Boolean offHeap, final Boolean mcastEnabled, final String partitionResolver, + final RegionAttributes<?, ?> regionAttributes) { + this.regionPath = regionPath; this.regionShortcut = regionShortcut; this.useAttributesFrom = useAttributesFrom; @@ -100,63 +175,93 @@ public class RegionFunctionArgs implements Serializable { this.keyConstraint = keyConstraint; this.valueConstraint = valueConstraint; this.evictionMax = evictionMax; + this.isSetStatisticsEnabled = statisticsEnabled != null; if (this.isSetStatisticsEnabled) { this.statisticsEnabled = statisticsEnabled; + } else { + this.statisticsEnabled = null; } + this.entryExpirationIdleTime = entryExpirationIdleTime; this.entryExpirationTTL = entryExpirationTTL; this.regionExpirationIdleTime = regionExpirationIdleTime; this.regionExpirationTTL = regionExpirationTTL; this.diskStore = diskStore; + this.isSetDiskSynchronous = diskSynchronous != null; if (this.isSetDiskSynchronous) { this.diskSynchronous = diskSynchronous; + } else { + this.diskSynchronous = null; } + this.isSetEnableAsyncConflation = enableAsyncConflation != null; if (this.isSetEnableAsyncConflation) { this.enableAsyncConflation = enableAsyncConflation; + } else { + this.enableAsyncConflation = null; } + this.isSetEnableSubscriptionConflation = enableSubscriptionConflation != null; if (this.isSetEnableSubscriptionConflation) { this.enableSubscriptionConflation = enableSubscriptionConflation; + } else { + this.enableSubscriptionConflation = null; } + if (cacheListeners != null) { this.cacheListeners = new LinkedHashSet<>(); this.cacheListeners.addAll(Arrays.asList(cacheListeners)); } else { this.cacheListeners = null; } + this.cacheLoader = cacheLoader; this.cacheWriter = cacheWriter; + if (asyncEventQueueIds != null) { this.asyncEventQueueIds = new LinkedHashSet<>(); this.asyncEventQueueIds.addAll(Arrays.asList(asyncEventQueueIds)); } else { this.asyncEventQueueIds = null; } + if (gatewaySenderIds != null) { this.gatewaySenderIds = new LinkedHashSet<>(); this.gatewaySenderIds.addAll(Arrays.asList(gatewaySenderIds)); } else { this.gatewaySenderIds = null; } + this.isSetConcurrencyChecksEnabled = concurrencyChecksEnabled != null; if (this.isSetConcurrencyChecksEnabled) { this.concurrencyChecksEnabled = concurrencyChecksEnabled; + } else { + this.concurrencyChecksEnabled = null; } + this.isSetCloningEnabled = cloningEnabled != null; if (this.isSetCloningEnabled) { this.cloningEnabled = cloningEnabled; + } else { + this.cloningEnabled = null; } + this.isSetMcastEnabled = mcastEnabled != null; if (isSetMcastEnabled) { this.mcastEnabled = mcastEnabled; + } else { + this.mcastEnabled = null; } + this.isSetConcurrencyLevel = concurrencyLevel != null; if (this.isSetConcurrencyLevel) { this.concurrencyLevel = concurrencyLevel; + } else { + this.concurrencyLevel = null; } + this.partitionArgs = new PartitionArgs(prColocatedWith, prLocalMaxMemory, prRecoveryDelay, prRedundantCopies, prStartupRecoveryDelay, prTotalMaxMemory, prTotalNumBuckets, partitionResolver); @@ -164,59 +269,35 @@ public class RegionFunctionArgs implements Serializable { this.isSetCompressor = (compressor != null); if (this.isSetCompressor) { this.compressor = compressor; + } else { + this.compressor = null; } + this.isSetOffHeap = (offHeap != null); if (this.isSetOffHeap) { this.offHeap = offHeap; + } else { + this.offHeap = null; } + this.isPartitionResolver = (partitionResolver != null); if (this.isPartitionResolver) { this.partitionResolver = partitionResolver; + } else { + this.partitionResolver = null; } - } - // Constructor to be used for supplied region attributes - public RegionFunctionArgs(String regionPath, String useAttributesFrom, boolean skipIfExists, - String keyConstraint, String valueConstraint, Boolean statisticsEnabled, - RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime, - RegionFunctionArgs.ExpirationAttrs entryExpirationTTL, - RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime, - RegionFunctionArgs.ExpirationAttrs regionExpirationTTL, String diskStore, - Boolean diskSynchronous, Boolean enableAsyncConflation, Boolean enableSubscriptionConflation, - String[] cacheListeners, String cacheLoader, String cacheWriter, String[] asyncEventQueueIds, - String[] gatewaySenderIds, Boolean concurrencyChecksEnabled, Boolean cloningEnabled, - Integer concurrencyLevel, String prColocatedWith, Integer prLocalMaxMemory, - Long prRecoveryDelay, Integer prRedundantCopies, Long prStartupRecoveryDelay, - Long prTotalMaxMemory, Integer prTotalNumBuckets, Boolean offHeap, Boolean mcastEnabled, - RegionAttributes<?, ?> regionAttributes, final String partitionResolver) { - this(regionPath, null, useAttributesFrom, skipIfExists, keyConstraint, valueConstraint, - statisticsEnabled, entryExpirationIdleTime, entryExpirationTTL, regionExpirationIdleTime, - regionExpirationTTL, diskStore, diskSynchronous, enableAsyncConflation, - enableSubscriptionConflation, cacheListeners, cacheLoader, cacheWriter, asyncEventQueueIds, - gatewaySenderIds, concurrencyChecksEnabled, cloningEnabled, concurrencyLevel, - prColocatedWith, prLocalMaxMemory, prRecoveryDelay, prRedundantCopies, - prStartupRecoveryDelay, prTotalMaxMemory, prTotalNumBuckets, null, null, offHeap, - mcastEnabled, partitionResolver); this.regionAttributes = regionAttributes; } - /** - * @return the regionPath - */ public String getRegionPath() { return this.regionPath; } - /** - * @return the regionShortcut - */ public RegionShortcut getRegionShortcut() { return this.regionShortcut; } - /** - * @return the useAttributesFrom - */ public String getUseAttributesFrom() { return this.useAttributesFrom; } @@ -229,86 +310,50 @@ public class RegionFunctionArgs implements Serializable { && this.regionAttributes != null; } - /** - * @return the skipIfExists - */ public Boolean isSkipIfExists() { return this.skipIfExists; } - /** - * @return the keyConstraint - */ public String getKeyConstraint() { return this.keyConstraint; } - /** - * @return the valueConstraint - */ public String getValueConstraint() { return this.valueConstraint; } - /** - * @return the statisticsEnabled - */ public Boolean isStatisticsEnabled() { return this.statisticsEnabled; } - /** - * @return the isSetStatisticsEnabled - */ public Boolean isSetStatisticsEnabled() { return this.isSetStatisticsEnabled; } - /** - * @return the entryExpirationIdleTime - */ public RegionFunctionArgs.ExpirationAttrs getEntryExpirationIdleTime() { return this.entryExpirationIdleTime; } - /** - * @return the entryExpirationTTL - */ public RegionFunctionArgs.ExpirationAttrs getEntryExpirationTTL() { return this.entryExpirationTTL; } - /** - * @return the regionExpirationIdleTime - */ public RegionFunctionArgs.ExpirationAttrs getRegionExpirationIdleTime() { return this.regionExpirationIdleTime; } - /** - * @return the regionExpirationTTL - */ public RegionFunctionArgs.ExpirationAttrs getRegionExpirationTTL() { return this.regionExpirationTTL; } - /** - * @return the diskStore - */ public String getDiskStore() { return this.diskStore; } - /** - * @return the diskSynchronous - */ public Boolean isDiskSynchronous() { return this.diskSynchronous; } - /** - * @return the isSetDiskSynchronous - */ public Boolean isSetDiskSynchronous() { return this.isSetDiskSynchronous; } @@ -321,37 +366,22 @@ public class RegionFunctionArgs implements Serializable { return this.isSetOffHeap; } - /** - * @return the enableAsyncConflation - */ public Boolean isEnableAsyncConflation() { return this.enableAsyncConflation; } - /** - * @return the isSetEnableAsyncConflation - */ public Boolean isSetEnableAsyncConflation() { return this.isSetEnableAsyncConflation; } - /** - * @return the enableSubscriptionConflation - */ public Boolean isEnableSubscriptionConflation() { return this.enableSubscriptionConflation; } - /** - * @return the isSetEnableSubscriptionConflation - */ public Boolean isSetEnableSubscriptionConflation() { return this.isSetEnableSubscriptionConflation; } - /** - * @return the cacheListeners - */ public Set<String> getCacheListeners() { if (this.cacheListeners == null) { return null; @@ -359,23 +389,14 @@ public class RegionFunctionArgs implements Serializable { return Collections.unmodifiableSet(this.cacheListeners); } - /** - * @return the cacheLoader - */ public String getCacheLoader() { return this.cacheLoader; } - /** - * @return the cacheWriter - */ public String getCacheWriter() { return this.cacheWriter; } - /** - * @return the asyncEventQueueIds - */ public Set<String> getAsyncEventQueueIds() { if (this.asyncEventQueueIds == null) { return null; @@ -383,9 +404,6 @@ public class RegionFunctionArgs implements Serializable { return Collections.unmodifiableSet(this.asyncEventQueueIds); } - /** - * @return the gatewaySenderIds - */ public Set<String> getGatewaySenderIds() { if (this.gatewaySenderIds == null) { return null; @@ -393,72 +411,42 @@ public class RegionFunctionArgs implements Serializable { return Collections.unmodifiableSet(this.gatewaySenderIds); } - /** - * @return the PartitionResolver - */ public String getPartitionResolver() { return this.partitionResolver; } - /** - * @return True if Partition Resolver is set otherwise False - */ public Boolean isPartitionResolverSet() { return this.isPartitionResolver; } - /** - * @return the concurrencyChecksEnabled - */ public Boolean isConcurrencyChecksEnabled() { return this.concurrencyChecksEnabled; } - /** - * @return the isSetConcurrencyChecksEnabled - */ public Boolean isSetConcurrencyChecksEnabled() { return this.isSetConcurrencyChecksEnabled; } - /** - * @return the cloningEnabled - */ public Boolean isCloningEnabled() { return this.cloningEnabled; } - /** - * @return the isSetCloningEnabled - */ public Boolean isSetCloningEnabled() { return this.isSetCloningEnabled; } - /** - * @return the mcastEnabled setting - */ public Boolean isMcastEnabled() { return this.mcastEnabled; } - /** - * @return the isSetCloningEnabled - */ public Boolean isSetMcastEnabled() { return this.isSetMcastEnabled; } - /** - * @return the concurrencyLevel - */ public Integer getConcurrencyLevel() { return this.concurrencyLevel; } - /** - * @return the isSetConcurrencyLevel - */ public Boolean isSetConcurrencyLevel() { return this.isSetConcurrencyLevel; } @@ -468,45 +456,26 @@ public class RegionFunctionArgs implements Serializable { || (this.regionShortcut != null && this.regionShortcut.name().startsWith("PARTITION")); } - /** - * @return the partitionArgs - */ public boolean hasPartitionAttributes() { return this.partitionArgs != null && this.partitionArgs.hasPartitionAttributes(); } - /** - * @return the partitionArgs - */ public PartitionArgs getPartitionArgs() { return this.partitionArgs; } - /** - * @return the evictionMax - */ public Integer getEvictionMax() { return this.evictionMax; } - /** - * @return the compressor. - */ public String getCompressor() { return this.compressor; } - /** - * @return the isSetCompressor. - */ public boolean isSetCompressor() { return this.isSetCompressor; } - /** - * @return the regionAttributes - */ - @SuppressWarnings("unchecked") public <K, V> RegionAttributes<K, V> getRegionAttributes() { return (RegionAttributes<K, V>) this.regionAttributes; } @@ -514,14 +483,16 @@ public class RegionFunctionArgs implements Serializable { public static class ExpirationAttrs implements Serializable { private static final long serialVersionUID = 1474255033398008062L; - private ExpirationFor type; - private Integer time; - private ExpirationAction action; + private final ExpirationFor type; + private final Integer time; + private final ExpirationAction action; - public ExpirationAttrs(ExpirationFor type, Integer time, String action) { + public ExpirationAttrs(final ExpirationFor type, final Integer time, final String action) { this.type = type; this.time = time; - if (action != null) { + if (action == null) { + this.action = null; + } else { this.action = getExpirationAction(action); } } @@ -536,23 +507,14 @@ public class RegionFunctionArgs implements Serializable { return expirationAttr; } - /** - * @return the type - */ public ExpirationFor getType() { return type; } - /** - * @return the time - */ public Integer getTime() { return time; } - /** - * @return the action - */ public ExpirationAction getAction() { return action; } @@ -595,6 +557,7 @@ public class RegionFunctionArgs implements Serializable { } } + // TODO: make PartitionArgs immutable public static class PartitionArgs implements Serializable { private static final long serialVersionUID = 5907052187323280919L; @@ -617,9 +580,10 @@ public class RegionFunctionArgs implements Serializable { private boolean hasPartitionAttributes; private final Set<String> userSpecifiedPartitionAttributes = new HashSet<>(); - public PartitionArgs(String prColocatedWith, Integer prLocalMaxMemory, Long prRecoveryDelay, - Integer prRedundantCopies, Long prStartupRecoveryDelay, Long prTotalMaxMemory, - Integer prTotalNumBuckets, String partitionResolver) { + public PartitionArgs(final String prColocatedWith, final Integer prLocalMaxMemory, + final Long prRecoveryDelay, final Integer prRedundantCopies, + final Long prStartupRecoveryDelay, final Long prTotalMaxMemory, + final Integer prTotalNumBuckets, final String partitionResolver) { this.prColocatedWith = prColocatedWith; if (this.prColocatedWith != null) { this.hasPartitionAttributes = true; @@ -667,112 +631,67 @@ public class RegionFunctionArgs implements Serializable { this.hasPartitionAttributes = true; userSpecifiedPartitionAttributes.add(CliStrings.CREATE_REGION__PARTITION_RESOLVER); } - } - /** - * @return the hasPartitionAttributes - */ public Boolean hasPartitionAttributes() { return hasPartitionAttributes; } - /** - * @return the userSpecifiedPartitionAttributes - */ public String getUserSpecifiedPartitionAttributes() { return CliUtil.collectionToString(userSpecifiedPartitionAttributes, -1); } - /** - * @return the prColocatedWith - */ public String getPrColocatedWith() { return prColocatedWith; } - /** - * @return the prLocalMaxMemory - */ public Integer getPrLocalMaxMemory() { return prLocalMaxMemory; } - /** - * @return the isSetPRLocalMaxMemory - */ public Boolean isSetPRLocalMaxMemory() { return isSetPRLocalMaxMemory; } - /** - * @return the prRecoveryDelay - */ public Long getPrRecoveryDelay() { return prRecoveryDelay; } - /** - * @return the isSetPRRecoveryDelay - */ public Boolean isSetPRRecoveryDelay() { return isSetPRRecoveryDelay; } - /** - * @return the prRedundantCopies - */ public Integer getPrRedundantCopies() { return prRedundantCopies; } - /** - * @return the isSetPRRedundantCopies - */ public Boolean isSetPRRedundantCopies() { return isSetPRRedundantCopies; } - /** - * @return the prStartupRecoveryDelay - */ public Long getPrStartupRecoveryDelay() { return prStartupRecoveryDelay; } - /** - * @return the isSetPRStartupRecoveryDelay - */ public Boolean isSetPRStartupRecoveryDelay() { return isSetPRStartupRecoveryDelay; } - /** - * @return the prTotalMaxMemory - */ public Long getPrTotalMaxMemory() { return prTotalMaxMemory; } - /** - * @return the isSetPRTotalMaxMemory - */ public Boolean isSetPRTotalMaxMemory() { return isSetPRTotalMaxMemory; } - /** - * @return the prTotalNumBuckets - */ public Integer getPrTotalNumBuckets() { return prTotalNumBuckets; } - /** - * @return the isSetPRTotalNumBuckets - */ public Boolean isSetPRTotalNumBuckets() { return isSetPRTotalNumBuckets; } } + } http://git-wip-us.apache.org/repos/asf/geode/blob/634cbb34/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java ---------------------------------------------------------------------- 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..bbc5609 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 @@ -19,11 +19,10 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.geode.cache.execute.FunctionAdapter; +import org.apache.geode.cache.execute.Function; 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; @@ -31,21 +30,22 @@ import org.apache.geode.internal.cache.persistence.PersistentMemberID; import org.apache.geode.internal.cache.persistence.PersistentMemberManager; import org.apache.geode.internal.cache.persistence.PersistentMemberPattern; -public class ShowMissingDiskStoresFunction extends FunctionAdapter implements InternalEntity { +public class ShowMissingDiskStoresFunction implements Function, InternalEntity { @Override - public void execute(FunctionContext context) { - final Set<PersistentMemberPattern> memberMissingIDs = new HashSet<PersistentMemberPattern>(); - Set<ColocatedRegionDetails> missingColocatedRegions = new HashSet<ColocatedRegionDetails>(); - + public void execute(final FunctionContext context) { if (context == null) { throw new RuntimeException(); } + + Set<PersistentMemberPattern> memberMissingIDs = new HashSet<>(); + Set<ColocatedRegionDetails> missingColocatedRegions = new HashSet<>(); + try { - final InternalCache cache = (InternalCache) context.getCache(); + InternalCache cache = (InternalCache) context.getCache(); if (cache != null && !cache.isClosed()) { - final DistributedMember member = cache.getMyId(); + DistributedMember member = cache.getMyId(); // Missing DiskStores PersistentMemberManager mm = cache.getPersistentMemberManager(); @@ -55,6 +55,7 @@ public class ShowMissingDiskStoresFunction extends FunctionAdapter implements In memberMissingIDs.add(new PersistentMemberPattern(id)); } } + // Missing colocated regions Set<PartitionedRegion> prs = cache.getPartitionedRegions(); for (PartitionedRegion pr : prs) { @@ -80,13 +81,10 @@ public class ShowMissingDiskStoresFunction extends FunctionAdapter implements In context.getResultSender().lastResult(missingColocatedRegions); } } + } catch (Exception e) { context.getResultSender().sendException(e); } } - @Override - public String getId() { - return getClass().getName(); - } } http://git-wip-us.apache.org/repos/asf/geode/blob/634cbb34/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShutDownFunction.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShutDownFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShutDownFunction.java index 83d694f..d07c8a8 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShutDownFunction.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShutDownFunction.java @@ -14,62 +14,57 @@ */ package org.apache.geode.management.internal.cli.functions; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +import org.apache.logging.log4j.Logger; + +import org.apache.geode.cache.Cache; import org.apache.geode.cache.execute.Function; import org.apache.geode.cache.execute.FunctionContext; -import org.apache.geode.distributed.internal.InternalDistributedSystem; +import org.apache.geode.distributed.DistributedSystem; import org.apache.geode.internal.InternalEntity; import org.apache.geode.internal.logging.LogService; import org.apache.geode.internal.tcp.ConnectionTable; -import org.apache.logging.log4j.Logger; - -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; /** - * * Class for Shutdown function - * - * - * */ public class ShutDownFunction implements Function, InternalEntity { - private static final Logger logger = LogService.getLogger(); - - public static final String ID = ShutDownFunction.class.getName(); private static final long serialVersionUID = 1L; + private static final Logger logger = LogService.getLogger(); @Override - public void execute(FunctionContext context) { + public void execute(final FunctionContext context) { try { - final InternalDistributedSystem system = InternalDistributedSystem.getConnectedInstance(); - if (system == null) { - return; - } - String memberName = system.getDistributedMember().getId(); + Cache cache = context.getCache(); + String memberName = cache.getDistributedSystem().getDistributedMember().getId(); + logger.info("Received GFSH shutdown. Shutting down member " + memberName); - disconnectInNonDaemonThread(system); + disconnectInNonDaemonThread(cache.getDistributedSystem()); context.getResultSender().lastResult("SUCCESS: succeeded in shutting down " + memberName); + } catch (Exception ex) { logger.warn("Error during shutdown", ex); context.getResultSender().lastResult("FAILURE: failed in shutting down " + ex.getMessage()); } } - /* + /** * The shutdown is performed in a separate, non-daemon thread so that the JVM does not shut down * prematurely before the full process has completed. */ - private void disconnectInNonDaemonThread(final InternalDistributedSystem ids) + private void disconnectInNonDaemonThread(final DistributedSystem system) throws InterruptedException, ExecutionException { ExecutorService exec = Executors.newSingleThreadExecutor(); Future future = exec.submit(() -> { ConnectionTable.threadWantsSharedResources(); - if (ids.isConnected()) { - ids.disconnect(); + if (system.isConnected()) { + system.disconnect(); } }); try { @@ -80,12 +75,6 @@ public class ShutDownFunction implements Function, InternalEntity { } @Override - public String getId() { - return ShutDownFunction.ID; - - } - - @Override public boolean hasResult() { return true; }