[ https://issues.apache.org/jira/browse/GEODE-3539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16227085#comment-16227085 ]
ASF GitHub Bot commented on GEODE-3539: --------------------------------------- jinmeiliao closed pull request #992: GEODE-3539: Consolidate CliUtil and DataCommandUtils, DataCommandsUtil URL: https://github.com/apache/geode/pull/992 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java index d990015a5c..2eefb89ea8 100644 --- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java +++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java @@ -18,10 +18,41 @@ import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_MANAGER; import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_POST_PROCESSOR; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileFilter; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.nio.file.Path; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Objects; +import java.util.Properties; +import java.util.Set; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactoryConfigurationError; + import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.filefilter.DirectoryFileFilter; import org.apache.commons.lang.StringUtils; +import org.apache.logging.log4j.Logger; +import org.w3c.dom.Document; +import org.xml.sax.SAXException; + import org.apache.geode.CancelException; import org.apache.geode.cache.AttributesFactory; import org.apache.geode.cache.CacheLoaderException; @@ -53,34 +84,6 @@ import org.apache.geode.management.internal.configuration.messages.ConfigurationResponse; import org.apache.geode.management.internal.configuration.messages.SharedConfigurationStatusResponse; import org.apache.geode.management.internal.configuration.utils.XmlUtils; -import org.apache.logging.log4j.Logger; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileFilter; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.nio.file.Path; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Objects; -import java.util.Properties; -import java.util.Set; -import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactoryConfigurationError; @SuppressWarnings({"deprecation", "unchecked"}) public class ClusterConfigurationService { @@ -671,8 +674,9 @@ private void unlockSharedConfiguration() { private byte[] downloadJarFromLocator(DistributedMember locator, String groupName, String jarName) { - ResultCollector<byte[], List<byte[]>> rc = (ResultCollector<byte[], List<byte[]>>) CliUtil - .executeFunction(new UploadJarFunction(), new Object[] {groupName, jarName}, locator); + ResultCollector<byte[], List<byte[]>> rc = + (ResultCollector<byte[], List<byte[]>>) CliUtil.executeFunction(new UploadJarFunction(), + new Object[] {groupName, jarName}, Collections.singleton(locator)); List<byte[]> result = rc.getResult(); diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/QueryDataFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/QueryDataFunction.java index 0b4470d6e9..0771f33fe7 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/QueryDataFunction.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/QueryDataFunction.java @@ -14,7 +14,21 @@ */ package org.apache.geode.management.internal.beans; +import java.io.Serializable; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.StringTokenizer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import org.apache.commons.lang.StringUtils; +import org.apache.logging.log4j.Logger; + import org.apache.geode.SystemFailure; import org.apache.geode.cache.CacheFactory; import org.apache.geode.cache.DataPolicy; @@ -46,23 +60,10 @@ import org.apache.geode.management.internal.ManagementConstants; import org.apache.geode.management.internal.ManagementStrings; import org.apache.geode.management.internal.SystemManagementService; -import org.apache.geode.management.internal.cli.commands.DataCommandsUtils; +import org.apache.geode.management.internal.cli.CliUtil; import org.apache.geode.management.internal.cli.json.GfJsonException; import org.apache.geode.management.internal.cli.json.GfJsonObject; import org.apache.geode.management.internal.cli.json.TypedJson; -import org.apache.logging.log4j.Logger; - -import java.io.Serializable; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.StringTokenizer; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * This function is executed on one or multiple members based on the member input to @@ -365,7 +366,7 @@ public static Object queryData(final String query, final String members, final i .toString(); } else { Set<DistributedMember> associatedMembers = - DataCommandsUtils.getRegionAssociatedMembers(regionPath, cache, true); + CliUtil.getRegionAssociatedMembers(regionPath, cache, true); if (inputMembers != null && inputMembers.size() > 0) { if (!associatedMembers.containsAll(inputMembers)) { @@ -396,10 +397,9 @@ public static Object queryData(final String query, final String members, final i String randomRegion = regionsInQuery.iterator().next(); + // get the first available member Set<DistributedMember> associatedMembers = - DataCommandsUtils.getQueryRegionsAssociatedMembers(regionsInQuery, cache, false);// First - // available - // member + CliUtil.getQueryRegionsAssociatedMembers(regionsInQuery, cache, false); if (associatedMembers != null && associatedMembers.size() > 0) { Object[] functionArgs = new Object[6]; diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java index 4848f8b265..c6ab85259d 100755 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java @@ -31,13 +31,13 @@ import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; +import java.util.Collections; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.stream.Collectors; import java.util.zip.DataFormatException; import java.util.zip.Deflater; import java.util.zip.Inflater; @@ -58,11 +58,13 @@ import org.apache.geode.internal.cache.execute.AbstractExecution; import org.apache.geode.internal.cache.tier.sockets.CacheClientProxy; import org.apache.geode.internal.util.IOUtils; -import org.apache.geode.management.DistributedSystemMXBean; +import org.apache.geode.management.DistributedRegionMXBean; import org.apache.geode.management.ManagementService; import org.apache.geode.management.cli.Result; +import org.apache.geode.management.internal.MBeanJMXAdapter; import org.apache.geode.management.internal.cli.functions.MembersForRegionFunction; import org.apache.geode.management.internal.cli.i18n.CliStrings; +import org.apache.geode.management.internal.cli.result.ResultBuilder; import org.apache.geode.management.internal.cli.shell.Gfsh; /** @@ -386,6 +388,26 @@ public static String stackTraceAsString(Throwable e) { return instance; } + public static Result getFunctionResult(ResultCollector<?, ?> rc, String commandName) { + Result result; + List<Object> results = (List<Object>) rc.getResult(); + if (results != null) { + Object resultObj = results.get(0); + if (resultObj instanceof String) { + result = ResultBuilder.createInfoResult((String) resultObj); + } else if (resultObj instanceof Exception) { + result = ResultBuilder.createGemFireErrorResult(((Exception) resultObj).getMessage()); + } else { + result = ResultBuilder.createGemFireErrorResult( + CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, commandName)); + } + } else { + result = ResultBuilder.createGemFireErrorResult( + CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, commandName)); + } + return result; + } + static class CustomFileFilter implements FileFilter { private String extensionWithDot; @@ -492,8 +514,7 @@ public static boolean contains(Object[] array, Object object) { */ @SuppressWarnings("unchecked") public static Set<DistributedMember> getAllMembers(InternalCache cache) { - return new HashSet<DistributedMember>( - cache.getInternalDistributedSystem().getDistributionManager().getDistributionManagerIds()); + return getAllMembers(cache.getInternalDistributedSystem()); } @SuppressWarnings("unchecked") @@ -502,19 +523,6 @@ public static boolean contains(Object[] array, Object object) { internalDS.getDistributionManager().getDistributionManagerIds()); } - /** - * Returns a set of all the members of the distributed system for the given groups. - */ - public static Set<DistributedMember> getDistributedMembersByGroup(InternalCache cache, - String[] groups) { - Set<DistributedMember> groupMembers = new HashSet<>(); - for (String group : groups) { - groupMembers.addAll( - cache.getInternalDistributedSystem().getDistributionManager().getGroupMembers(group)); - } - return groupMembers; - } - /*** * Executes a function with arguments on a set of members , ignores the departed members. * @@ -539,29 +547,6 @@ public static boolean contains(Object[] array, Object object) { return execution.execute(function); } - /*** - * Executes a function with arguments on a member , ignores the departed member. - * - * @param function Function to be executed - * @param args Arguments passed to the function, pass null if you wish to pass no arguments to the - * function. - * @param targetMember Member on which the function is to be executed. - * @return ResultCollector - */ - public static ResultCollector<?, ?> executeFunction(final Function function, Object args, - final DistributedMember targetMember) { - Execution execution; - - if (args != null) { - execution = FunctionService.onMember(targetMember).setArguments(args); - } else { - execution = FunctionService.onMember(targetMember); - } - - ((AbstractExecution) execution).setIgnoreDepartedMembers(true); - return execution.execute(function); - } - /** * Returns a Set of DistributedMember for members that have the specified <code>region</code>. * <code>returnAll</code> indicates whether to return all members or only the first member we @@ -569,39 +554,69 @@ public static boolean contains(Object[] array, Object object) { * * @param region region path for which members that have this region are required * @param cache cache instance to use to find members + * @param returnAll if true, returns all matching members, else returns only first one found. * @return a Set of DistributedMember for members that have the specified <code>region</code>. */ public static Set<DistributedMember> getRegionAssociatedMembers(String region, - final InternalCache cache) { + final InternalCache cache, boolean returnAll) { if (region == null || region.isEmpty()) { - return null; + return Collections.emptySet(); } if (!region.startsWith(Region.SEPARATOR)) { region = Region.SEPARATOR + region; } - ManagementService managementService = ManagementService.getExistingManagementService(cache); - DistributedSystemMXBean distributedSystemMXBean = - managementService.getDistributedSystemMXBean(); - Set<DistributedMember> matchedMembers = new HashSet<>(); + DistributedRegionMXBean regionMXBean = + ManagementService.getManagementService(cache).getDistributedRegionMXBean(region); + if (regionMXBean == null) { + return Collections.emptySet(); + } + + String[] regionAssociatedMemberNames = regionMXBean.getMembers(); + Set<DistributedMember> matchedMembers = new HashSet<>(); Set<DistributedMember> allClusterMembers = new HashSet<>(); allClusterMembers.addAll(cache.getMembers()); allClusterMembers.add(cache.getDistributedSystem().getDistributedMember()); for (DistributedMember member : allClusterMembers) { - try { - if (distributedSystemMXBean.fetchRegionObjectName(CliUtil.getMemberNameOrId(member), - region) != null) { + for (String regionAssociatedMemberName : regionAssociatedMemberNames) { + String name = MBeanJMXAdapter.getMemberNameOrId(member); + if (name.equals(regionAssociatedMemberName)) { matchedMembers.add(member); + if (!returnAll) { + return matchedMembers; + } } - } catch (Exception ignored) { } } return matchedMembers; } + /** + * this finds the member that hosts all the regions passed in. + * + * @param regions + * @param cache + * @param returnAll: if true, returns all matching members, otherwise, returns only one. + */ + public static Set<DistributedMember> getQueryRegionsAssociatedMembers(Set<String> regions, + final InternalCache cache, boolean returnAll) { + Set<DistributedMember> results = regions.stream() + .map(region -> getRegionAssociatedMembers(region, cache, true)).reduce((s1, s2) -> { + s1.retainAll(s2); + return s1; + }).get(); + + if (returnAll || results.size() <= 1) { + return results; + } + + // returns a set of only one item + return Collections.singleton(results.iterator().next()); + } + public static String getMemberNameOrId(DistributedMember distributedMember) { String nameOrId = null; if (distributedMember != null) { @@ -611,41 +626,11 @@ public static String getMemberNameOrId(DistributedMember distributedMember) { return nameOrId; } - public static String collectionToString(Collection<?> col, int newlineAfter) { - if (col != null) { - StringBuilder builder = new StringBuilder(); - int lastNewlineAt = 0; - - for (Iterator<?> it = col.iterator(); it.hasNext();) { - Object object = it.next(); - builder.append(String.valueOf(object)); - if (it.hasNext()) { - builder.append(", "); - } - if (newlineAfter > 0 && (builder.length() - lastNewlineAt) / newlineAfter >= 1) { - builder.append(GfshParser.LINE_SEPARATOR); - } - } - return builder.toString(); - } else { - return "" + null; - } - } - public static <T> String arrayToString(T[] array) { - if (array != null) { - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < array.length; i++) { - Object object = array[i]; - builder.append(String.valueOf(object)); - if (i < array.length - 1) { - builder.append(", "); - } - } - return builder.toString(); - } else { - return "" + null; + if (array == null) { + return "null"; } + return Arrays.stream(array).map(String::valueOf).collect(Collectors.joining(", ")); } public static String decodeWithDefaultCharSet(String urlToDecode) { diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java index 0555ad5fa9..139f29639d 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java @@ -407,12 +407,11 @@ RegionAttributes getRegionAttributes(InternalCache cache, String regionPath) { if (attributes == null) { // find first member which has the region - Set<DistributedMember> regionAssociatedMembers = - CliUtil.getRegionAssociatedMembers(regionPath, cache); + Set<DistributedMember> regionAssociatedMembers = findMembersForRegion(cache, regionPath); if (regionAssociatedMembers != null && !regionAssociatedMembers.isEmpty()) { DistributedMember distributedMember = regionAssociatedMembers.iterator().next(); - ResultCollector<?, ?> resultCollector = CliUtil - .executeFunction(FetchRegionAttributesFunction.INSTANCE, regionPath, distributedMember); + ResultCollector<?, ?> resultCollector = + executeFunction(FetchRegionAttributesFunction.INSTANCE, regionPath, distributedMember); List<?> resultsList = (List<?>) resultCollector.getResult(); if (resultsList != null && !resultsList.isEmpty()) { diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandUtil.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandUtil.java deleted file mode 100644 index b15a958207..0000000000 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandUtil.java +++ /dev/null @@ -1,44 +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.commands; - -import java.util.List; - -import org.apache.geode.cache.execute.ResultCollector; -import org.apache.geode.management.cli.Result; -import org.apache.geode.management.internal.cli.i18n.CliStrings; -import org.apache.geode.management.internal.cli.result.ResultBuilder; - -public class DataCommandUtil { - public static Result getFunctionResult(ResultCollector<?, ?> rc, String commandName) { - Result result; - List<Object> results = (List<Object>) rc.getResult(); - if (results != null) { - Object resultObj = results.get(0); - if (resultObj instanceof String) { - result = ResultBuilder.createInfoResult((String) resultObj); - } else if (resultObj instanceof Exception) { - result = ResultBuilder.createGemFireErrorResult(((Exception) resultObj).getMessage()); - } else { - result = ResultBuilder.createGemFireErrorResult( - CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, commandName)); - } - } else { - result = ResultBuilder.createGemFireErrorResult( - CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, commandName)); - } - return result; - } -} diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandsUtils.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandsUtils.java index bca315ffec..7a6bfbc9ab 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandsUtils.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandsUtils.java @@ -15,153 +15,19 @@ package org.apache.geode.management.internal.cli.commands; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Set; -import java.util.StringTokenizer; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; - -import org.apache.geode.LogWriter; -import org.apache.geode.cache.Region; import org.apache.geode.cache.execute.FunctionService; import org.apache.geode.cache.execute.ResultCollector; import org.apache.geode.distributed.DistributedMember; -import org.apache.geode.internal.cache.InternalCache; -import org.apache.geode.management.DistributedRegionMXBean; -import org.apache.geode.management.ManagementService; import org.apache.geode.management.cli.Result; -import org.apache.geode.management.internal.MBeanJMXAdapter; -import org.apache.geode.management.internal.cli.CliUtil; -import org.apache.geode.management.internal.cli.LogWrapper; import org.apache.geode.management.internal.cli.domain.DataCommandRequest; import org.apache.geode.management.internal.cli.domain.DataCommandResult; import org.apache.geode.management.internal.cli.functions.DataCommandFunction; -import org.apache.geode.management.internal.cli.i18n.CliStrings; -import org.apache.geode.management.internal.cli.result.CompositeResultData; import org.apache.geode.management.internal.cli.result.ResultBuilder; -import org.apache.geode.management.internal.cli.result.TabularResultData; public class DataCommandsUtils { - static boolean checkResultList(CompositeResultData rebalanceResultData, List resultList, - DistributedMember member) { - boolean toContinueForOtherMembers = false; - if (CollectionUtils.isNotEmpty(resultList)) { - for (Object object : resultList) { - if (object instanceof Exception) { - rebalanceResultData.addSection().addData( - CliStrings.format(CliStrings.REBALANCE__MSG__NO_EXECUTION, member.getId()), - ((Exception) object).getMessage()); - - LogWrapper.getInstance().info(CliStrings.REBALANCE__MSG__NO_EXECUTION + member.getId() - + " exception=" + ((Throwable) object).getMessage(), ((Throwable) object)); - - toContinueForOtherMembers = true; - break; - } else if (object instanceof Throwable) { - rebalanceResultData.addSection().addData( - CliStrings.format(CliStrings.REBALANCE__MSG__NO_EXECUTION, member.getId()), - ((Throwable) object).getMessage()); - - LogWrapper.getInstance().info(CliStrings.REBALANCE__MSG__NO_EXECUTION + member.getId() - + " exception=" + ((Throwable) object).getMessage(), ((Throwable) object)); - - toContinueForOtherMembers = true; - break; - } - } - } else { - LogWrapper.getInstance().info( - "Rebalancing for member=" + member.getId() + ", resultList is either null or empty"); - rebalanceResultData.addSection().addData("Rebalancing for member=" + member.getId(), - ", resultList is either null or empty"); - toContinueForOtherMembers = true; - } - return toContinueForOtherMembers; - } - - static List<String> tokenize(String str, String separator) { - StringTokenizer st = new StringTokenizer(str, separator); - List<String> rstList = new ArrayList<>(); - while (st.hasMoreTokens()) { - rstList.add(st.nextToken()); - - } - return rstList; - } - - static CompositeResultData toCompositeResultData(CompositeResultData rebalanceResultData, - ArrayList<String> rstlist, int index, boolean simulate, InternalCache cache) { - int resultItemCount = 9; - // add only if there are any valid regions in results - if (rstlist.size() > resultItemCount && StringUtils.isNotEmpty(rstlist.get(resultItemCount))) { - TabularResultData table1 = rebalanceResultData.addSection().addTable("Table" + index); - String newLine = System.getProperty("line.separator"); - StringBuilder resultStr = new StringBuilder(); - resultStr.append(newLine); - table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES); - table1.accumulate("Value", rstlist.get(0)); - resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES).append(" = ") - .append(rstlist.get(0)).append(newLine); - table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM); - table1.accumulate("Value", rstlist.get(1)); - resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM).append(" = ") - .append(rstlist.get(1)).append(newLine); - - table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED); - table1.accumulate("Value", rstlist.get(2)); - resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED).append(" = ") - .append(rstlist.get(2)).append(newLine); - - table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES); - table1.accumulate("Value", rstlist.get(3)); - resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES).append(" = ") - .append(rstlist.get(3)).append(newLine); - - table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME); - table1.accumulate("Value", rstlist.get(4)); - resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME).append(" = ") - .append(rstlist.get(4)).append(newLine); - - table1.accumulate("Rebalanced Stats", - CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED); - table1.accumulate("Value", rstlist.get(5)); - resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED).append(" = ") - .append(rstlist.get(5)).append(newLine); - - table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME); - table1.accumulate("Value", rstlist.get(6)); - resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME).append(" = ") - .append(rstlist.get(6)).append(newLine); - - table1.accumulate("Rebalanced Stats", - CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED); - table1.accumulate("Value", rstlist.get(7)); - resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED).append(" = ") - .append(rstlist.get(7)).append(newLine); - - table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALTIME); - table1.accumulate("Value", rstlist.get(8)); - resultStr.append(CliStrings.REBALANCE__MSG__TOTALTIME).append(" = ").append(rstlist.get(8)) - .append(newLine); - - String headerText; - if (simulate) { - headerText = "Simulated partition regions "; - } else { - headerText = "Rebalanced partition regions "; - } - for (int i = resultItemCount; i < rstlist.size(); i++) { - headerText = headerText + " " + rstlist.get(i); - } - table1.setHeader(headerText); - cache.getLogger().info(headerText + resultStr); - } - return rebalanceResultData; - } static Result makePresentationResult(DataCommandResult dataResult) { if (dataResult != null) { @@ -171,52 +37,6 @@ static Result makePresentationResult(DataCommandResult dataResult) { } } - public static Set<DistributedMember> getRegionAssociatedMembers(String region, - final InternalCache cache, boolean returnAll) { - DistributedMember member; - if (StringUtils.isEmpty(region)) { - return null; - } - DistributedRegionMXBean bean = - ManagementService.getManagementService(cache).getDistributedRegionMXBean(region); - if (bean == null) { - // try with slash ahead - bean = ManagementService.getManagementService(cache) - .getDistributedRegionMXBean(Region.SEPARATOR + region); - } - if (bean == null) { - return null; - } - String[] membersName = bean.getMembers(); - Set<DistributedMember> dsMembers = cache.getMembers(); - Set<DistributedMember> dsMembersWithThisMember = new HashSet<>(); - dsMembersWithThisMember.addAll(dsMembers); - dsMembersWithThisMember.add(cache.getDistributedSystem().getDistributedMember()); - Iterator it = dsMembersWithThisMember.iterator(); - Set<DistributedMember> matchedMembers = new HashSet<>(); - - if (membersName.length > 0) { - while (it.hasNext()) { - DistributedMember dsmember = (DistributedMember) it.next(); - for (String memberName : membersName) { - String name = MBeanJMXAdapter.getMemberNameOrId(dsmember); - if (name.equals(memberName)) { - member = dsmember; - matchedMembers.add(member); - if (!returnAll) { - return matchedMembers; - } - } - } - } - } - // try with function calls - if (matchedMembers.size() == 0) { - matchedMembers = CliUtil.getMembersForeRegionViaFunction(cache, region, true); - } - return matchedMembers; - } - static DataCommandResult callFunctionForRegion(DataCommandRequest request, DataCommandFunction putfn, Set<DistributedMember> members) { if (members.size() == 1) { @@ -259,53 +79,4 @@ static DataCommandResult callFunctionForRegion(DataCommandRequest request, return result; } } - - public static Set<DistributedMember> getQueryRegionsAssociatedMembers(Set<String> regions, - final InternalCache cache, boolean returnAll) { - LogWriter logger = cache.getLogger(); - Set<DistributedMember> members; - Set<DistributedMember> newMembers = null; - Iterator<String> iterator = regions.iterator(); - String region = iterator.next(); - members = getRegionAssociatedMembers(region, cache, true); - if (logger.fineEnabled()) { - logger.fine("Members for region " + region + " Members " + members); - } - List<String> regionAndingList = new ArrayList<>(); - regionAndingList.add(region); - if (regions.size() == 1) { - newMembers = members; - } else { - if (CollectionUtils.isNotEmpty(members)) { - while (iterator.hasNext()) { - region = iterator.next(); - newMembers = getRegionAssociatedMembers(region, cache, true); - if (newMembers == null) { - newMembers = new HashSet<>(); - } - if (logger.fineEnabled()) { - logger.fine("Members for region " + region + " Members " + newMembers); - } - regionAndingList.add(region); - newMembers.retainAll(members); - members = newMembers; - if (logger.fineEnabled()) { - logger.fine( - "Members after anding for regions " + regionAndingList + " List : " + newMembers); - } - } - } - } - members = new HashSet<>(); - if (newMembers == null) { - return members; - } - for (DistributedMember newMember : newMembers) { - members.add(newMember); - if (!returnAll) { - return members; - } - } - return members; - } } diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeConfigCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeConfigCommand.java index 824063ae6d..b7b1f088c5 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeConfigCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeConfigCommand.java @@ -64,7 +64,7 @@ public Result describeConfig( } if (targetMember != null) { ResultCollector<?, ?> rc = - CliUtil.executeFunction(getMemberConfigFunction, hideDefaults, targetMember); + executeFunction(getMemberConfigFunction, hideDefaults, targetMember); ArrayList<?> output = (ArrayList<?>) rc.getResult(); Object obj = output.get(0); diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java index 9f742ef55d..dfe2a57277 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java @@ -56,8 +56,7 @@ public Result describeMember(@CliOption(key = CliStrings.DESCRIBE_MEMBER__IDENTI CliUtil.getDistributedMemberByNameOrId(memberNameOrId); if (memberToBeDescribed != null) { - ResultCollector<?, ?> rc = - CliUtil.executeFunction(getMemberInformation, null, memberToBeDescribed); + ResultCollector<?, ?> rc = executeFunction(getMemberInformation, null, memberToBeDescribed); ArrayList<?> output = (ArrayList<?>) rc.getResult(); Object obj = output.get(0); diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExecuteFunctionCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExecuteFunctionCommand.java index 057edecd70..2c419f1d01 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExecuteFunctionCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExecuteFunctionCommand.java @@ -34,7 +34,6 @@ import org.apache.geode.management.cli.ConverterHint; import org.apache.geode.management.cli.Result; import org.apache.geode.management.internal.cli.CliAroundInterceptor; -import org.apache.geode.management.internal.cli.CliUtil; import org.apache.geode.management.internal.cli.GfshParseResult; import org.apache.geode.management.internal.cli.functions.UserFunctionExecution; import org.apache.geode.management.internal.cli.i18n.CliStrings; @@ -75,9 +74,9 @@ public Result executeFunction( Set<DistributedMember> dsMembers; if (onRegion == null) { // find the members based on the groups or members - dsMembers = CliUtil.findMembers(onGroups, onMembers); + dsMembers = findMembers(onGroups, onMembers); } else { - dsMembers = CliUtil.getRegionAssociatedMembers(onRegion, getCache()); + dsMembers = findMembersForRegion(getCache(), onRegion); } if (dsMembers.size() == 0) { diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportDataCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportDataCommand.java index dc74d12e3b..5f7a6d1732 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportDataCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportDataCommand.java @@ -16,7 +16,6 @@ package org.apache.geode.management.internal.cli.commands; import java.io.File; -import java.util.List; import java.util.Optional; import org.springframework.shell.core.annotation.CliCommand; @@ -73,8 +72,8 @@ public Result exportData( String path = dirPath != null ? defaultFileName(dirPath, regionName) : filePath; final String args[] = {regionName, path, Boolean.toString(parallel)}; - ResultCollector<?, ?> rc = CliUtil.executeFunction(exportDataFunction, args, targetMember); - result = DataCommandUtil.getFunctionResult(rc, CliStrings.EXPORT_DATA); + ResultCollector<?, ?> rc = executeFunction(exportDataFunction, args, targetMember); + result = CliUtil.getFunctionResult(rc, CliStrings.EXPORT_DATA); } catch (CacheClosedException e) { result = ResultBuilder.createGemFireErrorResult(e.getMessage()); } catch (FunctionInvocationTargetException e) { diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportImportClusterConfigurationCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportImportClusterConfigurationCommands.java index 8d2425088e..89e452dd90 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportImportClusterConfigurationCommands.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportImportClusterConfigurationCommands.java @@ -206,14 +206,14 @@ public Result importSharedConfig(@CliOption(key = {CliStrings.IMPORT_SHARED_CONF } private Set<String> getRegionNamesOnServer(DistributedMember server) { - ResultCollector rc = CliUtil.executeFunction(new GetRegionNamesFunction(), null, server); + ResultCollector rc = executeFunction(new GetRegionNamesFunction(), null, server); List<Set<String>> results = (List<Set<String>>) rc.getResult(); return results.get(0); } private CliFunctionResult reCreateCache(DistributedMember server) { - ResultCollector rc = CliUtil.executeFunction(new RecreateCacheFunction(), null, server); + ResultCollector rc = executeFunction(new RecreateCacheFunction(), null, server); List<CliFunctionResult> results = (List<CliFunctionResult>) rc.getResult(); return results.get(0); diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportLogsCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportLogsCommand.java index 45b183b03e..dd56bc9c02 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportLogsCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportLogsCommand.java @@ -157,7 +157,7 @@ public Result exportLogs( cacheWriter.startFile(server.getName()); - CliUtil.executeFunction(new ExportLogsFunction(), + executeFunction(new ExportLogsFunction(), new ExportLogsFunction.Args(start, end, logLevel, onlyLogLevel, logsOnly, statsOnly), server).getResult(); Path zipFile = cacheWriter.endFile(); @@ -224,7 +224,7 @@ public Result exportLogs( * Wrapper to enable stubbing of static method call for unit testing */ ResultCollector estimateLogSize(SizeExportLogsFunction.Args args, DistributedMember member) { - return CliUtil.executeFunction(new SizeExportLogsFunction(), args, member); + return executeFunction(new SizeExportLogsFunction(), args, member); } /** diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GetCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GetCommand.java index ed7ab26c64..9f3501a8a3 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GetCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GetCommand.java @@ -16,7 +16,6 @@ package org.apache.geode.management.internal.cli.commands; import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.callFunctionForRegion; -import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.getRegionAssociatedMembers; import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.makePresentationResult; import java.util.Set; @@ -64,7 +63,7 @@ public Result get( Region region = cache.getRegion(regionPath); DataCommandFunction getfn = new DataCommandFunction(); if (region == null) { - Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), false); + Set<DistributedMember> memberList = findAnyMembersForRegion(getCache(), regionPath); if (CollectionUtils.isNotEmpty(memberList)) { DataCommandRequest request = new DataCommandRequest(); request.setCommand(CliStrings.GET); diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GfshCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GfshCommand.java index a7850683d7..5e2f2d809c 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GfshCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GfshCommand.java @@ -16,6 +16,7 @@ import java.io.PrintWriter; import java.io.StringWriter; +import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -153,7 +154,7 @@ default Execution getMembersFunctionExecutor(final Set<DistributedMember> member } default Set<DistributedMember> findMembersForRegion(InternalCache cache, String regionPath) { - return CliUtil.getRegionAssociatedMembers(regionPath, cache); + return CliUtil.getRegionAssociatedMembers(regionPath, cache, true); } default ResultCollector<?, ?> executeFunction(final Function function, Object args, @@ -161,4 +162,12 @@ default Execution getMembersFunctionExecutor(final Set<DistributedMember> member return CliUtil.executeFunction(function, args, targetMembers); } + default ResultCollector<?, ?> executeFunction(final Function function, Object args, + final DistributedMember targetMember) { + return executeFunction(function, args, Collections.singleton(targetMember)); + } + + default Set<DistributedMember> findAnyMembersForRegion(InternalCache cache, String regionPath) { + return CliUtil.getRegionAssociatedMembers(regionPath, cache, false); + } } diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ImportDataCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ImportDataCommand.java index f81c3f0846..7e4f1d70bf 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ImportDataCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ImportDataCommand.java @@ -15,7 +15,6 @@ package org.apache.geode.management.internal.cli.commands; -import java.util.List; import java.util.Optional; import org.springframework.shell.core.annotation.CliCommand; @@ -74,8 +73,8 @@ public Result importData( String path = dirPath != null ? dirPath : filePath; final Object args[] = {regionName, path, invokeCallbacks, parallel}; - ResultCollector<?, ?> rc = CliUtil.executeFunction(importDataFunction, args, targetMember); - result = DataCommandUtil.getFunctionResult(rc, CliStrings.IMPORT_DATA); + ResultCollector<?, ?> rc = executeFunction(importDataFunction, args, targetMember); + result = CliUtil.getFunctionResult(rc, CliStrings.IMPORT_DATA); } catch (CacheClosedException e) { result = ResultBuilder.createGemFireErrorResult(e.getMessage()); } catch (FunctionInvocationTargetException e) { diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LocateEntryCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LocateEntryCommand.java index d3746c5cac..1d1aa4b4c9 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LocateEntryCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LocateEntryCommand.java @@ -16,7 +16,6 @@ package org.apache.geode.management.internal.cli.commands; import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.callFunctionForRegion; -import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.getRegionAssociatedMembers; import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.makePresentationResult; import java.util.Set; @@ -58,7 +57,7 @@ public Result locateEntry( DataCommandResult dataResult; DataCommandFunction locateEntry = new DataCommandFunction(); - Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), true); + Set<DistributedMember> memberList = findMembersForRegion(getCache(), regionPath); if (CollectionUtils.isNotEmpty(memberList)) { DataCommandRequest request = new DataCommandRequest(); request.setCommand(CliStrings.LOCATE_ENTRY); diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/NetstatCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/NetstatCommand.java index a5d62faa30..0bf2d4002b 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/NetstatCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/NetstatCommand.java @@ -18,8 +18,10 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -102,7 +104,7 @@ public Result netstat( if (!notFoundMembers.isEmpty()) { throw new IllegalArgumentException( CliStrings.format(CliStrings.NETSTAT__MSG__COULD_NOT_FIND_MEMBERS_0, - new Object[] {CliUtil.collectionToString(notFoundMembers, -1)})); + new Object[] {collectionToString(notFoundMembers, -1)})); } } else { Set<DistributedMember> membersToExecuteOn; @@ -145,7 +147,7 @@ public Result netstat( String remoteHost = netstatFunctionResult.getHost(); List<String> membersList = hostMemberListMap.get(remoteHost); resultInfo.append(MessageFormat.format(netstatFunctionResult.getHeaderInfo(), - CliUtil.collectionToString(membersList, 120))); + collectionToString(membersList, 120))); CliUtil.DeflaterInflaterData uncompressedBytes = CliUtil.uncompressBytes( deflaterInflaterData.getData(), deflaterInflaterData.getDataLength()); resultInfo.append(new String(uncompressedBytes.getData())); @@ -189,6 +191,27 @@ public Result netstat( return result; } + String collectionToString(Collection<?> col, int newlineAfter) { + if (col != null) { + StringBuilder builder = new StringBuilder(); + int lastNewlineAt = 0; + + for (Iterator<?> it = col.iterator(); it.hasNext();) { + Object object = it.next(); + builder.append(String.valueOf(object)); + if (it.hasNext()) { + builder.append(", "); + } + if (newlineAfter > 0 && (builder.length() - lastNewlineAt) / newlineAfter >= 1) { + builder.append(GfshParser.LINE_SEPARATOR); + } + } + return builder.toString(); + } else { + return "" + null; + } + } + private void buildMaps(Map<String, DistributedMember> hostMemberMap, Map<String, List<String>> hostMemberListMap, String memberIdOrName, DistributedMember distributedMember) { diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PutCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PutCommand.java index b20aeb1235..ca167a9b97 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PutCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PutCommand.java @@ -16,7 +16,6 @@ package org.apache.geode.management.internal.cli.commands; import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.callFunctionForRegion; -import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.getRegionAssociatedMembers; import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.makePresentationResult; import java.util.Set; @@ -64,7 +63,7 @@ public Result put( Region region = cache.getRegion(regionPath); DataCommandFunction putfn = new DataCommandFunction(); if (region == null) { - Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), false); + Set<DistributedMember> memberList = findAnyMembersForRegion(getCache(), regionPath); if (CollectionUtils.isNotEmpty(memberList)) { DataCommandRequest request = new DataCommandRequest(); request.setCommand(CliStrings.PUT); diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueryCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueryCommand.java index e216964758..4fd9555e42 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueryCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueryCommand.java @@ -39,6 +39,7 @@ import org.apache.geode.management.cli.CliMetaData; import org.apache.geode.management.cli.ConverterHint; import org.apache.geode.management.cli.Result; +import org.apache.geode.management.internal.cli.CliUtil; import org.apache.geode.management.internal.cli.domain.DataCommandRequest; import org.apache.geode.management.internal.cli.domain.DataCommandResult; import org.apache.geode.management.internal.cli.functions.DataCommandFunction; @@ -100,7 +101,7 @@ private DataCommandResult select(String query) { regionsInQuery = Collections.unmodifiableSet(regions); if (regionsInQuery.size() > 0) { Set<DistributedMember> members = - DataCommandsUtils.getQueryRegionsAssociatedMembers(regionsInQuery, cache, false); + CliUtil.getQueryRegionsAssociatedMembers(regionsInQuery, cache, false); if (members != null && members.size() > 0) { DataCommandFunction function = new DataCommandFunction(); DataCommandRequest request = new DataCommandRequest(); diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java index 85801ba962..d0e1fd454e 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java @@ -15,11 +15,8 @@ package org.apache.geode.management.internal.cli.commands; -import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.checkResultList; -import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.toCompositeResultData; -import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.tokenize; - import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; @@ -32,6 +29,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.springframework.shell.core.annotation.CliCommand; @@ -77,7 +75,8 @@ public Result rebalance( help = CliStrings.REBALANCE__TIMEOUT__HELP) long timeout, @CliOption(key = CliStrings.REBALANCE__SIMULATE, specifiedDefaultValue = "true", unspecifiedDefaultValue = "false", - help = CliStrings.REBALANCE__SIMULATE__HELP) boolean simulate) { + help = CliStrings.REBALANCE__SIMULATE__HELP) boolean simulate) + throws Exception { ExecutorService commandExecutors = Executors.newSingleThreadExecutor(); List<Future<Result>> commandResult = new ArrayList<>(); @@ -91,21 +90,125 @@ public Result rebalance( result = fs.get(timeout, TimeUnit.SECONDS); } else { result = fs.get(); - } } catch (TimeoutException timeoutException) { result = ResultBuilder.createInfoResult(CliStrings.REBALANCE__MSG__REBALANCE_WILL_CONTINUE); - - } catch (Exception ex) { - result = ResultBuilder.createGemFireErrorResult(CliStrings.format( - CliStrings.REBALANCE__MSG__EXCEPTION_OCCURRED_WHILE_REBALANCING_0, ex.getMessage())); } LogWrapper.getInstance().info("Rebalance returning result >>>" + result); return result; } + private boolean checkResultList(CompositeResultData rebalanceResultData, List resultList, + DistributedMember member) { + boolean toContinueForOtherMembers = false; + if (CollectionUtils.isNotEmpty(resultList)) { + for (Object object : resultList) { + if (object instanceof Exception) { + rebalanceResultData.addSection().addData( + CliStrings.format(CliStrings.REBALANCE__MSG__NO_EXECUTION, member.getId()), + ((Exception) object).getMessage()); + + LogWrapper.getInstance().info(CliStrings.REBALANCE__MSG__NO_EXECUTION + member.getId() + + " exception=" + ((Throwable) object).getMessage(), ((Throwable) object)); + + toContinueForOtherMembers = true; + break; + } else if (object instanceof Throwable) { + rebalanceResultData.addSection().addData( + CliStrings.format(CliStrings.REBALANCE__MSG__NO_EXECUTION, member.getId()), + ((Throwable) object).getMessage()); + + LogWrapper.getInstance().info(CliStrings.REBALANCE__MSG__NO_EXECUTION + member.getId() + + " exception=" + ((Throwable) object).getMessage(), ((Throwable) object)); + + toContinueForOtherMembers = true; + break; + } + } + } else { + LogWrapper.getInstance().info( + "Rebalancing for member=" + member.getId() + ", resultList is either null or empty"); + rebalanceResultData.addSection().addData("Rebalancing for member=" + member.getId(), + ", resultList is either null or empty"); + toContinueForOtherMembers = true; + } + return toContinueForOtherMembers; + } + + private CompositeResultData toCompositeResultData(CompositeResultData rebalanceResultData, + List<String> rstlist, int index, boolean simulate, InternalCache cache) { + int resultItemCount = 9; + // add only if there are any valid regions in results + if (rstlist.size() > resultItemCount && StringUtils.isNotEmpty(rstlist.get(resultItemCount))) { + TabularResultData table1 = rebalanceResultData.addSection().addTable("Table" + index); + String newLine = System.getProperty("line.separator"); + StringBuilder resultStr = new StringBuilder(); + resultStr.append(newLine); + table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES); + table1.accumulate("Value", rstlist.get(0)); + resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES).append(" = ") + .append(rstlist.get(0)).append(newLine); + table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM); + table1.accumulate("Value", rstlist.get(1)); + resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM).append(" = ") + .append(rstlist.get(1)).append(newLine); + + table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED); + table1.accumulate("Value", rstlist.get(2)); + resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED).append(" = ") + .append(rstlist.get(2)).append(newLine); + + table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES); + table1.accumulate("Value", rstlist.get(3)); + resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES).append(" = ") + .append(rstlist.get(3)).append(newLine); + + table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME); + table1.accumulate("Value", rstlist.get(4)); + resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME).append(" = ") + .append(rstlist.get(4)).append(newLine); + + table1.accumulate("Rebalanced Stats", + CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED); + table1.accumulate("Value", rstlist.get(5)); + resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED).append(" = ") + .append(rstlist.get(5)).append(newLine); + + table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME); + table1.accumulate("Value", rstlist.get(6)); + resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME).append(" = ") + .append(rstlist.get(6)).append(newLine); + + table1.accumulate("Rebalanced Stats", + CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED); + table1.accumulate("Value", rstlist.get(7)); + resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED).append(" = ") + .append(rstlist.get(7)).append(newLine); + + table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALTIME); + table1.accumulate("Value", rstlist.get(8)); + resultStr.append(CliStrings.REBALANCE__MSG__TOTALTIME).append(" = ").append(rstlist.get(8)) + .append(newLine); + + String headerText; + if (simulate) { + headerText = "Simulated partition regions "; + } else { + headerText = "Rebalanced partition regions "; + } + for (int i = resultItemCount; i < rstlist.size(); i++) { + headerText = headerText + " " + rstlist.get(i); + } + table1.setHeader(headerText); + cache.getLogger().info(headerText + resultStr); + } + return rebalanceResultData; + } + + // TODO EY Move this to its own class private class ExecuteRebalanceWithTimeout implements Callable<Result> { + String[] includeRegions = null; String[] excludeRegions = null; boolean simulate; @@ -165,8 +268,8 @@ Result executeRebalanceWithTimeout(String[] includeRegions, String[] excludeRegi if (simulate) { List resultList; try { - resultList = (ArrayList) CliUtil - .executeFunction(rebalanceFunction, functionArgs, member).getResult(); + resultList = (ArrayList) executeFunction(rebalanceFunction, functionArgs, member) + .getResult(); } catch (Exception ex) { LogWrapper.getInstance() .info(CliStrings.format( @@ -184,15 +287,15 @@ Result executeRebalanceWithTimeout(String[] includeRegions, String[] excludeRegi result = ResultBuilder.buildResult(rebalanceResultData); continue; } - List<String> rstList = tokenize((String) resultList.get(0), ","); + List<String> rstList = Arrays.asList(((String) resultList.get(0)).split(",")); - result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData, - (ArrayList) rstList, index, true, cache)); + result = ResultBuilder.buildResult( + toCompositeResultData(rebalanceResultData, rstList, index, true, cache)); } else { List resultList; try { - resultList = (ArrayList) CliUtil - .executeFunction(rebalanceFunction, functionArgs, member).getResult(); + resultList = (ArrayList) executeFunction(rebalanceFunction, functionArgs, member) + .getResult(); } catch (Exception ex) { LogWrapper.getInstance() .info(CliStrings.format( @@ -210,10 +313,10 @@ Result executeRebalanceWithTimeout(String[] includeRegions, String[] excludeRegi result = ResultBuilder.buildResult(rebalanceResultData); continue; } - List<String> rstList = tokenize((String) resultList.get(0), ","); + List<String> rstList = Arrays.asList(((String) resultList.get(0)).split(",")); - result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData, - (ArrayList) rstList, index, false, cache)); + result = ResultBuilder.buildResult( + toCompositeResultData(rebalanceResultData, rstList, index, false, cache)); } } else { @@ -426,17 +529,17 @@ private Result executeRebalanceOnDS(InternalCache cache, String simulate, try { if (checkMemberPresence(dsMember, cache)) { - resultList = (ArrayList) CliUtil - .executeFunction(rebalanceFunction, functionArgs, dsMember).getResult(); + resultList = (ArrayList) executeFunction(rebalanceFunction, functionArgs, dsMember) + .getResult(); if (checkResultList(rebalanceResultData, resultList, dsMember)) { result = ResultBuilder.buildResult(rebalanceResultData); continue; } - List<String> rstList = tokenize((String) resultList.get(0), ","); + List<String> rstList = Arrays.asList(((String) resultList.get(0)).split(",")); result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData, - (ArrayList) rstList, index, simulate.equals("true"), cache)); + rstList, index, simulate.equals("true"), cache)); index++; // Rebalancing for region is done so break and continue with other region @@ -471,9 +574,9 @@ private Result executeRebalanceOnDS(InternalCache cache, String simulate, continue; } - List<String> rstList = tokenize((String) resultList.get(0), ","); - result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData, - (ArrayList) rstList, index, simulate.equals("true"), cache)); + List<String> rstList = Arrays.asList(((String) resultList.get(0)).split(",")); + result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData, rstList, + index, simulate.equals("true"), cache)); index++; } } diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RemoveCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RemoveCommand.java index 1318cdf4e9..c34805d8db 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RemoveCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RemoveCommand.java @@ -16,7 +16,6 @@ package org.apache.geode.management.internal.cli.commands; import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.callFunctionForRegion; -import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.getRegionAssociatedMembers; import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.makePresentationResult; import static org.apache.geode.management.internal.cli.result.ResultBuilder.createUserErrorResult; @@ -70,7 +69,7 @@ public Result remove( DataCommandFunction removefn = new DataCommandFunction(); DataCommandResult dataResult; if (region == null) { - Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), false); + Set<DistributedMember> memberList = findAnyMembersForRegion(getCache(), regionPath); if (CollectionUtils.isEmpty(memberList)) { return createUserErrorResult(String.format(REGION_NOT_FOUND, regionPath)); diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/DataCommandResult.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/DataCommandResult.java index 5ad88c393f..429c329da7 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/DataCommandResult.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/DataCommandResult.java @@ -56,10 +56,6 @@ private List<SelectResultRow> selectResult; private String queryTraceString; - public static final String QUERY_PAGE_START = "startCount"; - public static final String QUERY_PAGE_END = "endCount"; - public static final String QUERY_TRACE = "Query Trace"; - public static final String RESULT_FLAG = "Result"; public static final String NUM_ROWS = "Rows"; diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java index fdcd888d93..6d2e9ccbed 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java @@ -331,7 +331,7 @@ public void getRegionAssociatedMembers() { InternalCache cache = getCache(); - Set<DistributedMember> set = CliUtil.getRegionAssociatedMembers(region1, cache); + Set<DistributedMember> set = CliUtil.getRegionAssociatedMembers(region1, cache, true); assertNotNull(set); assertEquals(4, set.size()); assertEquals(true, containsMember(set, MEMBER_1_GROUP1)); @@ -345,13 +345,13 @@ public void getRegionAssociatedMembers() { * assertIndexDetailsEquals(1, set.size()); */ - set = CliUtil.getRegionAssociatedMembers(region_group1, cache); + set = CliUtil.getRegionAssociatedMembers(region_group1, cache, true); assertNotNull(set); assertEquals(2, set.size()); assertEquals(true, containsMember(set, MEMBER_1_GROUP1)); assertEquals(true, containsMember(set, MEMBER_2_GROUP1)); - set = CliUtil.getRegionAssociatedMembers(region_member2_group1, cache); + set = CliUtil.getRegionAssociatedMembers(region_member2_group1, cache, true); assertNotNull(set); assertEquals(1, set.size()); assertEquals(true, containsMember(set, MEMBER_2_GROUP1)); diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/QueryCommandUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilTest.java similarity index 62% rename from geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/QueryCommandUnitTest.java rename to geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilTest.java index 11da4b7b55..9f049c2456 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/QueryCommandUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilTest.java @@ -13,18 +13,27 @@ * the License. */ -package org.apache.geode.management.internal.cli.commands; +package org.apache.geode.management.internal.cli; + +import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; import org.junit.experimental.categories.Category; import org.apache.geode.test.junit.categories.UnitTest; + @Category(UnitTest.class) -public class QueryCommandUnitTest { +public class CliUtilTest { @Test - public void query() throws Exception { - QueryCommand queryCommand = new QueryCommand(); + public void arrayToString() throws Exception { + assertThat(CliUtil.arrayToString(null)).isEqualTo("null"); + String[] array1 = {"one", "two", "three"}; + assertThat(CliUtil.arrayToString(array1)).isEqualTo("one, two, three"); + String[] array2 = {"one", null, "three"}; + assertThat(CliUtil.arrayToString(array2)).isEqualTo("one, null, three"); + String[] array3 = {null}; + assertThat(CliUtil.arrayToString(array3)).isEqualTo("null"); } } diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandTest.java index 4bf1532324..a89a918987 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandTest.java @@ -25,6 +25,7 @@ import static org.mockito.Mockito.when; import java.util.Collections; +import java.util.Set; import org.junit.Before; import org.junit.Ignore; @@ -133,7 +134,7 @@ public void templateRegionAttributesNotAvailable() throws Exception { @Test public void defaultValues() throws Exception { ResultCollector resultCollector = mock(ResultCollector.class); - doReturn(resultCollector).when(command).executeFunction(any(), any(), any()); + doReturn(resultCollector).when(command).executeFunction(any(), any(), any(Set.class)); when(resultCollector.getResult()).thenReturn(Collections.emptyList()); DistributedSystemMXBean dsMBean = mock(DistributedSystemMXBean.class); doReturn(dsMBean).when(command).getDSMBean(any()); @@ -144,7 +145,7 @@ public void defaultValues() throws Exception { parser.executeCommandWithInstance(command, "create region --name=A --type=REPLICATE"); ArgumentCaptor<RegionFunctionArgs> argsCaptor = ArgumentCaptor.forClass(RegionFunctionArgs.class); - verify(command).executeFunction(any(), argsCaptor.capture(), any()); + verify(command).executeFunction(any(), argsCaptor.capture(), any(Set.class)); RegionFunctionArgs args = argsCaptor.getValue(); assertThat(args.getRegionPath()).isEqualTo("/A"); diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExecuteFunctionCommandSecurityTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExecuteFunctionCommandSecurityTest.java index dd78f0cc11..428cf3b030 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExecuteFunctionCommandSecurityTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExecuteFunctionCommandSecurityTest.java @@ -41,10 +41,10 @@ import org.apache.geode.management.internal.security.TestFunctions.ReadFunction; import org.apache.geode.management.internal.security.TestFunctions.WriteFunction; import org.apache.geode.security.SimpleTestSecurityManager; -import org.apache.geode.test.junit.rules.GfshShellConnectionRule; import org.apache.geode.test.dunit.rules.LocatorServerStartupRule; import org.apache.geode.test.dunit.rules.MemberVM; import org.apache.geode.test.junit.categories.DistributedTest; +import org.apache.geode.test.junit.rules.GfshShellConnectionRule; @Category(DistributedTest.class) public class ExecuteFunctionCommandSecurityTest implements Serializable { @@ -152,7 +152,7 @@ public void readOnlyUserOnPartitionedRegion() throws Exception { private static void waitUntilRegionMBeansAreRegistered() { Awaitility.await().atMost(10, TimeUnit.SECONDS).until(() -> { Set<DistributedMember> regionMembers = CliUtil.getRegionAssociatedMembers(REPLICATED_REGION, - (InternalCache) CacheFactory.getAnyInstance()); + (InternalCache) CacheFactory.getAnyInstance(), true); assertThat(regionMembers).hasSize(2); }); } diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java index fe7b1792f2..2e9bafe95b 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java @@ -17,7 +17,6 @@ import static org.apache.geode.distributed.ConfigurationProperties.NAME; import static org.apache.geode.test.dunit.Assert.assertEquals; -import static org.apache.geode.test.dunit.Assert.assertFalse; import static org.apache.geode.test.dunit.Assert.assertNotEquals; import static org.apache.geode.test.dunit.Assert.assertNotNull; import static org.apache.geode.test.dunit.Assert.assertNotSame; @@ -421,7 +420,7 @@ private void doQueryRegionsAssociatedMembers(String queryTemplate, int expectedM getLogWriter().info("Region in query : " + regionsInQuery); if (regionsInQuery.size() > 0) { Set<DistributedMember> members = - DataCommandsUtils.getQueryRegionsAssociatedMembers(regionsInQuery, cache, returnAll); + CliUtil.getQueryRegionsAssociatedMembers(regionsInQuery, cache, returnAll); getLogWriter().info("Members for Region in query : " + members); if (expectedMembers != -1) { assertNotNull(members); diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/RemoveCommandDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/RemoveCommandDUnitTest.java index 986d1ae876..5a0bb17e62 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/RemoveCommandDUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/RemoveCommandDUnitTest.java @@ -14,7 +14,6 @@ */ package org.apache.geode.management.internal.cli.commands; -import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.getRegionAssociatedMembers; import static org.apache.geode.management.internal.cli.commands.RemoveCommand.REGION_NOT_FOUND; import static org.assertj.core.api.Assertions.assertThat; @@ -35,6 +34,7 @@ import org.apache.geode.cache.RegionShortcut; import org.apache.geode.distributed.DistributedMember; import org.apache.geode.internal.cache.InternalCache; +import org.apache.geode.management.internal.cli.CliUtil; import org.apache.geode.test.dunit.SerializableCallableIF; import org.apache.geode.test.dunit.rules.LocatorServerStartupRule; import org.apache.geode.test.dunit.rules.MemberVM; @@ -178,7 +178,7 @@ public void removeEmptyKey() { } private boolean regionMBeansAreInitialized() { - Set<DistributedMember> members = getRegionAssociatedMembers(REPLICATE_REGION_NAME, + Set<DistributedMember> members = CliUtil.getRegionAssociatedMembers(REPLICATE_REGION_NAME, (InternalCache) CacheFactory.getAnyInstance(), false); return CollectionUtils.isNotEmpty(members); diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/RemoveCommandJsonDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/RemoveCommandJsonDUnitTest.java index 1f2a75703f..4137820729 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/RemoveCommandJsonDUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/RemoveCommandJsonDUnitTest.java @@ -14,7 +14,6 @@ */ package org.apache.geode.management.internal.cli.commands; -import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.getRegionAssociatedMembers; import static org.assertj.core.api.Assertions.assertThat; import java.io.Serializable; @@ -34,6 +33,7 @@ import org.apache.geode.cache.RegionShortcut; import org.apache.geode.distributed.DistributedMember; import org.apache.geode.internal.cache.InternalCache; +import org.apache.geode.management.internal.cli.CliUtil; import org.apache.geode.management.internal.cli.dto.Key1; import org.apache.geode.management.internal.cli.dto.Value2; import org.apache.geode.test.dunit.SerializableCallableIF; @@ -149,7 +149,7 @@ private Key1 key(int n) { } private boolean regionMBeansAreInitialized() { - Set<DistributedMember> members = getRegionAssociatedMembers(JSON_REGION_NAME, + Set<DistributedMember> members = CliUtil.getRegionAssociatedMembers(JSON_REGION_NAME, (InternalCache) CacheFactory.getAnyInstance(), false); return CollectionUtils.isNotEmpty(members); diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsJUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsJUnitTest.java index bb010e7aa6..d73bfc5f6e 100644 --- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsJUnitTest.java +++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsJUnitTest.java @@ -444,7 +444,7 @@ public void testDestroySingleIndexNoRegionMembers(boolean expectedToSucceed) thr } doReturn(mockResultCollector).when(commands).executeFunction( - isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any()); + isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any(Set.class)); doReturn(cliFunctionResults).when(mockResultCollector).getResult(); doReturn(Collections.emptySet()).when(commands).getNormalMembers(any()); @@ -481,7 +481,7 @@ public void testDestroySingleIndexWithRegionMembers(boolean expectedToSucceed) t } doReturn(mockResultCollector).when(commands).executeFunction( - isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any()); + isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any(Set.class)); doReturn(cliFunctionResults).when(mockResultCollector).getResult(); doReturn(members).when(commands).getNormalMembers(any()); @@ -513,7 +513,7 @@ public void testDestroyAllIndexesNoRegionMembers(boolean expectedToSucceed) thro } doReturn(mockResultCollector).when(commands).executeFunction( - isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any()); + isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any(Set.class)); doReturn(cliFunctionResults).when(mockResultCollector).getResult(); doReturn(Collections.emptySet()).when(commands).getNormalMembers(any()); @@ -550,7 +550,7 @@ public void testDestroyAllIndexesWithRegionMembers(boolean expectedToSucceed) th } doReturn(mockResultCollector).when(commands).executeFunction( - isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any()); + isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any(Set.class)); doReturn(cliFunctionResults).when(mockResultCollector).getResult(); doReturn(Collections.emptySet()).when(commands).getNormalMembers(any()); ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Add more test coverage for p2p commands > --------------------------------------- > > Key: GEODE-3539 > URL: https://issues.apache.org/jira/browse/GEODE-3539 > Project: Geode > Issue Type: Improvement > Components: gfsh > Reporter: Jinmei Liao > > Add more command tests that would eventually get rid of the legacy tests. -- This message was sent by Atlassian JIRA (v6.4.14#64029)