You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bo...@apache.org on 2018/05/14 19:44:21 UTC

[geode] branch feature/GEODE-5145 updated (330dfd0 -> 0326713)

This is an automated email from the ASF dual-hosted git repository.

boglesby pushed a change to branch feature/GEODE-5145
in repository https://gitbox.apache.org/repos/asf/geode.git.


    omit 330dfd0  GEODE-5145: Added support for destroying an index during region creation
     add 9e4a51f  GEODE-5083: Alter region --name option no longer auto completes (#1898)
     add a7c1601  GEODE-5010: refactor commands and CommandExecutor to use ResultModel (#1896)
     add be29133  GEODE-5055: Handle index creation in progress. (#1847)
     add 064a89b  GEODE-2953: Expand wildcard imports in geode-core.cache. (#1911)
     add 839335a  GEODE-4890: fix to reduce flakiness (#1914)
     add db6d865  GEODE-4860: make sure the extensions xsd is upgradable (#1904)
     add 7eded7b  GEODE-5032: massage configuration objects for better usability. (#1894)
     add 8f0b97a  GEODE-5047: list lucene index result modified (#1799)
     add 91ed05a  GEODE-2542: Extend timeouts from 10s to 30; cleanup (#1897)
     add 82b7910  GEODE-2953: Expand wildcard imports in geode-core:test.cache.  (#1907)
     add 8bb435e  GEODE-2953: Expand wildcard imports in remaining non-core modules and tests.  (#1910)
     add b357d37  GEODE-2953: Expand wildcard imports in geode-core:test.distributed.  (#1905)
     add 3dfe615  GEODE-2953: Expand wildcard imports in geode-core:test.cache30.  (#1906)
     add 62f9944  GEODE-2953: Expand wildcard imports in geode-core:test. (#1909)
     add 18e2d01  GEODE-2953: Expand wildcard imports in geode-core.  (#1912)
     add a063d1b  GEODE-2953: Expand wildcard imports in geode-core:test... subpackages.  (#1908)
     add 4e53223  GEODE-5146: WAN Information view in Pulse shows wrong status for remo… (#1877)
     add 1dfbffa  GEODE-5166: NPE thrown while processing InitialImage of subscription region
     add fd49f0d  GEODE-5177: Remove subscription from InitializedDiskRegionWithIoExceptionRegressionTest
     add 71994b4  GEODE-5032: massage configuration objects for better usability. (#1931)
     add 1e7c05c  GEODE-5011: Convert ExecuteFunctionCommand and ExportConfigCommand to use ResultModel (#1901)
     add 99074c6  GEODE-5173: Transaction will fault in value from disk if value is Tok… (#1925)
     add 6284169  GEODE-2668: Better handling of configuration updates (#1892)
     add b18b67e  GEODE-5141: Adding @since tag to setLuceneSerializer method (#1903)
     add 497b866  GEODE-5132: Fix testParallelPropagationLoopBack3Sites
     add d0d624e  GEODE-4858: Added CliFunction abstract class (#1932)
     add 87d0430  GEODE-5047: Fixed javadoc issue
     add f1bca73  GEODE-4858: refactor ConfigurePdxCommand (#1933)
     add d038373  GEODE-5109: Overriding the missing profile check for Lucene (#1922)
     add 0e79891  GEODE-5177: Add getEvictionController() to InternalRegion
     add 5e8e8f6  GEODE-5177: Clean up DiskRegionDistributedTest
     add e941250  Revert "GEODE-5057: Removed experimental tag from Jdbc connector code base (#1789)" (#1936)
     add eb6055e  Revert "GEODE-5173: Transaction will fault in value from disk if value is Tok… (#1925)"
     add a6cdf6b  GEODE-5001: For log4j >= 2.10 we need to ignore the log4j jars from the PerTestClassLoaderRunner (#1938)
     add 06079fc  GEODE-4858: refactor JndiBinding commands (#1935)
     add de88000  GEODE-5150 Revise how to implement a cache loader docs (#1929)
     add 5367fa5  GEODE-5194: Relax Gfsh connection version check to exclude patch version (#1942)
     add 9f6eca3  GEODE-5183 require toData/fromData methods to correspond to a known version
     add ffe4b02  GEODE-5182: add 1.6.0 as a backward-compatibility test version
     add 112cd71  GEODE-4858 refactor jdbc describe & list commands to use result model (#1939)
     add 3827332  GEODE-5184 Add unit tests for PersistenceInitialImageAdvisor (#1934)
     add ce851f5  COMMIT-THEN-REVIEW: Fix docs formatting of bulleted items.
     add f1c6b56  GEODE-5011: Convert 'Data' commands to ResultModel (#1945)
     add 4f330c3  Revert "GEODE-5011: Convert 'Data' commands to ResultModel (#1945)"
     add 8ed21ab  GEODE-5011: Convert 'Data' commands to ResultModel (#1945)
     add a60b8d4  GEODE-5198 NPE in DataSerializer registration when forming a client/server connection during handshake
     add 6839dca  GEODE-5172: refactor txApplyPut to reuse RegionMapPut (#1917)
     add 4c851fc  GEODE-5200 Correct docs for use-cluster-configuration property (#1949)
     add fb6d4a0  Docs: update redirects for user guide builds
     add df89f93  GEODE-5144: The test should wait for secondary queue to drain (#1947)
     add 52bdb96  Feature/geode 5173 1 (#1948)
     add 07ef1fa  GEODE-5203: User Guide - clarify that client SSL setting descriptions are for Java clients only
     add 5c37893  GEODE-5087: send a BatchDestroyOperation for each dropped event at serial primary sender (#1924)
     add bf692de  GEODE-5201 Categorize many of our tests (#1950)
     add 46de561  GEODE-577: Refactored QueryMonitorDUnitTest to use new rules (#1923)
     add 930b8f6  GEODE-5211: event processor could be null when Concurrent Serial Gateway Sender is being stopped (#1960)
     new 0326713  GEODE-5145: Added support for destroying an index during region creation

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (330dfd0)
            \
             N -- N -- N   refs/heads/feature/GEODE-5145 (0326713)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../session/junit/PerTestClassLoaderRunner.java    |   6 +
 .../modules/session/Tomcat7SessionsJUnitTest.java  |   3 +-
 .../modules/session/TestSessionsTomcat8Base.java   |   6 +-
 .../Tomcat8SessionsClientServerDUnitTest.java      |   3 +-
 .../modules/session/Tomcat8SessionsDUnitTest.java  |   3 +-
 .../geode/modules/session/TestSessionsBase.java    |   8 +-
 .../util/ClassLoaderObjectInputStreamTest.java     |   3 +-
 .../RestAPIOnRegionFunctionExecutionDUnitTest.java |   4 +-
 ...RestAPIsOnGroupsFunctionExecutionDUnitTest.java |   2 +-
 geode-book/redirects.rb                            |   4 +-
 .../geode/annotations/ExperimentalJUnitTest.java   |   2 +-
 .../geode/connectors/jdbc/JdbcAsyncWriter.java     |   6 +-
 .../connectors/jdbc/JdbcConnectorException.java    |   8 +-
 .../apache/geode/connectors/jdbc/JdbcLoader.java   |   3 +-
 .../apache/geode/connectors/jdbc/JdbcWriter.java   |   3 +-
 .../jdbc/internal/AbstractJdbcCallback.java        |   3 +-
 .../internal/ConnectionConfigExistsException.java  |   3 +
 .../ConnectionConfigNotFoundException.java         |   3 +
 .../jdbc/internal/JdbcConnectorService.java        |   3 +-
 .../jdbc/internal/JdbcConnectorServiceImpl.java    |   3 +-
 .../internal/RegionMappingExistsException.java     |   3 +
 .../internal/RegionMappingNotFoundException.java   |   3 +
 .../geode/connectors/jdbc/internal/SqlHandler.java |   3 +-
 .../jdbc/internal/SqlToPdxInstanceCreator.java     |   3 +-
 .../jdbc/internal/cli/AlterConnectionCommand.java  |  16 +-
 .../jdbc/internal/cli/AlterConnectionFunction.java |  18 +-
 .../jdbc/internal/cli/AlterMappingCommand.java     |  17 +-
 .../jdbc/internal/cli/AlterMappingFunction.java    |  16 +-
 .../jdbc/internal/cli/CreateConnectionCommand.java |  17 +-
 .../internal/cli/CreateConnectionFunction.java     |  25 +-
 .../jdbc/internal/cli/CreateMappingCommand.java    |  18 +-
 .../jdbc/internal/cli/CreateMappingFunction.java   |  13 +-
 .../internal/cli/DescribeConnectionCommand.java    |  60 +-
 .../internal/cli/DescribeConnectionFunction.java   |  16 +-
 .../jdbc/internal/cli/DescribeMappingCommand.java  |  56 +-
 .../jdbc/internal/cli/DescribeMappingFunction.java |  18 +-
 .../internal/cli/DestroyConnectionCommand.java     |  18 +-
 .../internal/cli/DestroyConnectionFunction.java    |  58 +-
 .../jdbc/internal/cli/DestroyMappingCommand.java   |  17 +-
 .../jdbc/internal/cli/DestroyMappingFunction.java  |  57 +-
 .../jdbc/internal/cli/ExceptionHandler.java        |  57 --
 .../jdbc/internal/cli/JdbcCliFunction.java         |  67 --
 .../jdbc/internal/cli/ListConnectionCommand.java   |  42 +-
 .../jdbc/internal/cli/ListConnectionFunction.java  |  18 +-
 .../jdbc/internal/cli/ListMappingCommand.java      |  41 +-
 .../jdbc/internal/cli/ListMappingFunction.java     |  18 +-
 .../internal/configuration/ConnectorService.java   |   2 +
 .../sanctioned-geode-connectors-serializables.txt  |   1 -
 .../jdbc/JdbcAsyncWriterIntegrationTest.java       |  11 +-
 .../jdbc/JdbcConnectorExceptionTest.java           |   2 +-
 .../connectors/jdbc/internal/SqlHandlerTest.java   |   1 +
 .../cli/AlterConnectionCommandDUnitTest.java       |  15 +-
 .../cli/AlterConnectionCommandIntegrationTest.java |   6 +-
 .../internal/cli/AlterConnectionFunctionTest.java  |  10 +-
 .../internal/cli/AlterMappingCommandDUnitTest.java |   3 +-
 .../cli/AlterMappingCommandIntegrationTest.java    |   8 +-
 .../internal/cli/AlterMappingFunctionTest.java     |  12 +-
 .../cli/CreateConnectionCommandDUnitTest.java      |   3 +-
 .../CreateConnectionCommandIntegrationTest.java    |  12 +-
 .../cli/CreateMappingCommandDUnitTest.java         |   3 +-
 .../cli/CreateMappingCommandIntegrationTest.java   |  14 +-
 .../cli/DescribeConnectionCommandDUnitTest.java    |   6 +-
 .../cli/DescribeConnectionCommandTest.java         |   9 +-
 .../cli/DescribeConnectionFunctionTest.java        |  14 +-
 .../cli/DescribeMappingCommandDUnitTest.java       |   6 +-
 .../internal/cli/DescribeMappingCommandTest.java   |   9 +-
 .../internal/cli/DescribeMappingFunctionTest.java  |  13 +-
 .../cli/DestroyConnectionCommandDUnitTest.java     |   3 +-
 .../DestroyConnectionCommandIntegrationTest.java   |   8 +-
 .../cli/DestroyConnectionFunctionTest.java         |   6 +-
 .../cli/DestroyMappingCommandDunitTest.java        |   3 +-
 .../cli/DestroyMappingCommandFunctionTest.java     |   7 +-
 .../cli/DestroyMappingCommandIntegrationTest.java  |   8 +-
 .../cli/JDBCConnectorFunctionsSecurityTest.java    |   9 +-
 .../cli/JdbcClusterConfigDistributedTest.java      |   3 +-
 .../cli/ListConnectionCommandDUnitTest.java        |   3 +-
 .../internal/cli/ListConnectionCommandTest.java    |  14 +-
 .../internal/cli/ListConnectionFunctionTest.java   |  17 +-
 .../internal/cli/ListMappingCommandDUnitTest.java  |   2 +-
 .../jdbc/internal/cli/ListMappingCommandTest.java  |  16 +-
 .../jdbc/internal/cli/ListMappingFunctionTest.java |  20 +-
 .../admin/internal/CacheHealthConfigImpl.java      |   2 +-
 .../admin/internal/CacheServerConfigImpl.java      |   2 +-
 .../DistributedSystemHealthConfigImpl.java         |   2 +-
 .../internal/DistributionLocatorConfigImpl.java    |   2 +-
 .../admin/internal/DistributionLocatorImpl.java    |   6 +-
 .../admin/internal/GemFireHealthConfigImpl.java    |   2 +-
 .../admin/internal/ManagedEntityConfigImpl.java    |   4 +-
 .../internal/ManagedEntityConfigXmlGenerator.java  |  35 +-
 .../admin/internal/MemberHealthConfigImpl.java     |   2 +-
 .../internal/SystemMemberBridgeServerImpl.java     |   4 +-
 .../admin/internal/SystemMemberCacheEventImpl.java |   3 +-
 .../internal/SystemMemberRegionEventImpl.java      |   3 +-
 .../admin/internal/SystemMemberRegionImpl.java     |  25 +-
 .../DistributedSystemHealthConfigJmxImpl.java      |   9 +-
 .../geode/cache/CommitDistributionException.java   |   3 +-
 .../java/org/apache/geode/cache/DataPolicy.java    |   2 +-
 .../apache/geode/cache/DynamicRegionFactory.java   |   2 +-
 .../org/apache/geode/cache/InterestPolicy.java     |   2 +-
 .../java/org/apache/geode/cache/LossAction.java    |   7 +-
 .../java/org/apache/geode/cache/MirrorType.java    |   2 +-
 .../java/org/apache/geode/cache/Operation.java     |   2 +-
 .../apache/geode/cache/RegionAccessException.java  |   7 +-
 .../geode/cache/RegionDistributionException.java   |   7 +-
 .../org/apache/geode/cache/ResumptionAction.java   |   6 +-
 .../main/java/org/apache/geode/cache/Scope.java    |   3 +-
 .../apache/geode/cache/SubscriptionAttributes.java |   7 +-
 .../java/org/apache/geode/cache/TransactionId.java |   3 +
 .../internal/ParallelAsyncEventQueueImpl.java      |   2 +-
 .../internal/SerialAsyncEventQueueImpl.java        |   2 +-
 .../geode/cache/client/ClientRegionShortcut.java   |   6 +-
 .../client/internal/ClientSideHandshakeImpl.java   |   2 +-
 .../internal/ExplicitConnectionSourceImpl.java     |   7 +-
 .../geode/cache/configuration/CacheConfig.java     | 266 ++------
 .../geode/cache/configuration/CacheLoaderType.java | 122 ----
 .../configuration/CacheTransactionManagerType.java | 192 +-----
 .../geode/cache/configuration/CacheWriterType.java | 122 ----
 ...sWithParametersType.java => ClassNameType.java} |  71 +--
 .../geode/cache/configuration/DeclarableType.java  |  72 ++-
 .../configuration/ExpirationAttributesType.java    | 101 +--
 .../cache/configuration/FunctionServiceType.java   |  96 +--
 .../geode/cache/configuration/InitializerType.java | 124 ----
 .../{ParameterType.java => ObjectType.java}        |  95 ++-
 .../geode/cache/configuration/ParameterType.java   |  78 +--
 .../apache/geode/cache/configuration/PdxType.java  | 100 +--
 .../cache/configuration/RegionAttributesType.java  | 543 +---------------
 .../geode/cache/configuration/RegionConfig.java    | 188 +-----
 .../geode/cache/configuration/ServerType.java      | 100 +--
 .../geode/cache/configuration/StringType.java      |  88 ---
 .../query/internal/AbstractCompiledValue.java      |  15 +-
 .../internal/AbstractGroupOrRangeJunction.java     |  16 +-
 .../cache/query/internal/AllGroupJunction.java     |   6 +-
 .../cache/query/internal/CompiledBindArgument.java |   2 +-
 .../cache/query/internal/CompiledConstruction.java |  11 +-
 .../cache/query/internal/CompiledFunction.java     |  13 +-
 .../geode/cache/query/internal/CompiledID.java     |  10 +-
 .../query/internal/CompiledIndexOperation.java     |  17 +-
 .../cache/query/internal/CompiledIteratorDef.java  |   2 +
 .../cache/query/internal/CompiledLiteral.java      |   6 +-
 .../cache/query/internal/CompiledNegation.java     |  11 +-
 .../geode/cache/query/internal/CompiledPath.java   |  12 +-
 .../geode/cache/query/internal/CompiledRegion.java |   8 +-
 .../cache/query/internal/CompiledUnaryMinus.java   |   4 +-
 .../cache/query/internal/CompiledUndefined.java    |  12 +-
 .../cache/query/internal/DefaultQueryService.java  |  37 +-
 .../geode/cache/query/internal/Functions.java      |  16 +-
 .../apache/geode/cache/query/internal/QRegion.java |  38 +-
 .../apache/geode/cache/query/internal/QScope.java  |   4 +-
 .../geode/cache/query/internal/QueryMonitor.java   |   5 +-
 .../geode/cache/query/internal/QueryObserver.java  |   7 +-
 .../cache/query/internal/QueryObserverAdapter.java |   7 +-
 .../query/internal/ResultsCollectionWrapper.java   |  27 +-
 .../geode/cache/query/internal/ResultsSet.java     |  16 +-
 .../cache/query/internal/SortedResultSet.java      |  24 +-
 .../cache/query/internal/SortedStructSet.java      |  25 +-
 .../geode/cache/query/internal/StructSet.java      |  17 +-
 .../geode/cache/query/internal/Undefined.java      |   5 +-
 .../cache/query/internal/index/RangeIndex.java     |   3 +-
 .../geode/cache/query/internal/parse/ASTAnd.java   |   2 +-
 .../cache/query/internal/parse/ASTCombination.java |   2 +-
 .../cache/query/internal/parse/ASTCompareOp.java   |   2 +-
 .../query/internal/parse/ASTConstruction.java      |   5 +-
 .../query/internal/parse/ASTConversionExpr.java    |   2 +-
 .../cache/query/internal/parse/ASTGroupBy.java     |   2 +-
 .../cache/query/internal/parse/ASTIdentifier.java  |   2 +-
 .../cache/query/internal/parse/ASTImport.java      |   4 +-
 .../geode/cache/query/internal/parse/ASTIn.java    |   2 +-
 .../cache/query/internal/parse/ASTIteratorDef.java |   2 +-
 .../geode/cache/query/internal/parse/ASTLike.java  |   2 +-
 .../geode/cache/query/internal/parse/ASTLimit.java |   2 +-
 .../cache/query/internal/parse/ASTLiteral.java     |  10 +-
 .../query/internal/parse/ASTMethodInvocation.java  |   2 +-
 .../geode/cache/query/internal/parse/ASTOr.java    |   2 +-
 .../cache/query/internal/parse/ASTOrderBy.java     |   2 +-
 .../cache/query/internal/parse/ASTPostfix.java     |   4 +-
 .../cache/query/internal/parse/ASTProjection.java  |   2 +-
 .../cache/query/internal/parse/ASTRegionPath.java  |   2 +-
 .../cache/query/internal/parse/ASTSelect.java      |   4 +-
 .../query/internal/parse/ASTSortCriterion.java     |   2 +-
 .../geode/cache/query/internal/parse/ASTType.java  |   4 +-
 .../cache/query/internal/parse/ASTTypeCast.java    |   2 +-
 .../geode/cache/query/internal/parse/ASTUnary.java |   2 +-
 .../query/internal/parse/ASTUndefinedExpr.java     |   2 +-
 .../cache/query/internal/parse/ASTUnsupported.java |   2 +-
 .../cache/query/internal/parse/UtilParser.java     |  11 +-
 .../query/internal/types/CollectionTypeImpl.java   |  11 +-
 .../internal/types/ExtendedNumericComparator.java  |   2 +-
 .../cache/query/internal/types/MapTypeImpl.java    |   8 +-
 .../query/internal/types/NumericComparator.java    |   2 +-
 .../cache/query/internal/types/StructTypeImpl.java |   9 +-
 .../query/internal/types/TemporalComparator.java   |   2 +-
 .../geode/distributed/DistributedLockService.java  |   4 +-
 .../internal/AbstractDistributionConfig.java       | 161 ++++-
 .../distributed/internal/DistributionConfig.java   | 161 ++++-
 .../internal/FunctionExecutionPooledExecutor.java  |   8 +-
 .../geode/distributed/internal/LocatorStats.java   |   6 +-
 .../internal/LonerDistributionManager.java         |  22 +-
 .../internal/PooledExecutorWithDMStats.java        |   8 +-
 .../distributed/internal/ProcessorKeeper21.java    |   3 +-
 .../internal/ReliableReplyProcessor21.java         |   7 +-
 .../internal/RuntimeDistributionConfigImpl.java    |  11 +-
 .../distributed/internal/ShutdownMessage.java      |  10 +-
 .../geode/distributed/internal/StartupMessage.java |  11 +-
 .../internal/StartupResponseMessage.java           |   9 -
 .../ThrottlingMemLinkedQueueWithDMStats.java       |   3 +-
 .../distributed/internal/locks/DLockStats.java     |  10 +-
 .../internal/locks/DummyDLockStats.java            |   3 +-
 .../distributed/internal/locks/GrantorInfo.java    |   2 +-
 .../membership/InternalDistributedMember.java      |  20 +-
 .../internal/membership/InternalRole.java          |   3 +-
 .../membership/gms/messenger/JGAddress.java        |   6 +-
 .../java/org/apache/geode/internal/Assert.java     |   5 -
 .../geode/internal/DataSerializableFixedID.java    |   1 +
 .../geode/internal/InternalDataSerializer.java     |  32 +-
 .../geode/internal/InternalInstantiator.java       |  12 +-
 .../java/org/apache/geode/internal/Version.java    |   9 +-
 .../geode/internal/cache/AbstractRegion.java       |   3 +-
 .../geode/internal/cache/AbstractRegionMap.java    | 406 +-----------
 .../internal/cache/CreateRegionProcessor.java      |   9 +-
 .../geode/internal/cache/DistributedRegion.java    |   5 +
 .../geode/internal/cache/EntryEventImpl.java       |  14 +-
 .../org/apache/geode/internal/cache/HARegion.java  |   2 +-
 .../geode/internal/cache/InternalRegion.java       |  20 +-
 .../apache/geode/internal/cache/LocalRegion.java   |  43 +-
 .../geode/internal/cache/NonLocalRegionEntry.java  |   5 +
 .../org/apache/geode/internal/cache/Oplog.java     |   4 +
 .../geode/internal/cache/PartitionedRegion.java    |   2 +-
 .../geode/internal/cache/ProxyRegionMap.java       |   5 +
 .../apache/geode/internal/cache/RegionEntry.java   |   2 +
 .../java/org/apache/geode/internal/cache/TXId.java |   1 +
 .../apache/geode/internal/cache/TXRmtEvent.java    |  10 +-
 .../geode/internal/cache/ValidatingDiskRegion.java |   5 +
 .../cache/entries/AbstractRegionEntry.java         |   5 +
 .../geode/internal/cache/ha/HARegionQueue.java     | 114 ++--
 .../internal/cache/map/AbstractRegionMapPut.java   | 321 ++++++++++
 .../geode/internal/cache/map/FocusedRegionMap.java |   9 +
 .../internal/cache/map/RegionMapCommitPut.java     | 297 +++++++++
 .../geode/internal/cache/map/RegionMapPut.java     | 599 ++++++------------
 .../cache/persistence/DiskInitFileParser.java      |   2 +-
 .../cache/persistence/PersistentMemberID.java      |   2 +-
 .../cache/tier/sockets/CommandInitializer.java     |   1 +
 .../internal/cache/wan/AbstractGatewaySender.java  |  76 +--
 .../wan/AbstractGatewaySenderEventProcessor.java   |  33 +-
 ...currentParallelGatewaySenderEventProcessor.java |  32 +
 .../ParallelGatewaySenderEventProcessor.java       |   6 +
 .../wan/parallel/ParallelGatewaySenderQueue.java   |   2 +-
 .../cache/wan/serial/BatchDestroyOperation.java    |  30 +-
 ...oncurrentSerialGatewaySenderEventProcessor.java |  64 +-
 .../serial/SerialGatewaySenderEventProcessor.java  |  47 +-
 .../cache/wan/serial/SerialGatewaySenderQueue.java |   2 +-
 .../xmlcache/ParallelAsyncEventQueueCreation.java  |   2 +-
 .../xmlcache/ParallelGatewaySenderCreation.java    |   2 +-
 .../xmlcache/SerialAsyncEventQueueCreation.java    |   2 +-
 .../xmlcache/SerialGatewaySenderCreation.java      |   2 +-
 .../geode/internal/i18n/LocalizedStrings.java      |   4 +-
 .../apache/geode/management/cli/CliFunction.java   |  44 ++
 .../apache/geode/management/cli/GfshCommand.java   |   7 +
 .../internal/beans/DistributedSystemBridge.java    |  12 +-
 .../internal/cli/CliAroundInterceptor.java         |   5 +-
 .../cli/commands/AlterAsyncEventQueueCommand.java  |  12 +-
 .../internal/cli/commands/AlterRegionCommand.java  |   1 +
 .../internal/cli/commands/ConfigurePDXCommand.java | 111 ++--
 .../internal/cli/commands/ConnectCommand.java      |  13 +-
 .../internal/cli/commands/CreateIndexCommand.java  |  11 +-
 .../cli/commands/CreateJndiBindingCommand.java     |  37 +-
 .../internal/cli/commands/DataCommandsUtils.java   |  14 +-
 .../cli/commands/DescribeClientCommand.java        |  10 +-
 .../cli/commands/DescribeConfigCommand.java        |   6 +-
 .../cli/commands/DescribeJndiBindingCommand.java   |   4 +-
 .../commands/DestroyGatewayReceiverCommand.java    |   7 +-
 .../cli/commands/DestroyJndiBindingCommand.java    |  53 +-
 .../cli/commands/ExecuteFunctionCommand.java       |  26 +-
 .../internal/cli/commands/ExportConfigCommand.java |  46 +-
 .../ExportImportClusterConfigurationCommands.java  |   7 +-
 .../cli/commands/ExportLogsInterceptor.java        |   8 +-
 .../internal/cli/commands/GetCommand.java          |   9 +-
 .../cli/commands/ListJndiBindingCommand.java       |  28 +-
 .../internal/cli/commands/LocateEntryCommand.java  |   9 +-
 .../internal/cli/commands/PutCommand.java          |  11 +-
 .../internal/cli/commands/QueryCommand.java        |   9 +-
 .../internal/cli/commands/QueryInterceptor.java    |  50 +-
 .../internal/cli/commands/RemoveCommand.java       |  15 +-
 .../internal/cli/domain/DataCommandResult.java     | 418 ++++--------
 .../internal/cli/domain/RegionInformation.java     |   3 +-
 .../cli/exceptions/EntityExistsException.java      |   3 +
 .../cli/functions/CreateJndiBindingFunction.java   |  10 +-
 .../cli/functions/DataCommandFunction.java         | 242 ++-----
 .../cli/functions/DestroyJndiBindingFunction.java  |  16 +-
 .../cli/functions/ListJndiBindingFunction.java     |  12 +-
 .../management/internal/cli/i18n/CliStrings.java   |   2 +-
 .../internal/cli/remote/CommandExecutor.java       |  43 +-
 .../internal/cli/result/AbstractResultData.java    |  12 -
 .../internal/cli/result/CommandResult.java         |   4 -
 .../internal/cli/result/CompositeResultData.java   |   4 +-
 .../internal/cli/result/LegacyCommandResult.java   |  23 +-
 .../internal/cli/result/ModelCommandResult.java    |  34 +-
 .../internal/cli/result/ResultBuilder.java         |   1 -
 .../management/internal/cli/result/ResultData.java |  13 +-
 .../cli/result/model/AbstractResultModel.java      |   1 +
 .../internal/cli/result/model/FileResultModel.java | 162 +++++
 .../internal/cli/result/model/ResultModel.java     |  96 ++-
 .../cli/result/model/TabularResultModel.java       |  23 +
 .../internal/cli/shell/GfshExecutionStrategy.java  |  17 +-
 .../pdx/internal/AutoSerializableManager.java      |  18 +-
 .../apache/geode/pdx/internal/TypeRegistry.java    |   2 +-
 .../org/apache/geode/redis/GeodeRedisServer.java   |   2 +-
 .../sanctioned-geode-core-serializables.txt        |   3 +-
 .../src/test/java/com/company/app/DBLoader.java    |   5 +-
 .../java/com/company/app/OrdersCacheListener.java  |   5 +-
 .../test/java/com/company/data/DatabaseLoader.java |   5 +-
 .../test/java/com/company/data/MyDeclarable.java   |   2 +-
 .../com/company/data/MyTransactionListener.java    |   4 +-
 .../src/test/java/com/examples/SuperClass.java     |   3 +-
 .../java/com/examples/ds/CompanySerializer.java    |   4 +-
 .../src/test/java/com/examples/ds/Employee.java    |   4 +-
 .../java/com/examples/ds/PutDataSerializables.java |   5 +-
 geode-core/src/test/java/com/examples/ds/User.java |   4 +-
 .../src/test/java/hydra/MethExecutorResult.java    |   7 +-
 .../src/test/java/hydra/SchedulingOrder.java       |   2 +-
 .../test/java/org/apache/geode/CopyJUnitTest.java  |  25 +-
 .../apache/geode/DiskInstantiatorsJUnitTest.java   |  12 +-
 .../apache/geode/JtaNoninvolvementJUnitTest.java   |  11 +-
 .../java/org/apache/geode/LonerDMJUnitTest.java    |  18 +-
 .../org/apache/geode/SetOperationTXJUnitTest.java  |   4 +-
 .../org/apache/geode/SystemFailureJUnitTest.java   |   3 +-
 .../test/java/org/apache/geode/TXJUnitTest.java    |  10 +-
 .../java/org/apache/geode/TXWriterTestCase.java    |   2 +-
 .../test/java/org/apache/geode/UnitTestDoclet.java |  12 +-
 .../org/apache/geode/admin/AdminTestHelper.java    |   3 +-
 .../apache/geode/admin/AlertLevelJUnitTest.java    |   3 +-
 .../internal/CacheHealthEvaluatorJUnitTest.java    |  24 +-
 .../admin/internal/DistributedSystemTestCase.java  |   4 +-
 .../admin/internal/HealthEvaluatorTestCase.java    |   4 +-
 .../geode/cache/AttributesFactoryJUnitTest.java    |   7 +-
 .../apache/geode/cache/CacheListenerJUnitTest.java |   5 +-
 .../geode/cache/ClientServerTimeSyncDUnitTest.java |   9 +-
 .../cache/ConnectionPoolAndLoaderDUnitTest.java    |   6 +-
 .../geode/cache/ConnectionPoolAutoDUnitTest.java   |   2 +-
 .../cache/ConnectionPoolFactoryJUnitTest.java      |  10 +-
 .../org/apache/geode/cache/OperationJUnitTest.java |   3 +-
 .../org/apache/geode/cache/ProxyJUnitTest.java     |  12 +-
 .../apache/geode/cache/RegionFactoryJUnitTest.java |  34 +-
 .../apache/geode/cache/RoleExceptionJUnitTest.java |  15 +-
 .../cache/client/ClientRegionFactoryJUnitTest.java |  29 +-
 .../CacheServerSSLConnectionDUnitTest.java         |  36 +-
 .../internal/LocatorLoadBalancingDUnitTest.java    |   2 -
 .../client/internal/OpExecutorImplJUnitTest.java   |   3 +-
 .../client/internal/QueueManagerJUnitTest.java     |  13 +-
 .../client/internal/SSLNoClientAuthDUnitTest.java  |  16 +-
 .../client/internal/ServerBlackListJUnitTest.java  |   3 +-
 .../locator/LocatorStatusResponseJUnitTest.java    |   5 +-
 .../geode/cache/configuration/CacheConfigTest.java | 140 +++-
 .../cache/configuration/DeclarableTypeTest.java    |  78 +++
 .../cache/execute/FunctionAdapterJUnitTest.java    |   4 +-
 .../management/MXMemoryPoolListenerExample.java    |   6 +-
 .../management/MemoryThresholdsDUnitTest.java      |  10 +-
 .../MemoryThresholdsOffHeapDUnitTest.java          |   3 +-
 .../cache/management/ResourceManagerDUnitTest.java |   6 +-
 .../mapInterface/ExceptionHandlingJUnitTest.java   |  14 +-
 .../cache/mapInterface/MapFunctionalJUnitTest.java |  13 +-
 .../mapInterface/PutAllGlobalLockJUnitTest.java    |   5 +-
 .../partition/PartitionRegionHelperDUnitTest.java  |   7 +-
 .../BaseLineAndCompareQueryPerfJUnitTest.java      |  25 +-
 .../org/apache/geode/cache/query/CacheUtils.java   |   5 +-
 .../apache/geode/cache/query/IndexTypeTest.java    |   2 +-
 .../apache/geode/cache/query/QueryJUnitTest.java   |   6 +-
 .../QueryWithBucketParameterIntegrationTest.java   |   6 +-
 .../org/apache/geode/cache/query/data/City.java    |   2 +-
 .../geode/cache/query/data/CollectionHolder.java   |   8 +-
 .../org/apache/geode/cache/query/data/Country.java |   5 +-
 .../apache/geode/cache/query/data/District.java    |   2 +-
 .../apache/geode/cache/query/data/Inventory.java   |   4 +-
 .../geode/cache/query/data/PortfolioPdx.java       |   2 -
 .../apache/geode/cache/query/data/Position.java    |   8 +-
 .../cache/query/data/ProhibitedSecurityQuote.java  |   4 +-
 .../org/apache/geode/cache/query/data/Quote.java   |   3 +-
 .../geode/cache/query/data/SecurityMaster.java     |   4 +-
 .../org/apache/geode/cache/query/data/State.java   |   2 +-
 .../org/apache/geode/cache/query/data/Village.java |   2 +-
 .../query/dunit/CompactRangeIndexDUnitTest.java    |   3 +-
 .../cache/query/dunit/GroupByQueryDUnitTest.java   |   3 +-
 .../geode/cache/query/dunit/HelperTestCase.java    |   5 +-
 .../query/dunit/NonDistinctOrderByDUnitImpl.java   |   2 +-
 .../query/dunit/OrderByPartitionedDUnitTest.java   |   2 +-
 .../geode/cache/query/dunit/PDXQueryTestBase.java  |   3 +-
 ...artitionedRegionCompactRangeIndexDUnitTest.java |   6 +-
 .../cache/query/dunit/PdxLocalQueryDUnitTest.java  |   4 +-
 .../cache/query/dunit/PdxStringQueryDUnitTest.java |   4 +-
 .../cache/query/dunit/PositionPdxVersion.java      |   3 +-
 .../cache/query/dunit/QueryAuthorization.java      |   3 +-
 .../cache/query/dunit/QueryIndexDUnitTest.java     |   3 +-
 .../query/dunit/QueryIndexUsingXMLDUnitTest.java   |  14 +-
 .../dunit/QueryUsingFunctionContextDUnitTest.java  |   3 +-
 .../cache/query/dunit/QueryUsingPoolDUnitTest.java |   6 +-
 .../cache/query/dunit/RemoteQueryDUnitTest.java    |   8 +-
 .../query/dunit/SelectStarQueryDUnitTest.java      |  11 +-
 .../geode/cache/query/facets/lang/Employee.java    |   5 +-
 .../geode/cache/query/facets/lang/Faculty.java     |   6 +-
 .../geode/cache/query/facets/lang/G_Student.java   |   3 +-
 .../geode/cache/query/facets/lang/Person.java      |   3 +-
 .../geode/cache/query/facets/lang/Student.java     |   6 +-
 .../geode/cache/query/facets/lang/UG_Student.java  |   3 +-
 .../geode/cache/query/facets/lang/Utils.java       |   5 +-
 .../cache/query/functional/ConstantsJUnitTest.java |   2 +-
 .../cache/query/functional/CountStarJUnitTest.java |   4 +-
 ...tinctResultsWithDupValuesInRegionJUnitTest.java |  11 +-
 .../cache/query/functional/FunctionJUnitTest.java  |   3 +-
 .../cache/query/functional/GroupByTestImpl.java    |   5 +-
 .../functional/IUMRSingleRegionJUnitTest.java      |  26 +-
 .../functional/IndexCreationDeadLockJUnitTest.java |   4 +-
 .../query/functional/IndexOnEntrySetJUnitTest.java |  13 +-
 .../IndexUsageWithAliasAsProjAtrbtJUnitTest.java   |   2 +-
 .../functional/JavaSerializationJUnitTest.java     |   2 -
 .../functional/MultiRegionIndexUsageJUnitTest.java |  26 +-
 .../functional/NegativeNumberQueriesJUnitTest.java |  13 +-
 .../query/functional/NestedQueryJUnitTest.java     |   6 +-
 .../NonDistinctOrderByTestImplementation.java      |   6 +-
 .../query/functional/NumericQueryJUnitTest.java    |   5 +-
 .../query/functional/SelectToDateJUnitTest.java    |  11 +-
 .../TestNewFunctionSSorRSIntegrationTest.java      |   2 +-
 .../CompiledAggregateFunctionJUnitTest.java        |   3 +-
 .../cache/query/internal/CompiledInJUnitTest.java  |   9 +-
 .../query/internal/NWayMergeResultsJUnitTest.java  |   4 +-
 .../QueryObjectSerializationJUnitTest.java         |   2 +-
 .../cache/query/internal/ResultsBagJUnitTest.java  |   4 +-
 .../ResultsBagLimitBehaviourJUnitTest.java         |   5 +-
 .../ResultsCollectionWrapperLimitJUnitTest.java    |   5 +-
 .../internal/SelectResultsComparatorJUnitTest.java |   2 +-
 .../internal/StructBagLimitBehaviourJUnitTest.java |   4 +-
 .../cache/query/internal/StructSetJUnitTest.java   |   3 +-
 .../internal/aggregate/AggregatorJUnitTest.java    |   2 +-
 .../internal/cq/CqAttributesImplJUnitTest.java     |   3 +-
 .../AsyncIndexUpdaterThreadShutdownJUnitTest.java  |  10 +-
 .../index/AsynchIndexMaintenanceJUnitTest.java     |   2 +-
 .../index/CompactRangeIndexIndexMapJUnitTest.java  |  12 +-
 .../internal/index/CompactRangeIndexJUnitTest.java |   6 +-
 ...ncurrentIndexInitOnOverflowRegionDUnitTest.java |   5 +-
 ...ntIndexOperationsOnOverflowRegionDUnitTest.java |   6 +-
 ...exUpdateWithInplaceObjectModFalseDUnitTest.java |   3 +-
 .../ConcurrentIndexUpdateWithoutWLDUnitTest.java   |   3 +-
 .../internal/index/CopyOnReadIndexDUnitTest.java   |   5 +-
 .../internal/index/CopyOnReadIndexJUnitTest.java   |   6 +-
 .../index/DeclarativeIndexCreationJUnitTest.java   |   6 +-
 .../internal/index/EquiJoinIntegrationTest.java    |   5 +-
 .../internal/index/HashIndexSetJUnitTest.java      |   8 +-
 .../internal/index/IndexElemArrayJUnitTest.java    |   6 +-
 .../query/internal/index/IndexHintJUnitTest.java   |  13 +-
 .../index/IndexTrackingQueryObserverDUnitTest.java |   4 +-
 .../index/IndexTrackingQueryObserverJUnitTest.java |   7 +-
 .../internal/index/MemoryIndexStoreJUnitTest.java  |   7 +-
 ...IndexStoreWithInplaceModificationJUnitTest.java |   3 +-
 .../index/MultiIndexCreationDUnitTest.java         |   5 +-
 .../index/PdxCopyOnReadQueryJUnitTest.java         |   4 +-
 .../index/PutAllWithIndexPerfDUnitTest.java        |   5 +-
 .../internal/ConnectionCountProbeJUnitTest.java    |   2 +-
 .../cache/server/internal/LoadMonitorTest.java     |   6 +-
 .../cache/snapshot/CacheSnapshotJUnitTest.java     |   3 +-
 .../cache/snapshot/ParallelSnapshotDUnitTest.java  |   3 +-
 .../cache/snapshot/RegionSnapshotJUnitTest.java    |  13 +-
 .../cache/snapshot/SnapshotByteArrayDUnitTest.java |   3 +-
 .../geode/cache/snapshot/SnapshotDUnitTest.java    |   7 +-
 .../snapshot/SnapshotPerformanceDUnitTest.java     |   3 +-
 .../geode/cache/snapshot/SnapshotTestCase.java     |   2 +-
 .../geode/cache/snapshot/WanSnapshotJUnitTest.java |   3 +-
 .../StringPrefixPartitionResolverJUnitTest.java    |   2 +-
 .../apache/geode/cache30/CacheCloseDUnitTest.java  |   3 +-
 .../geode/cache30/CacheListenerTestCase.java       |   6 +-
 .../apache/geode/cache30/CacheLoaderTestCase.java  |   6 +-
 .../apache/geode/cache30/CacheMapTxnDUnitTest.java |   3 +-
 .../CacheRegionsReliablityStatsCheckDUnitTest.java |   5 +-
 .../geode/cache30/CacheStatisticsDUnitTest.java    |   5 +-
 .../apache/geode/cache30/CacheWriterTestCase.java  |  16 +-
 .../geode/cache30/CacheXmlGeode10DUnitTest.java    |   8 +-
 .../org/apache/geode/cache30/CacheXmlTestCase.java |   6 +-
 .../geode/cache30/CachedAllEventsDUnitTest.java    |   2 +-
 .../apache/geode/cache30/CallbackArgDUnitTest.java |   2 +-
 .../cache30/CertifiableTestCacheListener.java      |   6 +-
 .../geode/cache30/ClearMultiVmCallBkDUnitTest.java |   3 +-
 .../geode/cache30/ClearMultiVmDUnitTest.java       |   4 +-
 .../geode/cache30/ClientMembershipDUnitTest.java   |  16 +-
 .../cache30/ClientRegisterInterestDUnitTest.java   |   8 +-
 .../geode/cache30/ClientServerCCEDUnitTest.java    |   8 +-
 .../apache/geode/cache30/ClientServerTestCase.java |   4 +-
 .../cache30/ConcurrentLeaveDuringGIIDUnitTest.java |   3 +-
 ...stributedNoAckAsyncOverflowRegionDUnitTest.java |   4 +-
 .../DiskDistributedNoAckAsyncRegionDUnitTest.java  |   9 +-
 .../geode/cache30/DiskRegionDistributedTest.java   | 520 ++++++---------
 .../apache/geode/cache30/DiskRegionTestImpl.java   |   5 +-
 .../geode/cache30/DistAckMapMethodsDUnitTest.java  |   4 +-
 .../DistributedAckOverflowRegionCCEDUnitTest.java  |   2 -
 ...ibutedAckOverflowRegionCCEOffHeapDUnitTest.java |   5 +-
 ...utedAckPersistentRegionCCEOffHeapDUnitTest.java |   5 +-
 .../cache30/DistributedAckRegionCCEDUnitTest.java  |  13 +-
 .../DistributedAckRegionCCEOffHeapDUnitTest.java   |   2 +-
 .../cache30/DistributedAckRegionDUnitTest.java     |   5 +-
 .../DistributedAckRegionOffHeapDUnitTest.java      |   2 +-
 .../DistributedMulticastRegionDUnitTest.java       |  12 +-
 .../DistributedNoAckRegionCCEDUnitTest.java        |   7 +-
 .../DistributedNoAckRegionCCEOffHeapDUnitTest.java |   2 +-
 .../cache30/DistributedNoAckRegionDUnitTest.java   |   5 +-
 .../DistributedNoAckRegionOffHeapDUnitTest.java    |   5 +-
 .../geode/cache30/DynamicRegionDUnitTest.java      |   3 +-
 .../geode/cache30/GlobalLockingDUnitTest.java      |   4 +-
 .../geode/cache30/GlobalRegionCCEDUnitTest.java    |   6 +-
 .../cache30/GlobalRegionCCEOffHeapDUnitTest.java   |   5 +-
 .../geode/cache30/GlobalRegionDUnitTest.java       |   7 +-
 .../cache30/GlobalRegionOffHeapDUnitTest.java      |   5 +-
 .../cache30/LRUEvictionControllerDUnitTest.java    |   6 +-
 .../apache/geode/cache30/LocalRegionDUnitTest.java |   5 +-
 .../cache30/MemLRUEvictionControllerDUnitTest.java |   4 +-
 .../geode/cache30/MultiVMRegionTestCase.java       |  14 +-
 .../OffHeapLRUEvictionControllerDUnitTest.java     |   5 +-
 .../PartitionedRegionCompressionDUnitTest.java     |   2 -
 .../geode/cache30/PartitionedRegionDUnitTest.java  |   5 +-
 ...rtitionedRegionMembershipListenerDUnitTest.java |   4 +-
 .../cache30/PartitionedRegionOffHeapDUnitTest.java |   5 +-
 .../org/apache/geode/cache30/ProxyDUnitTest.java   |   4 +-
 .../cache30/PutAllCallBkRemoteVMDUnitTest.java     |   3 +-
 .../cache30/PutAllCallBkSingleVMDUnitTest.java     |   3 +-
 .../geode/cache30/PutAllMultiVmDUnitTest.java      |   3 +-
 .../apache/geode/cache30/QueueMsgDUnitTest.java    |   5 +-
 .../apache/geode/cache30/ReconnectDUnitTest.java   |  52 +-
 .../cache30/ReconnectWithUDPSecurityDUnitTest.java |   2 +-
 .../cache30/ReconnectedCacheServerDUnitTest.java   |   4 +-
 .../geode/cache30/RegionAttributesTestCase.java    |  20 +-
 .../cache30/RegionMembershipListenerDUnitTest.java |  11 +-
 .../cache30/RegionReliabilityDistAckDUnitTest.java |   4 +-
 .../RegionReliabilityDistNoAckDUnitTest.java       |   4 +-
 .../cache30/RegionReliabilityGlobalDUnitTest.java  |   4 +-
 .../RegionReliabilityListenerDUnitTest.java        |   6 +-
 .../geode/cache30/RegionReliabilityTestCase.java   |   8 +-
 .../org/apache/geode/cache30/RegionTestCase.java   |   8 +-
 .../apache/geode/cache30/ReliabilityTestCase.java  |   4 +-
 .../geode/cache30/RemoveAllMultiVmDUnitTest.java   |   2 +-
 .../geode/cache30/RequiredRolesDUnitTest.java      |   8 +-
 .../geode/cache30/SearchAndLoadDUnitTest.java      |   6 +-
 .../org/apache/geode/cache30/SlowRecDUnitTest.java |  10 +-
 .../geode/cache30/TXDistributedDUnitTest.java      |  10 +-
 .../org/apache/geode/cache30/TXOrderDUnitTest.java |   7 +-
 .../geode/cache30/TXRestrictionsDUnitTest.java     |   2 +-
 .../apache/geode/cache30/TestCacheCallback.java    |   2 +-
 .../apache/geode/cache30/TestCacheListener.java    |   9 +-
 .../org/apache/geode/cache30/TestCacheLoader.java  |   4 +-
 .../org/apache/geode/cache30/TestCacheWriter.java  |   5 +-
 .../java/org/apache/geode/cache30/TestHeapLRU.java |   7 +-
 .../geode/cache30/TestTransactionListener.java     |   3 +-
 .../geode/codeAnalysis/CompiledClassUtils.java     |  37 +-
 .../codeAnalysis/decode/CompiledAttribute.java     |   3 +-
 .../geode/codeAnalysis/decode/CompiledField.java   |   3 +-
 .../geode/codeAnalysis/decode/CompiledMethod.java  |   3 +-
 .../apache/geode/codeAnalysis/decode/cp/Cp.java    |   3 +-
 .../geode/codeAnalysis/decode/cp/CpClass.java      |   3 +-
 .../geode/codeAnalysis/decode/cp/CpDouble.java     |   3 +-
 .../geode/codeAnalysis/decode/cp/CpFieldref.java   |   3 +-
 .../geode/codeAnalysis/decode/cp/CpFloat.java      |   3 +-
 .../geode/codeAnalysis/decode/cp/CpInteger.java    |   3 +-
 .../decode/cp/CpInterfaceMethodref.java            |   3 +-
 .../codeAnalysis/decode/cp/CpInvokeDynamic.java    |   3 +-
 .../geode/codeAnalysis/decode/cp/CpLong.java       |   3 +-
 .../codeAnalysis/decode/cp/CpMethodHandle.java     |   3 +-
 .../geode/codeAnalysis/decode/cp/CpMethodType.java |   3 +-
 .../geode/codeAnalysis/decode/cp/CpMethodref.java  |   3 +-
 .../codeAnalysis/decode/cp/CpNameAndType.java      |   3 +-
 .../geode/codeAnalysis/decode/cp/CpString.java     |   3 +-
 .../geode/codeAnalysis/decode/cp/CpUtf8.java       |   5 +-
 .../distributed/DistributedMemberDUnitTest.java    |  21 +-
 .../distributed/DistributedSystemDUnitTest.java    |  26 +-
 .../DistributedSystemIntegrationJUnitTest.java     |   2 +-
 .../distributed/DistributedSystemJUnitTest.java    |   2 +-
 .../geode/distributed/HostedLocatorsDUnitTest.java |   5 +-
 .../apache/geode/distributed/LocatorDUnitTest.java | 249 ++------
 .../distributed/LocatorUDPSecurityDUnitTest.java   |  20 +-
 .../apache/geode/distributed/RoleDUnitTest.java    |   7 +-
 .../geode/distributed/SystemAdminDUnitTest.java    |   4 +-
 .../AtomicLongWithTerminalStateJUnitTest.java      |   2 +-
 .../geode/distributed/internal/DateMessage.java    |   9 +-
 .../internal/DistributionAdvisorDUnitTest.java     |   2 +-
 .../org/apache/geode/distributed/internal/LDM.java |   2 +-
 .../LocatorLoadSnapshotIntegrationTest.java        |   3 +-
 .../internal/LocatorLoadSnapshotJUnitTest.java     |   6 +-
 .../internal/ProductUseLogDUnitTest.java           |   5 +-
 .../internal/ProductUseLogJUnitTest.java           |   2 +-
 .../internal/ServerLocatorJUnitTest.java           |   2 +-
 .../internal/StartupMessageDataJUnitTest.java      |   5 +-
 .../deadlock/DeadlockDetectorIntegrationTest.java  |   2 +-
 .../internal/deadlock/DeadlockDetectorTest.java    |   3 +-
 .../deadlock/DependencyGraphJUnitTest.java         |   2 +-
 .../deadlock/GemFireDeadlockDetectorDUnitTest.java |   2 -
 .../deadlock/UnsafeThreadLocalJUnitTest.java       |   2 +-
 .../internal/locks/DLockGrantorHelper.java         |   2 +-
 .../locks/DLockReentrantLockJUnitTest.java         |   6 +-
 .../internal/membership/NetViewJUnitTest.java      |   5 +-
 .../membership/gms/GMSMemberJUnitTest.java         |   9 +-
 .../GMSAuthenticatorWithAuthenticatorTest.java     |   6 +-
 .../GMSAuthenticatorWithSecurityManagerTest.java   |   9 +-
 .../gms/fd/GMSHealthMonitorJUnitTest.java          |  33 +-
 .../gms/membership/GMSJoinLeaveJUnitTest.java      |   1 -
 .../gms/membership/StatRecorderJUnitTest.java      |   6 +-
 .../gms/messenger/GMSQuorumCheckerJUnitTest.java   |   7 +-
 .../gms/messenger/JGroupsMessengerJUnitTest.java   |  29 +-
 .../gms/mgr/GMSMembershipManagerJUnitTest.java     |  23 +-
 .../streaming/StreamingOperationManyDUnitTest.java |   2 +-
 .../streaming/StreamingOperationOneDUnitTest.java  |   2 +-
 .../TcpServerBackwardCompatDUnitTest.java          |   6 +-
 .../geode/disttx/CacheMapDistTXDUnitTest.java      |   4 +-
 .../apache/geode/disttx/DistTXDebugDUnitTest.java  |   3 +-
 .../org/apache/geode/disttx/DistTXJUnitTest.java   |   5 +-
 .../geode/disttx/DistTXManagerImplJUnitTest.java   |   5 +-
 .../apache/geode/disttx/DistTXOrderDUnitTest.java  |   2 +-
 .../disttx/DistTXPersistentDebugDUnitTest.java     |   2 +-
 .../geode/disttx/DistTXRestrictionsDUnitTest.java  |   2 +-
 .../geode/disttx/DistTXWithDeltaDUnitTest.java     |   2 +-
 .../apache/geode/disttx/DistTXWriterJUnitTest.java |   4 +-
 .../geode/disttx/DistTXWriterOOMEJUnitTest.java    |   4 +-
 .../disttx/DistributedTransactionDUnitTest.java    |   6 +-
 .../org/apache/geode/disttx/PRDistTXDUnitTest.java |   2 +-
 .../org/apache/geode/disttx/PRDistTXJUnitTest.java |   4 +-
 .../disttx/PRDistTXWithVersionsDUnitTest.java      |   2 +-
 ...istentPartitionedRegionWithDistTXDUnitTest.java |   2 +-
 .../internal/DataSerializerHolderJUnitTest.java    | 511 +++++++++++++++
 .../internal/cache/AbstractRegionMapTest.java      |  16 +-
 .../DistrbutedRegionProfileOffHeapDUnitTest.java   |   3 +-
 ...zedDiskRegionWithIoExceptionRegressionTest.java |  91 +--
 ...tionedRegionLocalMaxMemoryOffHeapDUnitTest.java |   3 +-
 .../PartitionedRegionOffHeapEvictionDUnitTest.java |   3 +-
 .../PersistentRegionTransactionDUnitTest.java      | 242 +++++++
 .../internal/cache/eviction/EvictionDUnitTest.java |   3 +-
 .../eviction/EvictionObjectSizerDUnitTest.java     |   3 +-
 .../cache/eviction/EvictionStatsDUnitTest.java     |   3 +-
 .../LRUListWithAsyncSortingIntegrationTest.java    |   3 +-
 .../LRUListWithSyncSortingIntegrationTest.java     |   3 +-
 .../cache/eviction/OffHeapEvictionDUnitTest.java   |   3 +-
 .../eviction/OffHeapEvictionStatsDUnitTest.java    |   3 +-
 .../RegionEntryEvictionIntegrationTest.java        |   3 +-
 .../cache/map/AbstractRegionMapPutTest.java        | 352 +++++++++++
 .../internal/cache/map/RegionMapCommitPutTest.java | 704 +++++++++++++++++++++
 .../geode/internal/cache/map/RegionMapPutTest.java | 156 ++++-
 ...BucketCreationCrashCompletesRegressionTest.java |   3 +-
 .../cache/partitioned/ElidedPutAllDUnitTest.java   |   3 +-
 .../partitioned/PartitionResolverDUnitTest.java    |   3 +-
 .../PartitionedRegionLoaderWriterDUnitTest.java    |   3 +-
 .../PartitionedRegionMetaDataCleanupDUnitTest.java |   3 +-
 .../partitioned/PersistPRKRFIntegrationTest.java   |   5 +-
 ...sistentColocatedPartitionedRegionDUnitTest.java |   3 +-
 .../PersistentPartitionedRegionDUnitTest.java      |   3 +-
 ...sistentPartitionedRegionOldConfigDUnitTest.java |   3 +-
 ...tPartitionedRegionWithTransactionDUnitTest.java |   3 +-
 ...eueRemovalMessageProcessingDistributedTest.java |   3 +-
 .../RegisterInterestKeysValuesDistributedTest.java |   3 +-
 .../cache/partitioned/ShutdownAllDUnitTest.java    |   3 +-
 .../StreamingPartitionOperationManyDUnitTest.java  |   3 +-
 .../StreamingPartitionOperationOneDUnitTest.java   |   3 +-
 .../fixed/FixedPartitioningDUnitTest.java          |   3 +-
 ...oningWithColocationAndPersistenceDUnitTest.java |   3 +-
 .../DefaultDiskDirsIntegrationTest.java            |   3 +-
 .../PersistenceInitialImageAdvisorTest.java        | 265 +++++++-
 .../PersistentRVVRecoveryDUnitTest.java            |   3 +-
 .../PersistentRecoveryOrderDUnitTest.java          |   3 +-
 .../PersistentRecoveryOrderOldConfigDUnitTest.java |   3 +-
 .../CompressionCacheListenerOffHeapDUnitTest.java  |   3 +-
 ...ompressionRegionOperationsOffHeapDUnitTest.java |   3 +-
 .../geode/internal/config/JAXBServiceTest.java     |  17 +
 .../logging/CacheLogRollingIntegrationTest.java    |   3 +-
 .../logging/DistributedSystemLogFileJUnitTest.java |   3 +-
 .../internal/logging/LocatorLogFileJUnitTest.java  |   3 +-
 .../logging/LogServiceIntegrationJUnitTest.java    |   3 +-
 .../internal/logging/MergeLogFilesJUnitTest.java   |   3 +-
 .../offheap/FreeListOffHeapRegionJUnitTest.java    |   3 +-
 .../geode/internal/offheap/InlineKeyJUnitTest.java |   3 +-
 .../MemoryAllocatorFillPatternIntegrationTest.java |   3 +-
 .../internal/offheap/OffHeapIndexJUnitTest.java    |   3 +-
 .../offheap/OffHeapLRURecoveryRegressionTest.java  |   3 +-
 .../offheap/OffHeapValidationJUnitTest.java        |   3 +-
 .../offheap/OldFreeListOffHeapRegionJUnitTest.java |   3 +-
 .../offheap/OutOfOffHeapMemoryDUnitTest.java       |   3 +-
 .../offheap/TxReleasesOffHeapOnCloseJUnitTest.java |   3 +-
 .../statistics/DiskSpaceLimitIntegrationTest.java  |   3 +-
 ...DistributedSystemStatisticsIntegrationTest.java |   3 +-
 ...ributedSystemStatisticsTypeIntegrationTest.java |   3 +-
 .../statistics/FileSizeLimitIntegrationTest.java   |   3 +-
 .../GemFireStatSamplerIntegrationTest.java         |   3 +-
 .../internal/statistics/LinuxSystemStatsTest.java  |   3 +-
 .../SimpleStatSamplerIntegrationTest.java          |   3 +-
 .../StatArchiveHandlerIntegrationTest.java         |   3 +-
 ...veWithConsecutiveResourceInstGeneratorTest.java |   3 +-
 ...WithConsecutiveResourceInstIntegrationTest.java |   3 +-
 ...chiveWithMissingResourceTypeRegressionTest.java |   3 +-
 .../StatArchiveWriterReaderIntegrationTest.java    |   3 +-
 .../statistics/StatSamplerIntegrationTest.java     |   3 +-
 .../StatTypesAreRolledOverRegressionTest.java      |   3 +-
 .../statistics/StatisticsDistributedTest.java      |   3 +-
 .../statistics/ValueMonitorIntegrationTest.java    |   3 +-
 .../apache/geode/management/JMXMBeanDUnitTest.java |   4 +-
 .../management/OffHeapManagementDUnitTest.java     |   3 +-
 ...niversalMembershipListenerAdapterDUnitTest.java |   2 -
 .../bean/stats/AsyncEventQueueStatsJUnitTest.java  |   3 +-
 .../bean/stats/CacheServerStatsJUnitTest.java      |   3 +-
 .../management/bean/stats/DiskStatsJUnitTest.java  |   3 +-
 .../stats/DistributedSystemStatsDUnitTest.java     |   3 +-
 .../stats/DistributedSystemStatsJUnitTest.java     |   3 +-
 .../bean/stats/GatewayMBeanBridgeJUnitTest.java    |   3 +-
 .../bean/stats/GatewayReceiverStatsJUnitTest.java  |   3 +-
 .../bean/stats/MemberLevelStatsJUnitTest.java      |   3 +-
 .../bean/stats/RegionStatsJUnitTest.java           |   3 +-
 .../beans/DistributedSystemBridgeJUnitTest.java    | 142 ++++-
 .../internal/cli/GfshParserAutoCompletionTest.java |   3 +-
 .../internal/cli/GfshParserConverterTest.java      |   3 +-
 .../internal/cli/GfshParserParsingTest.java        |   3 +-
 .../internal/cli/HeadlessGfshIntegrationTest.java  |   3 +-
 .../AlterAsyncEventQueueCommandDUnitTest.java      |   3 +-
 .../cli/commands/AlterCompressorDUnitTest.java     |   3 +-
 .../cli/commands/AlterDiskStoreDUnitTest.java      |   3 +-
 .../cli/commands/AlterRegionCommandDUnitTest.java  |   4 +-
 .../AlterRegionCommandIntegrationTest.java         |   4 +-
 .../cli/commands/AlterRegionCommandTest.java       |   7 +
 .../commands/ChangeLogLevelCommandDUnitTest.java   |   3 +-
 .../ConfigurePDXCommandIntegrationTest.java        |   4 +-
 .../cli/commands/ConfigurePDXCommandTest.java      |   8 +-
 .../internal/cli/commands/ConnectCommandTest.java  |  45 +-
 .../CreateAlterDestroyRegionCommandsDUnitTest.java |   6 +-
 .../CreateAsyncEventQueueCommandDUnitTest.java     |   4 +-
 .../CreateDefinedIndexesCommandDUnitTest.java      |   4 +-
 .../cli/commands/CreateIndexCommandDUnitTest.java  |   3 +-
 .../CreateJndiBindingCommandDUnitTest.java         |   3 +-
 .../cli/commands/CreateJndiBindingCommandTest.java |  32 +-
 .../cli/commands/CreateRegionCommandDUnitTest.java |   4 +-
 .../CreateRegionCommandIntegrationTest.java        |   4 +-
 .../commands/CreateRegionSecurityDUnitTest.java    |   3 +-
 ...DeployCommandFunctionRegistrationDUnitTest.java |   4 +-
 .../commands/DeployCommandRedeployDUnitTest.java   |   3 +-
 .../cli/commands/DeployWithGroupsDUnitTest.java    |   2 +-
 .../DescribeConfigCommandIntegrationTest.java      |   4 +-
 .../DescribeDiskStoreCommandIntegrationTest.java   |   3 +-
 .../DescribeJndiBindingCommandDUnitTest.java       |   2 +-
 .../commands/DescribeMembersCommandDUnitTest.java  |   4 +-
 .../cli/commands/DescribeRegionDUnitTest.java      |   3 +-
 .../commands/DescribeRegionIntegrationTest.java    |   3 +-
 .../DestroyAsyncEventQueueCommandDUnitTest.java    |   4 +-
 .../commands/DestroyIndexCommandsDUnitTest.java    |   4 +-
 .../commands/DestroyJndiBindingCommandTest.java    |  41 +-
 .../commands/DestroyRegionCommandDUnitTest.java    |   4 +-
 .../cli/commands/DiskStoreCommandsDUnitTest.java   |   4 +-
 .../ExecuteFunctionCommandSecurityTest.java        |   3 +-
 .../cli/commands/ExecuteFunctionCommandTest.java   |  35 +-
 .../cli/commands/ExportConfigCommandTest.java      |  41 +-
 .../internal/cli/commands/ExportLogsDUnitTest.java |   3 +-
 .../cli/commands/ExportLogsIntegrationTest.java    |   3 +-
 .../commands/ExportLogsOnServerManagerDUnit.java   |   3 +-
 .../cli/commands/ExportLogsStatsDUnitTest.java     |   3 +-
 .../ExportLogsWithMemberGroupDUnitTest.java        |   2 +-
 .../commands/ExportStackTraceCommandDUnitTest.java |   3 +-
 .../cli/commands/FunctionCommandsDUnitTest.java    |   3 +-
 .../internal/cli/commands/GcCommandDUnitTest.java  |   3 +-
 .../cli/commands/GemfireDataCommandsDUnitTest.java | 175 +----
 .../cli/commands/GetCommandIntegrationTest.java    | 229 +++++--
 .../IndexCommandsShareConfigurationDUnitTest.java  |   4 +-
 .../ListAsyncEventQueuesCommandDUnitTest.java      |   3 +-
 .../ListDiskStoreCommandIntegrationTest.java       |   4 +-
 .../cli/commands/ListIndexCommandDUnitTest.java    |   4 +-
 .../commands/ListJndiBindingCommandDUnitTest.java  |   7 +-
 .../cli/commands/ListMembersCommandDUnitTest.java  |   2 +-
 .../internal/cli/commands/ListRegionDUnitTest.java |   3 +-
 .../cli/commands/ListRegionIntegrationTest.java    |   3 +-
 .../cli/commands/LocateEntryDUnitTest.java         |  39 +-
 .../cli/commands/PutCommandIntegrationTest.java    |  55 +-
 .../cli/commands/QueryCommandIntegrationTest.java  |  67 +-
 .../cli/commands/RemoveCommandDUnitTest.java       |  11 +-
 .../cli/commands/RemoveCommandJsonDUnitTest.java   |   2 +-
 .../cli/commands/ShellCommandsDUnitTest.java       |   3 +-
 .../cli/commands/ShowDeadlockDUnitTest.java        |   2 +-
 .../cli/commands/ShowLogCommandDUnitTest.java      |   3 +-
 .../cli/commands/ShowMetricsDUnitTest.java         |   2 +-
 .../commands/ShowMissingDiskStoresDUnitTest.java   |   3 +-
 .../cli/commands/ShutdownCommandDUnitTest.java     |   2 +-
 .../DataCommandFunctionWithPDXJUnitTest.java       |  95 ++-
 .../internal/cli/remote/CommandExecutorTest.java   |  16 +-
 .../internal/cli/result/TabularResultDataTest.java |   1 +
 .../model/LegacyVsResultModelComparisonTest.java   |   6 +-
 .../cli/result/model/TabularResultModelTest.java}  |  47 +-
 .../cli/shell/GfshExecutionStrategyTest.java       |  15 +
 .../configuration/DeployJarWithSSLDUnitTest.java   |   2 +-
 .../internal/security/MultiClientDUnitTest.java    |   3 +-
 .../security/MultiUserAuthenticationDUnitTest.java |   3 +-
 .../memcached/DomainObjectsAsValuesJUnitTest.java  |   6 +-
 .../memcached/GemcachedDevelopmentJUnitTest.java   |   6 +-
 .../geode/memcached/IntegrationJUnitTest.java      |   8 +-
 .../geode/pdx/AutoSerializableJUnitTest.java       |  25 +-
 .../org/apache/geode/pdx/ByteSourceJUnitTest.java  |   5 +-
 .../pdx/ClientsWithVersioningRetryDUnitTest.java   |   7 +-
 .../geode/pdx/JSONPdxClientServerDUnitTest.java    |   6 +-
 .../geode/pdx/PDXAsyncEventQueueDUnitTest.java     |   2 -
 .../geode/pdx/PdxDeserializationDUnitTest.java     |   2 +-
 .../geode/pdx/PdxInstanceFactoryJUnitTest.java     |  32 +-
 .../org/apache/geode/pdx/PdxInstanceJUnitTest.java |  14 +-
 .../org/apache/geode/pdx/PdxStringJUnitTest.java   |   5 +-
 .../apache/geode/pdx/PdxTypeExportDUnitTest.java   |   2 +-
 .../java/org/apache/geode/pdx/SimpleClass.java     |  12 +
 .../geode/pdx/internal/MultipleCacheJUnitTest.java |   3 +-
 .../java/org/apache/geode/redis/AuthJUnitTest.java |   7 +-
 .../org/apache/geode/redis/HashesJUnitTest.java    |  15 +-
 .../org/apache/geode/redis/ListsJUnitTest.java     |   7 +-
 .../org/apache/geode/redis/RedisDistDUnitTest.java |  14 +-
 .../apache/geode/redis/SortedSetsJUnitTest.java    |  19 +-
 .../org/apache/geode/redis/StringsJunitTest.java   |  15 +-
 .../executor/AbstractScanExecutorTest.java         |   6 +-
 .../ClientAuthenticationPart2DUnitTest.java        |   4 +-
 .../security/ClientAuthenticationTestUtils.java    |   8 +-
 ...onUsingLegacySecurityWithFailoverDUnitTest.java |   8 +-
 .../security/ClientMultiUserAuthzDUnitTest.java    |  20 +-
 .../ClusterConfigurationSecurityDUnitTest.java     |   3 +-
 .../DeltaClientAuthorizationDUnitTest.java         |  14 +-
 .../DeltaClientPostAuthorizationDUnitTest.java     |  14 +-
 .../security/GemFireSecurityExceptionTest.java     |   5 +-
 .../IntegratedSecurityPeerAuthDistributedTest.java |  11 +-
 .../geode/security/NotAuthorizedExceptionTest.java |   7 +-
 .../geode/security/P2PAuthenticationDUnitTest.java |  23 +-
 .../apache/geode/security/PDXPostProcessor.java    |   2 +-
 ...AuthenticatorWithCachelessLocatorDUnitTest.java |   9 +-
 .../apache/geode/security/SecurityTestUtils.java   |  31 +-
 .../generator/LdapUserCredentialGenerator.java     |   2 +-
 .../security/generator/SSLCredentialGenerator.java |   4 +-
 .../security/templates/PKCSPrincipalTest.java      |   2 +-
 .../security/templates/UsernamePrincipalTest.java  |   2 +-
 .../test/java/org/apache/geode/sequence/Arrow.java |   3 +-
 .../java/org/apache/geode/sequence/Lifeline.java   |   3 +-
 .../apache/geode/sequence/SelectGraphDialog.java   |  21 +-
 .../org/apache/geode/sequence/SequenceDiagram.java |  23 +-
 .../org/apache/geode/sequence/SequencePanel.java   |  10 +-
 .../org/apache/geode/sequence/StateColorMap.java   |   2 +-
 .../java/org/apache/geode/sequence/TimeAxis.java   |   8 +-
 .../org/apache/geode/sequence/ZoomingPanel.java    |  12 +-
 .../apache/geode/test/dunit/LogWriterUtils.java    |   2 +-
 .../org/apache/geode/test/dunit/ThreadUtils.java   |   4 +-
 .../java/org/apache/geode/test/dunit/Wait.java     |   4 +-
 .../geode/test/dunit/rules/RemoteInvoker.java      |   2 +-
 .../java/org/apache/geode/test/fake/Fakes.java     |   5 +-
 .../golden/FailWithExtraLineInOutputJUnitTest.java |   3 +-
 ...ailWithLineMissingFromEndOfOutputJUnitTest.java |   3 +-
 ...WithLineMissingFromMiddleOfOutputJUnitTest.java |   3 +-
 .../golden/FailWithProblemInOutputTestCase.java    |   3 +-
 .../apache/geode/test/golden/GoldenComparator.java |   4 +-
 .../apache/geode/test/golden/GoldenTestCase.java   |   2 +-
 .../apache/geode/test/golden/PassJUnitTest.java    |   3 +-
 .../apache/geode/test/process/ProcessWrapper.java  |  10 +-
 .../test/process/ProcessWrapperJUnitTest.java      |   2 +-
 .../java/org/apache/geode/util/JSR166TestCase.java |   6 +-
 .../java/org/apache/persistence/admin/Logger.java  |   7 +-
 .../org/apache/persistence/logging/Logger.java     |   6 +-
 .../persistence/logging/SimpleFormatter.java       |   5 +-
 .../apache/persistence/logging/StreamHandler.java  |   3 +-
 .../java/parReg/query/unittest/NewPortfolio.java   |   6 +-
 .../test/java/parReg/query/unittest/Position.java  |   4 +-
 .../codeAnalysis/sanctionedDataSerializables.txt   |  12 +-
 .../cache/query/dunit/QueryMonitorDUnitTest.java   | 512 +++++++--------
 .../internal/cache/ha/CQListGIIDUnitTest.java      |   1 -
 .../commands/DescribeClientCommandDUnitTest.java   |   3 +-
 .../commands/DurableClientCommandsDUnitTest.java   |   4 +-
 .../cli/commands/ListClientCommandDUnitTest.java   |   3 +-
 .../implementing_data_loaders.html.md.erb          | 217 +++++--
 .../managing/heap_use/heap_management.html.md.erb  |   6 +-
 .../managing/security/implementing_ssl.html.md.erb |   7 +-
 .../topics/gemfire_properties.html.md.erb          |   2 +-
 .../gfsh/command-pages/alter.html.md.erb           |   2 +-
 .../gfsh/command-pages/create.html.md.erb          |   4 +-
 .../test/junit/categories/CompressionTest.java     |  13 +-
 .../test/junit/categories/ConfigurationTest.java   |  13 +-
 .../geode/test/junit/categories/EvictionTest.java  |  13 +-
 .../test/junit/categories/HttpSessionTest.java     |  13 +-
 .../test/junit/categories/JDBCConnectorTest.java   |  13 +-
 .../geode/test/junit/categories/JMXTest.java       |  13 +-
 .../geode/test/junit/categories/LoggingTest.java   |  13 +-
 .../geode/test/junit/categories/OffHeapTest.java   |  13 +-
 .../test/junit/categories/PartitioningTest.java    |  12 +-
 .../test/junit/categories/PersistenceTest.java     |  12 +-
 .../geode/test/junit/categories/RegionsTest.java   |  12 +-
 .../geode/test/junit/categories/SnapshotTest.java  |  13 +-
 .../test/junit/categories/StatisticsTest.java      |  13 +-
 .../test/compiler/UncompiledSourceCodeTest.java    |   2 +-
 .../test/junit/rules/ExpectedTimeoutRuleTest.java  |   2 +-
 .../test/junit/rules/IgnoreUntilRuleTest.java      |   3 +-
 .../geode/test/junit/rules/RepeatRuleTest.java     |   3 +-
 .../junit/rules/RetryRuleGlobalWithErrorTest.java  |   2 +-
 .../rules/RetryRuleGlobalWithExceptionTest.java    |   2 +-
 .../junit/rules/RetryRuleLocalWithErrorTest.java   |   2 +-
 .../rules/RetryRuleLocalWithExceptionTest.java     |   2 +-
 .../test/junit/rules/TemporaryFileRuleTest.java    |   3 +-
 .../examples/RepeatingTestCasesExampleTest.java    |   3 +-
 .../junit/rules/examples/RetryRuleExampleTest.java |   2 +-
 .../junit/rules/examples/RuleAndClassRuleTest.java |   2 +-
 .../SerializableExternalResourceTest.java          |   2 +-
 .../serializable/SerializableRuleListTest.java     |   2 +-
 .../SerializableTemporaryFolderTest.java           |   7 +-
 .../serializable/SerializableTestNameTest.java     |   7 +-
 .../serializable/SerializableTestWatcherTest.java  |   2 +-
 .../serializable/SerializableTimeoutTest.java      |   8 +-
 .../org/apache/geode/cache/lucene/LuceneIndex.java |   9 +
 .../geode/cache/lucene/LuceneIndexFactory.java     |   2 +
 .../internal/CreateRegionProcessorForLucene.java   |  73 +++
 .../internal/LuceneIndexForPartitionedRegion.java  |  14 +
 .../cache/lucene/internal/LuceneRawIndex.java      |   5 +
 .../cache/lucene/internal/LuceneServiceImpl.java   |  23 +-
 .../internal/PartitionedRepositoryManager.java     |   9 +-
 .../lucene/internal/cli/LuceneIndexCommands.java   |   6 +-
 .../lucene/internal/cli/LuceneIndexDetails.java    |  31 +-
 .../lucene/internal/cli/LuceneIndexStatus.java     |  10 +-
 .../cli/functions/LuceneListIndexFunction.java     |  17 +-
 .../internal/distributed/LuceneQueryFunction.java  |  41 +-
 .../internal/repository/RepositoryManager.java     |  13 +
 .../lucene/internal/xml/LuceneIndexCreation.java   |   6 +-
 .../internal/xml/LuceneIndexXmlGenerator.java      |   5 +-
 .../sanctioned-geode-lucene-serializables.txt      |   3 +-
 .../lucene/FlatFormatSerializerJUnitTest.java      |   3 +-
 .../lucene/LuceneQueriesReindexDUnitTest.java      | 182 ++++++
 .../LuceneSearchWithRollingUpgradeDUnit.java       |  36 +-
 .../geode/cache/lucene/RebalanceDUnitTest.java     |   5 +-
 .../LuceneIndexCreationProfileJUnitTest.java       |   9 +-
 .../LuceneIndexForPartitionedRegionTest.java       |  15 +-
 .../lucene/internal/LuceneIndexStatsJUnitTest.java |   7 +-
 .../internal/LuceneQueryFactoryImplJUnitTest.java  |   6 +-
 .../internal/LuceneRegionListenerJUnitTest.java    |   6 +-
 .../internal/LuceneResultStructImpJUnitTest.java   |   3 +-
 .../internal/LuceneServiceImplJUnitTest.java       |   5 +
 .../PageableLuceneQueryResultsImplJUnitTest.java   |   4 +-
 .../internal/cli/LuceneIndexCommandsDUnitTest.java |   4 +-
 .../internal/cli/LuceneIndexCommandsJUnitTest.java |  36 +-
 ...neIndexCommandsWithReindexAllowedDUnitTest.java |  30 +
 .../LuceneDescribeIndexFunctionJUnitTest.java      |   7 +-
 .../LuceneListIndexFunctionJUnitTest.java          |  61 +-
 .../LuceneSearchIndexFunctionJUnitTest.java        |  12 +-
 .../LuceneClusterConfigurationDUnitTest.java       |   4 +-
 .../directory/DumpDirectoryFilesJUnitTest.java     |   6 +-
 .../internal/distributed/EntryScoreJUnitTest.java  |   2 +-
 .../LuceneQueryFunctionContextJUnitTest.java       |   3 +-
 .../distributed/LuceneQueryFunctionJUnitTest.java  |  21 +-
 .../distributed/TopEntriesCollectorJUnitTest.java  |   4 +-
 .../TopEntriesFunctionCollectorJUnitTest.java      |   5 +-
 .../internal/distributed/TopEntriesJUnitTest.java  |   2 +-
 .../WaitUntilFlushedFunctionJUnitTest.java         |   9 +-
 .../internal/filesystem/ChunkKeyJUnitTest.java     |   2 +-
 .../lucene/internal/filesystem/FileJUnitTest.java  |   2 +-
 .../filesystem/FileSystemStatsJUnitTest.java       |   7 +-
 .../BucketTargetingFixedResolverTest.java          |   2 +-
 .../internal/partition/BucketTargetingMapTest.java |   2 +-
 .../repository/IndexRepositoryImplJUnitTest.java   |  12 +-
 .../HeterogeneousLuceneSerializerJUnitTest.java    |   5 +-
 .../serializer/PdxFieldMapperJUnitTest.java        |   6 +-
 .../serializer/ReflectionFieldMapperJUnitTest.java |   3 +-
 .../internal/results/PageResultsJUnitTest.java     |   2 +-
 ...uceneIndexXmlGeneratorIntegrationJUnitTest.java |  12 +-
 .../xml/LuceneIndexXmlGeneratorJUnitTest.java      |  14 +-
 .../LuceneIndexXmlParserIntegrationJUnitTest.java  |   3 +-
 .../xml/LuceneIndexXmlParserJUnitTest.java         |   5 +-
 .../cache/lucene/test/LuceneTestSerializer.java    |   4 +-
 .../cache/lucene/test/LuceneTestUtilities.java     |   5 +-
 geode-old-versions/build.gradle                    |   1 +
 .../tools/pulse/internal/PulseAppListenerTest.java |   2 +-
 .../data/JMXDataUpdaterGetDoubleAttributeTest.java |   2 +-
 .../junit/ClusterSelectedRegionServiceTest.java    |   8 +-
 .../ClusterSelectedRegionsMemberServiceTest.java   |   8 +-
 .../tests/junit/MemberGatewayHubServiceTest.java   |   8 +-
 .../tools/pulse/tests/ui/PulseAutomatedTest.java   |  43 +-
 .../geode/tools/pulse/tests/ui/PulseTestUtils.java |   4 +-
 .../util/AutoBalancerIntegrationJUnitTest.java     |   4 +-
 .../wan/parallel/ParallelGatewaySenderImpl.java    |   2 +-
 .../cache/wan/serial/SerialGatewaySenderImpl.java  |   6 +-
 .../geode/internal/cache/wan/WANTestBase.java      |   9 +-
 .../ParallelWANPropagationLoopBackDUnitTest.java   |   6 +-
 .../SerialGatewaySenderOperationsDUnitTest.java    |   2 -
 .../SerialWANPropagationsFeatureDUnitTest.java     |  14 +
 .../DestroyGatewayReceiverCommandDUnitTest.java    | 122 +++-
 .../web/controllers/support/RegionDataTest.java    |   4 +-
 .../cli/commands/AlterRuntimeCommandDUnitTest.java |   3 +-
 .../commands/ClusterConfigurationDUnitTest.java    |   3 +-
 .../cli/commands/CommandOverHttpDUnitTest.java     |   3 +-
 .../internal/cli/commands/CommandOverHttpTest.java |   7 +-
 .../commands/ConnectCommandIntegrationTest.java    |   3 +-
 .../cli/commands/ConnectCommandWithSSLTest.java    |   3 +-
 .../commands/ConnectCommandWithSecurityTest.java   |   4 +-
 .../commands/DescribeConfigCommandDUnitTest.java   |   3 +-
 ...xecuteFunctionCommandWithSecurityDUnitTest.java |   3 +-
 .../cli/commands/ExportConfigCommandDUnitTest.java |   4 +-
 .../ExportLogsOverHttpIntegrationTest.java         |   3 +-
 .../commands/ExportLogsStatsOverHttpDUnitTest.java |   3 +-
 .../FunctionCommandsOverHttpDUnitTest.java         |   3 +-
 .../cli/commands/IndexCommandOverHttpTest.java     |   3 +-
 .../ListIndexCommandOverHttpDUnitTest.java         |   3 +-
 .../cli/commands/QueryCommandOverHttpTest.java     |   3 +-
 .../RebalanceCommandOverHttpDistributedTest.java   |   3 +-
 .../commands/ShutdownCommandOverHttpDUnitTest.java |   3 +-
 .../support/LoginHandlerInterceptorJUnitTest.java  |   5 +-
 .../web/domain/QueryParameterSourceJUnitTest.java  |   6 +-
 ...lizableObjectHttpMessageConverterJUnitTest.java |   5 +-
 992 files changed, 10787 insertions(+), 7274 deletions(-)
 delete mode 100644 geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ExceptionHandler.java
 delete mode 100644 geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcCliFunction.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/cache/configuration/CacheLoaderType.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/cache/configuration/CacheWriterType.java
 rename geode-core/src/main/java/org/apache/geode/cache/configuration/{ClassWithParametersType.java => ClassNameType.java} (59%)
 delete mode 100644 geode-core/src/main/java/org/apache/geode/cache/configuration/InitializerType.java
 copy geode-core/src/main/java/org/apache/geode/cache/configuration/{ParameterType.java => ObjectType.java} (62%)
 delete mode 100644 geode-core/src/main/java/org/apache/geode/cache/configuration/StringType.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/map/AbstractRegionMapPut.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/map/RegionMapCommitPut.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/management/cli/CliFunction.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/cli/result/model/FileResultModel.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/cache/configuration/DeclarableTypeTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/DataSerializerHolderJUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/PersistentRegionTransactionDUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/map/AbstractRegionMapPutTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/map/RegionMapCommitPutTest.java
 copy geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcCliFunctionTest.java => geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExecuteFunctionCommandTest.java (53%)
 rename geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcCliFunctionTest.java => geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExportConfigCommandTest.java (55%)
 copy geode-core/src/test/java/org/apache/geode/{cache/configuration/CacheConfigTest.java => management/internal/cli/result/model/TabularResultModelTest.java} (50%)
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/CompressionTest.java (80%)
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/ConfigurationTest.java (80%)
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/EvictionTest.java (80%)
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/HttpSessionTest.java (80%)
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/JDBCConnectorTest.java (80%)
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/JMXTest.java (80%)
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/LoggingTest.java (80%)
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/OffHeapTest.java (80%)
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/PartitioningTest.java (80%)
 mode change 100644 => 100755
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/PersistenceTest.java (80%)
 mode change 100644 => 100755
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/RegionsTest.java (80%)
 mode change 100644 => 100755
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/SnapshotTest.java (80%)
 mode change 100644 => 100755
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-junit/src/main/java/org/apache/geode/test/junit/categories/StatisticsTest.java (80%)
 mode change 100644 => 100755
 create mode 100644 geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/CreateRegionProcessorForLucene.java
 copy geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/cp/CpMethodref.java => geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexStatus.java (80%)

-- 
To stop receiving notification emails like this one, please contact
boglesby@apache.org.

[geode] 01/01: GEODE-5145: Added support for destroying an index during region creation

Posted by bo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

boglesby pushed a commit to branch feature/GEODE-5145
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 0326713f5a557820cd36c7325d6540e804893b0f
Author: Barry Oglesby <bo...@pivotal.io>
AuthorDate: Wed May 2 09:43:33 2018 -0700

    GEODE-5145: Added support for destroying an index during region creation
---
 .../apache/geode/internal/cache/LocalRegion.java   |   4 +
 .../apache/geode/management/cli/GfshCommand.java   |   8 +
 .../geode/management/internal/cli/CliUtil.java     |  27 ++
 .../lucene/LuceneIndexDestroyedException.java      |   2 +-
 .../lucene/internal/DestroyLuceneIndexMessage.java |  21 +-
 .../internal/LuceneIndexCreationProfile.java       |   4 +
 .../internal/LuceneIndexForPartitionedRegion.java  |  31 +-
 .../cache/lucene/internal/LuceneIndexImpl.java     |   4 +
 .../lucene/internal/LuceneRegionListener.java      |   8 +-
 .../cache/lucene/internal/LuceneServiceImpl.java   |  31 +-
 .../lucene/internal/cli/LuceneCliStrings.java      |   2 +
 .../lucene/internal/cli/LuceneIndexCommands.java   |  84 ++---
 .../cli/functions/LuceneDestroyIndexFunction.java  |  31 +-
 .../cache/lucene/LuceneIndexDestroyDUnitTest.java  |  45 +++
 .../cli/DestroyLuceneIndexCommandsDUnitTest.java   | 407 +++++++++++++++++++++
 .../internal/cli/LuceneIndexCommandsDUnitTest.java |   8 +
 .../internal/cli/LuceneIndexCommandsJUnitTest.java | 102 ++----
 .../LuceneDestroyIndexFunctionJUnitTest.java       |   3 +-
 18 files changed, 669 insertions(+), 153 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
index ec65991..626f9e8 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
@@ -10497,6 +10497,10 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory,
     this.cacheServiceProfiles.put(profile.getId(), profile);
   }
 
+  public void removeCacheServiceProfile(String profileId) {
+    this.cacheServiceProfiles.remove(profileId);
+  }
+
   @Override
   public LoaderHelper createLoaderHelper(Object key, Object callbackArgument,
       boolean netSearchAllowed, boolean netLoadAllowed, SearchLoadAndWriteProcessor searcher) {
diff --git a/geode-core/src/main/java/org/apache/geode/management/cli/GfshCommand.java b/geode-core/src/main/java/org/apache/geode/management/cli/GfshCommand.java
index ab81ab2..1841eac 100644
--- a/geode-core/src/main/java/org/apache/geode/management/cli/GfshCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/cli/GfshCommand.java
@@ -30,6 +30,7 @@ import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.distributed.ConfigurationPersistenceService;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.InternalLocator;
+import org.apache.geode.internal.Version;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.internal.cli.exceptions.EntityNotFoundException;
@@ -124,6 +125,13 @@ public abstract class GfshCommand implements CommandMarker {
     return CliUtil.getAllNormalMembers(cache);
   }
 
+  /**
+   * Get All members >= a specific version, excluding locators
+   */
+  public Set<DistributedMember> getNormalMembersWithSameOrNewerVersion(Version version) {
+    return CliUtil.getNormalMembersWithSameOrNewerVersion(cache, version);
+  }
+
   public Execution getMembersFunctionExecutor(final Set<DistributedMember> members) {
     return FunctionService.onMembers(members);
   }
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 715bab1..8634145 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
@@ -49,7 +49,9 @@ import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
+import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.ClassPathLoader;
+import org.apache.geode.internal.Version;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.execute.AbstractExecution;
 import org.apache.geode.internal.lang.StringUtils;
@@ -184,6 +186,31 @@ public class CliUtil {
   }
 
   /**
+   * Returns a set of all the members of the distributed system of a specific version excluding
+   * locators.
+   */
+  @SuppressWarnings("unchecked")
+  public static Set<DistributedMember> getNormalMembersWithSameOrNewerVersion(InternalCache cache,
+      Version version) {
+    return getAllNormalMembers(cache).stream().filter(
+        member -> ((InternalDistributedMember) member).getVersionObject().compareTo(version) >= 0)
+        .collect(Collectors.toSet());
+  }
+
+  /**
+   * Returns a set of all the members of the distributed system older than a specific version
+   * excluding locators.
+   */
+  @SuppressWarnings("unchecked")
+  public static Set<DistributedMember> getNormalMembersWithSameOrOlderVersion(InternalCache cache,
+      Version version) {
+    return getAllNormalMembers(cache).stream()
+        .filter(member -> ((InternalDistributedMember) member).getVersionObject().equals(version))
+        .collect(Collectors.toSet());
+    // dm.removeMembersWithSameOrNewerVersion(oldMembers, version);
+  }
+
+  /**
    * Returns a set of all the members of the distributed system including locators.
    */
   @SuppressWarnings("unchecked")
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/LuceneIndexDestroyedException.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/LuceneIndexDestroyedException.java
index 7b38f24..a0365e6 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/LuceneIndexDestroyedException.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/LuceneIndexDestroyedException.java
@@ -27,7 +27,7 @@ public class LuceneIndexDestroyedException extends GemFireException {
   private final String regionPath;
 
   public LuceneIndexDestroyedException(String indexName, String regionPath) {
-    super();
+    super("Lucene index " + indexName + " on region " + regionPath + " has been destroyed");
     this.indexName = indexName;
     this.regionPath = regionPath;
   }
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/DestroyLuceneIndexMessage.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/DestroyLuceneIndexMessage.java
index abf7336..93c620d 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/DestroyLuceneIndexMessage.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/DestroyLuceneIndexMessage.java
@@ -22,6 +22,7 @@ import java.util.Collection;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
+import org.apache.geode.cache.Region;
 import org.apache.geode.cache.lucene.LuceneServiceProvider;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.MessageWithReply;
@@ -29,6 +30,7 @@ import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
 import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
 
 public class DestroyLuceneIndexMessage extends PooledDistributionMessage
@@ -67,10 +69,21 @@ public class DestroyLuceneIndexMessage extends PooledDistributionMessage
       try {
         InternalCache cache = dm.getCache();
         LuceneServiceImpl impl = (LuceneServiceImpl) LuceneServiceProvider.get(cache);
-        impl.destroyIndex(this.indexName, this.regionPath, false);
-        if (logger.isDebugEnabled()) {
-          logger.debug("DestroyLuceneIndexMessage: Destroyed regionPath=" + this.regionPath
-              + "; indexName=" + this.indexName);
+        try {
+          impl.destroyIndex(this.indexName, this.regionPath, false);
+          if (logger.isDebugEnabled()) {
+            logger.debug("DestroyLuceneIndexMessage: Destroyed regionPath=" + this.regionPath
+                + "; indexName=" + this.indexName);
+          }
+        } catch (IllegalArgumentException e) {
+          // If the IllegalArgumentException is index not found, then its ok; otherwise rethrow it.
+          String fullRegionPath =
+              regionPath.startsWith(Region.SEPARATOR) ? regionPath : Region.SEPARATOR + regionPath;
+          String indexNotFoundMessage = LocalizedStrings.LuceneService_INDEX_0_NOT_FOUND_IN_REGION_1
+              .toLocalizedString(this.indexName, fullRegionPath);
+          if (!e.getLocalizedMessage().equals(indexNotFoundMessage)) {
+            throw e;
+          }
         }
       } catch (Throwable e) {
         replyException = new ReplyException(e);
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java
index 3d9b00d..c3b08b3 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java
@@ -96,6 +96,10 @@ public class LuceneIndexCreationProfile implements CacheServiceProfile, Versione
 
   @Override
   public String getId() {
+    return generateId(indexName, regionPath);
+  }
+
+  public static String generateId(String indexName, String regionPath) {
     return "lucene_" + LuceneServiceImpl.getUniqueIndexName(indexName, regionPath);
   }
 
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexForPartitionedRegion.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexForPartitionedRegion.java
index 778b8fd..2343a3c 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexForPartitionedRegion.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexForPartitionedRegion.java
@@ -26,6 +26,7 @@ import org.apache.geode.cache.PartitionAttributesFactory;
 import org.apache.geode.cache.PartitionResolver;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionAttributes;
+import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.cache.RegionShortcut;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
@@ -44,6 +45,7 @@ import org.apache.geode.distributed.internal.membership.InternalDistributedMembe
 import org.apache.geode.internal.cache.BucketRegion;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.PartitionedRegion;
+import org.apache.geode.internal.i18n.LocalizedStrings;
 
 public class LuceneIndexForPartitionedRegion extends LuceneIndexImpl {
   protected Region fileAndChunkRegion;
@@ -208,9 +210,15 @@ public class LuceneIndexForPartitionedRegion extends LuceneIndexImpl {
     // localDestroyRegion can't be used because locally destroying regions is not supported on
     // colocated regions
     if (initiator) {
-      fileAndChunkRegion.destroyRegion();
-      if (logger.isDebugEnabled()) {
-        logger.debug("Destroyed fileAndChunkRegion=" + fileAndChunkRegion.getName());
+      try {
+        fileAndChunkRegion.destroyRegion();
+        if (logger.isDebugEnabled()) {
+          logger.debug("Destroyed fileAndChunkRegion=" + fileAndChunkRegion.getName());
+        }
+      } catch (RegionDestroyedException e) {
+        if (logger.isDebugEnabled()) {
+          logger.debug("Already destroyed fileAndChunkRegion=" + fileAndChunkRegion.getName());
+        }
       }
     }
 
@@ -228,9 +236,8 @@ public class LuceneIndexForPartitionedRegion extends LuceneIndexImpl {
   }
 
   private void destroyOnRemoteMembers() {
-    PartitionedRegion pr = (PartitionedRegion) getDataRegion();
-    DistributionManager dm = pr.getDistributionManager();
-    Set<InternalDistributedMember> recipients = pr.getRegionAdvisor().adviseAllPRNodes();
+    DistributionManager dm = getDataRegion().getDistributionManager();
+    Set<InternalDistributedMember> recipients = dm.getOtherNormalDistributionManagerIds();
     if (!recipients.isEmpty()) {
       if (logger.isDebugEnabled()) {
         logger.debug("LuceneIndexForPartitionedRegion: About to send destroy message recipients="
@@ -246,7 +253,17 @@ public class LuceneIndexForPartitionedRegion extends LuceneIndexImpl {
       try {
         processor.waitForReplies();
       } catch (ReplyException e) {
-        if (!(e.getCause() instanceof CancelException)) {
+        Throwable cause = e.getCause();
+        if (cause instanceof IllegalArgumentException) {
+          // If the IllegalArgumentException is index not found, then its ok; otherwise rethrow it.
+          String fullRegionPath =
+              regionPath.startsWith(Region.SEPARATOR) ? regionPath : Region.SEPARATOR + regionPath;
+          String indexNotFoundMessage = LocalizedStrings.LuceneService_INDEX_0_NOT_FOUND_IN_REGION_1
+              .toLocalizedString(indexName, fullRegionPath);
+          if (!cause.getLocalizedMessage().equals(indexNotFoundMessage)) {
+            throw e;
+          }
+        } else if (!(cause instanceof CancelException)) {
           throw e;
         }
       } catch (InterruptedException e) {
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexImpl.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexImpl.java
index e58c21f..f06fd91 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexImpl.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexImpl.java
@@ -226,6 +226,10 @@ public abstract class LuceneIndexImpl implements InternalLuceneIndex {
       getDataRegion().getExtensionPoint().removeExtension(extensionToDelete);
     }
 
+    // Remove cache service profile
+    dataRegion
+        .removeCacheServiceProfile(LuceneIndexCreationProfile.generateId(indexName, regionPath));
+
     // Destroy the async event queue
     destroyAsyncEventQueue(initiator);
 
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneRegionListener.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneRegionListener.java
index 88d7de0..7977670 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneRegionListener.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneRegionListener.java
@@ -22,6 +22,7 @@ import org.apache.lucene.analysis.Analyzer;
 import org.apache.geode.cache.AttributesFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionAttributes;
+import org.apache.geode.cache.lucene.LuceneIndexDestroyedException;
 import org.apache.geode.cache.lucene.LuceneSerializer;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.InternalRegionArguments;
@@ -107,7 +108,12 @@ public class LuceneRegionListener implements RegionListener {
   public void afterCreate(Region region) {
     if (region.getFullPath().equals(this.regionPath)
         && this.afterCreateInvoked.compareAndSet(false, true)) {
-      this.service.afterDataRegionCreated(this.luceneIndex);
+      try {
+        this.service.afterDataRegionCreated(this.luceneIndex);
+      } catch (LuceneIndexDestroyedException e) {
+        // @todo log a warning here?
+        return;
+      }
       this.service.createLuceneIndexOnDataRegion((PartitionedRegion) region, luceneIndex);
     }
   }
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneServiceImpl.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneServiceImpl.java
index 5267e30..ccb3d06 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneServiceImpl.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneServiceImpl.java
@@ -20,11 +20,11 @@ import static org.apache.geode.internal.DataSerializableFixedID.CREATE_REGION_ME
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -46,6 +46,7 @@ import org.apache.geode.cache.execute.Execution;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.cache.lucene.LuceneIndex;
+import org.apache.geode.cache.lucene.LuceneIndexDestroyedException;
 import org.apache.geode.cache.lucene.LuceneIndexExistsException;
 import org.apache.geode.cache.lucene.LuceneQueryFactory;
 import org.apache.geode.cache.lucene.LuceneSerializer;
@@ -94,8 +95,8 @@ public class LuceneServiceImpl implements InternalLuceneService {
   private static final Logger logger = LogService.getLogger();
 
   private InternalCache cache;
-  private final HashMap<String, LuceneIndex> indexMap = new HashMap<String, LuceneIndex>();
-  private final HashMap<String, LuceneIndexCreationProfile> definedIndexMap = new HashMap<>();
+  private final Map<String, LuceneIndex> indexMap = new ConcurrentHashMap<>();
+  private final Map<String, LuceneIndexCreationProfile> definedIndexMap = new ConcurrentHashMap<>();
   private IndexListener managementListener;
   public static boolean LUCENE_REINDEX =
       Boolean.getBoolean(DistributionConfig.GEMFIRE_PREFIX + "luceneReindex");
@@ -265,7 +266,12 @@ public class LuceneServiceImpl implements InternalLuceneService {
     LuceneIndexImpl luceneIndex = beforeDataRegionCreated(indexName, regionPath,
         region.getAttributes(), analyzer, fieldAnalyzers, aeqId, serializer, fields);
 
-    afterDataRegionCreated(luceneIndex);
+    try {
+      afterDataRegionCreated(luceneIndex);
+    } catch (LuceneIndexDestroyedException e) {
+      // @todo log a warning here?
+      return;
+    }
 
     createLuceneIndexOnDataRegion(region, luceneIndex);
   }
@@ -557,12 +563,21 @@ public class LuceneServiceImpl implements InternalLuceneService {
     // nothing to do there.
   }
 
-  public void registerIndex(LuceneIndex index) {
+  private boolean hasIndexBeenDestroyed(String uniqueIndexName) {
+    return !definedIndexMap.containsKey(uniqueIndexName);
+  }
+
+  private void registerIndex(LuceneIndex index) {
     String regionAndIndex = getUniqueIndexName(index.getName(), index.getRegionPath());
-    if (!indexMap.containsKey(regionAndIndex)) {
-      indexMap.put(regionAndIndex, index);
+    if (hasIndexBeenDestroyed(regionAndIndex)) {
+      ((InternalLuceneIndex) index).destroy(true);
+      throw new LuceneIndexDestroyedException(index.getName(), index.getRegionPath());
+    } else {
+      if (!indexMap.containsKey(regionAndIndex)) {
+        indexMap.put(regionAndIndex, index);
+      }
+      definedIndexMap.remove(regionAndIndex);
     }
-    definedIndexMap.remove(regionAndIndex);
   }
 
   public void unregisterIndex(final String region) {
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneCliStrings.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneCliStrings.java
index 81b6ecc..67d72a9 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneCliStrings.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneCliStrings.java
@@ -97,6 +97,8 @@ public class LuceneCliStrings {
       "Index cannot be empty.";
   public static final String LUCENE_DESTROY_INDEX__MSG__COULDNOT_FIND_MEMBERS_FOR_REGION_0 =
       "Could not find any members defining region {0}.";
+  public static final String LUCENE_DESTROY_INDEX__MSG__COULD_NOT_FIND__MEMBERS_GREATER_THAN_VERSION_0 =
+      "Could not find any members greater than or equal to version {0}.";
   public static final String LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEXES_FROM_REGION_0 =
       "Successfully destroyed all lucene indexes from region {0}";
   public static final String LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEX_0_FROM_REGION_1 =
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommands.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommands.java
index 43b7d2c..064c42a 100755
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommands.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommands.java
@@ -14,10 +14,8 @@
  */
 package org.apache.geode.cache.lucene.internal.cli;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Objects;
@@ -40,6 +38,7 @@ import org.apache.geode.cache.lucene.internal.cli.functions.LuceneSearchIndexFun
 import org.apache.geode.cache.lucene.internal.security.LucenePermission;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
+import org.apache.geode.internal.Version;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.execute.AbstractExecution;
 import org.apache.geode.management.cli.CliMetaData;
@@ -288,11 +287,27 @@ public class LuceneIndexCommands extends InternalGfshCommand {
     }
 
     authorize(Resource.CLUSTER, Operation.MANAGE, LucenePermission.TARGET);
-    Result result;
-    List<CliFunctionResult> accumulatedResults = new ArrayList<>();
-    final XmlEntity xmlEntity =
-        executeDestroyIndexFunction(accumulatedResults, indexName, regionPath);
-    result = getDestroyIndexResult(accumulatedResults, indexName, regionPath);
+
+    // Get members >= 1.6
+    Set<DistributedMember> validVersionMembers =
+        getNormalMembersWithSameOrNewerVersion(Version.GEODE_160);
+    if (validVersionMembers.isEmpty()) {
+      return ResultBuilder.createInfoResult(CliStrings.format(
+          LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__COULD_NOT_FIND__MEMBERS_GREATER_THAN_VERSION_0,
+          Version.GEODE_160));
+    }
+
+    // Execute the destroy index function
+    LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(indexName, regionPath);
+    ResultCollector<?, ?> rc =
+        executeFunction(destroyIndexFunction, indexInfo, validVersionMembers);
+
+    // Get the result
+    List<CliFunctionResult> cliFunctionResults = (List<CliFunctionResult>) rc.getResult();
+    Result result = getDestroyIndexResult(cliFunctionResults, indexName, regionPath);
+
+    // Get and process the xml entity
+    XmlEntity xmlEntity = findXmlEntity(cliFunctionResults);
     if (xmlEntity != null) {
       persistClusterConfiguration(result, () -> {
         // Delete the xml entity to remove the index(es) in all groups
@@ -304,61 +319,6 @@ public class LuceneIndexCommands extends InternalGfshCommand {
     return result;
   }
 
-  private XmlEntity executeDestroyIndexFunction(List<CliFunctionResult> accumulatedResults,
-      String indexName, String regionPath) {
-    // Destroy has three cases:
-    //
-    // - no members define the region
-    // In this case, send the request to all members to handle the case where the index has been
-    // created, but not the region
-    //
-    // - all members define the region
-    // In this case, send the request to one of the region members to destroy the index on all
-    // member
-    //
-    // - some members define the region; some don't
-    // In this case, send the request to one of the region members to destroy the index in all the
-    // region members. Then send the function to the remaining members to handle the case where
-    // the index has been created, but not the region
-    XmlEntity xmlEntity = null;
-    Set<DistributedMember> regionMembers = findMembersForRegion(regionPath);
-    Set<DistributedMember> normalMembers = getAllNormalMembers();
-    LuceneDestroyIndexInfo indexInfo = new LuceneDestroyIndexInfo(indexName, regionPath);
-    ResultCollector<?, ?> rc;
-    if (regionMembers.isEmpty()) {
-      // Attempt to destroy the proxy index on all members
-      indexInfo.setDefinedDestroyOnly(true);
-      rc = executeFunction(destroyIndexFunction, indexInfo, normalMembers);
-      accumulatedResults.addAll((List<CliFunctionResult>) rc.getResult());
-    } else {
-      // Attempt to destroy the index on a region member
-      indexInfo.setDefinedDestroyOnly(false);
-      Set<DistributedMember> singleMember = new HashSet<>();
-      singleMember.add(regionMembers.iterator().next());
-      rc = executeFunction(destroyIndexFunction, indexInfo, singleMember);
-      List<CliFunctionResult> cliFunctionResults = (List<CliFunctionResult>) rc.getResult();
-      CliFunctionResult cliFunctionResult = cliFunctionResults.get(0);
-      xmlEntity = cliFunctionResult.getXmlEntity();
-      for (DistributedMember regionMember : regionMembers) {
-        accumulatedResults.add(new CliFunctionResult(regionMember.getId(),
-            cliFunctionResult.isSuccessful(), cliFunctionResult.getMessage()));
-      }
-      // If that succeeds, destroy the proxy index(es) on all other members if necessary
-      if (cliFunctionResult.isSuccessful()) {
-        normalMembers.removeAll(regionMembers);
-        if (!normalMembers.isEmpty()) {
-          indexInfo.setDefinedDestroyOnly(true);
-          rc = executeFunction(destroyIndexFunction, indexInfo, normalMembers);
-          accumulatedResults.addAll((List<CliFunctionResult>) rc.getResult());
-        }
-      } else {
-        // @todo Should dummy results be added to the accumulatedResults for the non-region
-        // members in the failed case
-      }
-    }
-    return xmlEntity;
-  }
-
   private Result getDestroyIndexResult(List<CliFunctionResult> cliFunctionResults, String indexName,
       String regionPath) {
     final TabularResultData tabularResult = ResultBuilder.createTabularResultData();
diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunction.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunction.java
index 0583b52..3271556 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunction.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunction.java
@@ -41,8 +41,35 @@ public class LuceneDestroyIndexFunction implements InternalFunction {
           ((LuceneServiceImpl) service).destroyDefinedIndexes(regionPath);
           result = new CliFunctionResult(memberId);
         } else {
-          service.destroyIndexes(regionPath);
-          result = new CliFunctionResult(memberId, getXmlEntity(indexName, regionPath));
+          // Destroy all created indexes
+          CliFunctionResult destroyIndexesResult = null;
+          Exception destroyIndexesException = null;
+          try {
+            service.destroyIndexes(regionPath);
+            destroyIndexesResult =
+                new CliFunctionResult(memberId, getXmlEntity(indexName, regionPath));
+          } catch (Exception e) {
+            destroyIndexesException = e;
+          }
+
+          // Destroy all defined indexes
+          CliFunctionResult destroyDefinedIndexesResult = null;
+          Exception destroyDefinedIndexesException = null;
+          try {
+            ((LuceneServiceImpl) service).destroyDefinedIndexes(regionPath);
+            destroyDefinedIndexesResult = new CliFunctionResult(memberId);
+          } catch (Exception e) {
+            destroyDefinedIndexesException = e;
+          }
+
+          // If there are two exceptions, throw one of them. Note: They should be the same 'No
+          // Lucene indexes were found' exception. Otherwise return the appropriate result.
+          if (destroyIndexesException != null && destroyDefinedIndexesException != null) {
+            throw destroyIndexesException;
+          } else {
+            result =
+                destroyIndexesResult == null ? destroyDefinedIndexesResult : destroyIndexesResult;
+          }
         }
       } else {
         if (indexInfo.isDefinedDestroyOnly()) {
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexDestroyDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexDestroyDUnitTest.java
index 83541a0..b0a27ea 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexDestroyDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneIndexDestroyDUnitTest.java
@@ -141,6 +141,43 @@ public class LuceneIndexDestroyDUnitTest extends LuceneDUnitTest {
   }
 
   @Test
+  @Parameters(method = "parametersForIndexDestroys")
+  public void verifyDestroySingleIndexWithDefinedIndexes(boolean destroyDataRegion,
+      RegionTestableType regionType) {
+    // Create index in both members
+    dataStore1.invoke(createIndex());
+    dataStore2.invoke(createIndex());
+
+    // Verify index defined
+    dataStore1.invoke(() -> verifyDefinedIndexCreated());
+    dataStore2.invoke(() -> verifyDefinedIndexCreated());
+
+    // Create region in one member
+    dataStore1.invoke(() -> initDataStore(regionType));
+
+    // Verify index created in one member and defined in the other
+    dataStore1.invoke(() -> verifyIndexCreated());
+    dataStore2.invoke(() -> verifyDefinedIndexCreated());
+
+    // Attempt to destroy data region (should fail)
+    if (destroyDataRegion) {
+      dataStore1.invoke(() -> destroyDataRegion(false, INDEX_NAME));
+    }
+
+    // Destroy index (only needs to be done on one member)
+    dataStore1.invoke(() -> destroyIndex());
+
+    // Verify index destroyed in one member and defined index destroyed in the other
+    dataStore1.invoke(() -> verifyIndexDestroyed());
+    dataStore2.invoke(() -> verifyDefinedIndexDestroyed());
+
+    // Attempt to destroy data region (should succeed)
+    if (destroyDataRegion) {
+      dataStore1.invoke(() -> destroyDataRegion(true));
+    }
+  }
+
+  @Test
   @Parameters(method = "getListOfRegionTestTypes")
   public void verifyDestroySingleIndexWhileDoingPuts(RegionTestableType regionType)
       throws Exception {
@@ -517,12 +554,20 @@ public class LuceneIndexDestroyDUnitTest extends LuceneDUnitTest {
     assertNotNull(luceneService.getIndex(INDEX2_NAME, REGION_NAME));
   }
 
+  private void verifyDefinedIndexCreated() {
+    verifyDefinedIndexCreated(INDEX_NAME, REGION_NAME);
+  }
+
   private void verifyDefinedIndexCreated(String indexName, String regionName) {
     LuceneServiceImpl luceneService = (LuceneServiceImpl) LuceneServiceProvider.get(getCache());
     assertNotNull(luceneService.getDefinedIndex(indexName, regionName));
     assertEquals(1, getCache().getRegionListeners().size());
   }
 
+  private void verifyDefinedIndexDestroyed() {
+    verifyDefinedIndexDestroyed(INDEX_NAME, REGION_NAME);
+  }
+
   private void verifyDefinedIndexDestroyed(String indexName, String regionName) {
     LuceneServiceImpl luceneService = (LuceneServiceImpl) LuceneServiceProvider.get(getCache());
     assertNull(luceneService.getDefinedIndex(indexName, regionName));
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/DestroyLuceneIndexCommandsDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/DestroyLuceneIndexCommandsDUnitTest.java
new file mode 100644
index 0000000..4380c26
--- /dev/null
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/DestroyLuceneIndexCommandsDUnitTest.java
@@ -0,0 +1,407 @@
+/*
+ * 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.cache.lucene.internal.cli;
+
+import static org.apache.geode.cache.lucene.test.LuceneTestUtilities.INDEX_NAME;
+import static org.apache.geode.cache.lucene.test.LuceneTestUtilities.REGION_NAME;
+import static org.apache.geode.distributed.ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.spy;
+
+import java.io.Serializable;
+import java.util.Properties;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import junitparams.JUnitParamsRunner;
+import junitparams.Parameters;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.mockito.stubbing.Answer;
+
+import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.cache.lucene.LuceneService;
+import org.apache.geode.cache.lucene.LuceneServiceProvider;
+import org.apache.geode.cache.lucene.internal.LuceneServiceImpl;
+import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.test.dunit.AsyncInvocation;
+import org.apache.geode.test.dunit.rules.ClusterStartupRule;
+import org.apache.geode.test.dunit.rules.MemberVM;
+import org.apache.geode.test.junit.assertions.CommandResultAssert;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.categories.LuceneTest;
+import org.apache.geode.test.junit.rules.GfshCommandRule;
+
+@Category({DistributedTest.class, LuceneTest.class})
+@RunWith(JUnitParamsRunner.class)
+public class DestroyLuceneIndexCommandsDUnitTest implements Serializable {
+
+  @Rule
+  public transient GfshCommandRule gfsh = new GfshCommandRule();
+
+  @Rule
+  public ClusterStartupRule cluster = new ClusterStartupRule();
+
+  private MemberVM locator;
+
+  private MemberVM server1;
+
+  private MemberVM server2;
+
+  private static CountDownLatch indexCreationInProgress;
+
+  private static CountDownLatch indexDestroyComplete;
+
+  @Before
+  public void before() throws Exception {
+    Properties props = new Properties();
+    props.setProperty(SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.lucene.internal.cli.DestroyLuceneIndexCommandsDUnitTest");
+    locator = cluster.startLocatorVM(0, props);
+    server1 = cluster.startServerVM(1, props, locator.getPort());
+    server2 = cluster.startServerVM(2, props, locator.getPort());
+    gfsh.connectAndVerify(locator);
+  }
+
+  @Test
+  @Parameters({"true", "false"})
+  public void testDestroyIndex(boolean createRegion) throws Exception {
+    // Create index and region if necessary
+    server1.invoke(() -> createIndex(1));
+    server2.invoke(() -> createIndex(1));
+    if (createRegion) {
+      server1.invoke(() -> createRegion());
+      server2.invoke(() -> createRegion());
+    }
+
+    // Execute command to destroy index
+    CommandResultAssert commandResultAssert =
+        gfsh.executeAndAssertThat("destroy lucene index --name=index0 --region=region");
+
+    // Assert command was successful and contains the correct rows and output
+    String expectedStatus = CliStrings.format(
+        LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEX_0_FROM_REGION_1,
+        new Object[] {"index0", "/region"});
+    validateCommandResult(commandResultAssert, expectedStatus);
+
+    // Verify defined and created indexes are empty in both members
+    server1.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+    server2.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+  }
+
+  @Test
+  public void testDestroyIndexWithRegionInOneMember() throws Exception {
+    // Create index in both members
+    server1.invoke(() -> createIndex(1));
+    server2.invoke(() -> createIndex(1));
+
+    // Create region in one member
+    server1.invoke(() -> createRegion());
+
+    // Execute command to destroy index
+    CommandResultAssert commandResultAssert =
+        gfsh.executeAndAssertThat("destroy lucene index --name=index0 --region=region");
+
+    // Assert command was successful and contains the correct rows and output
+    String expectedStatus = CliStrings.format(
+        LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEX_0_FROM_REGION_1,
+        new Object[] {"index0", "/region"});
+    validateCommandResult(commandResultAssert, expectedStatus);
+
+    // Verify defined and created indexes are empty in both members
+    server1.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+    server2.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+  }
+
+  @Test
+  public void testDestroyNonExistentIndex() throws Exception {
+    // Execute command to destroy index
+    CommandResultAssert commandResultAssert =
+        gfsh.executeAndAssertThat("destroy lucene index --name=index0 --region=region");
+
+    // Assert command was successful and contains the correct rows and output
+    String expectedStatus = LocalizedStrings.LuceneService_INDEX_0_NOT_FOUND_IN_REGION_1
+        .toLocalizedString("index0", "/region");
+    validateCommandResult(commandResultAssert, expectedStatus);
+
+    // Verify defined and created indexes are empty in both members
+    server1.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+    server2.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+  }
+
+  @Test
+  public void testDestroyIndexWithRegionCreationInProgress() throws Exception {
+    server1.invoke(() -> initializeCountDownLatches());
+    server2.invoke(() -> initializeCountDownLatches());
+
+    server1.invoke(() -> createIndexesOnSpy(1));
+    server2.invoke(() -> createIndexesOnSpy(1));
+
+    // Asynchronously create region. This will cause the invokeBeforeAfterDataRegionCreated Answer
+    // to be invoked which will wait for the index to be destroyed before invoking the real
+    // afterDataRegionCreated method and completing region creation. The registerIndex method will
+    // realize the defined index has been destroyed and destroy the real one.
+    AsyncInvocation server1RegionCreationInvocation = server1.invokeAsync(() -> createRegion());
+    AsyncInvocation server2RegionCreationInvocation = server2.invokeAsync(() -> createRegion());
+
+    // Wait for index creation to be in progress
+    server1.invoke(() -> waitForIndexCreationInProgress());
+    server2.invoke(() -> waitForIndexCreationInProgress());
+
+    // Execute command to destroy index
+    CommandResultAssert commandResultAssert =
+        gfsh.executeAndAssertThat("destroy lucene index --name=index0 --region=region");
+
+    // Assert command was successful and contains the correct rows and output
+    String expectedStatus = CliStrings.format(
+        LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEX_0_FROM_REGION_1,
+        new Object[] {"index0", "/region"});
+    validateCommandResult(commandResultAssert, expectedStatus);
+
+    // Notify region creation to continue creating the region
+    server1.invoke(() -> notifyIndexDestroyComplete());
+    server2.invoke(() -> notifyIndexDestroyComplete());
+
+    server1RegionCreationInvocation.await(30, TimeUnit.SECONDS);
+    server2RegionCreationInvocation.await(30, TimeUnit.SECONDS);
+
+    // Verify defined and created indexes are empty in both members
+    server1.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+    server2.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+  }
+
+  @Test
+  @Parameters({"true", "false"})
+  public void testDestroyIndexesWithOneIndex(boolean createRegion) throws Exception {
+    // Create index and region if necessary
+    server1.invoke(() -> createIndex(1));
+    server2.invoke(() -> createIndex(1));
+    if (createRegion) {
+      server1.invoke(() -> createRegion());
+      server2.invoke(() -> createRegion());
+    }
+
+    // Execute command to destroy indexes
+    CommandResultAssert commandResultAssert =
+        gfsh.executeAndAssertThat("destroy lucene index --region=region");
+
+    // Assert command was successful and contains the correct rows and output
+    String expectedStatus = CliStrings.format(
+        LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEXES_FROM_REGION_0,
+        new Object[] {"/region"});
+    validateCommandResult(commandResultAssert, expectedStatus);
+
+    // Verify defined and created indexes are empty in both members
+    server1.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+    server2.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+  }
+
+  @Test
+  public void testDestroyIndexesWithOneIndexAndRegionInOneMember() throws Exception {
+    // Create index in both members
+    server1.invoke(() -> createIndex(1));
+    server2.invoke(() -> createIndex(1));
+
+    // Create region in one member
+    server1.invoke(() -> createRegion());
+
+    // Execute command to destroy indexes
+    CommandResultAssert commandResultAssert =
+        gfsh.executeAndAssertThat("destroy lucene index --region=region");
+
+    // Assert command was successful and contains the correct rows and output
+    String expectedStatus = CliStrings.format(
+        LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEXES_FROM_REGION_0,
+        new Object[] {"/region"});
+    validateCommandResult(commandResultAssert, expectedStatus);
+
+    // Verify defined and created indexes are empty in both members
+    server1.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+    server2.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+  }
+
+  @Test
+  @Parameters({"true", "false"})
+  public void testDestroyIndexesWithTwoIndexes(boolean createRegion) throws Exception {
+    // Create index and region if necessary
+    server1.invoke(() -> createIndex(2));
+    server2.invoke(() -> createIndex(2));
+    if (createRegion) {
+      server1.invoke(() -> createRegion());
+      server2.invoke(() -> createRegion());
+    }
+
+    // Execute command to destroy indexes
+    CommandResultAssert commandResultAssert =
+        gfsh.executeAndAssertThat("destroy lucene index --region=region");
+
+    // Assert command was successful and contains the correct rows and output
+    String expectedStatus = CliStrings.format(
+        LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEXES_FROM_REGION_0,
+        new Object[] {"/region"});
+    validateCommandResult(commandResultAssert, expectedStatus);
+
+    // Verify defined and created indexes are empty in both members
+    server1.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+    server2.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+  }
+
+  @Test
+  public void testDestroyIndexesWithTwoIndexesAndRegionInOneMember() throws Exception {
+    // Create index in both members
+    server1.invoke(() -> createIndex(2));
+    server2.invoke(() -> createIndex(2));
+
+    // Create region in one member
+    server1.invoke(() -> createRegion());
+
+    // Execute command to destroy indexes
+    CommandResultAssert commandResultAssert =
+        gfsh.executeAndAssertThat("destroy lucene index --region=region");
+
+    // Assert command was successful and contains the correct rows and output
+    String expectedStatus = CliStrings.format(
+        LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEXES_FROM_REGION_0,
+        new Object[] {"/region"});
+    validateCommandResult(commandResultAssert, expectedStatus);
+
+    // Verify defined and created indexes are empty in both members
+    server1.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+    server2.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+  }
+
+  @Test
+  public void testDestroyNonExistentIndexes() throws Exception {
+    // Execute command to destroy indexes
+    CommandResultAssert commandResultAssert =
+        gfsh.executeAndAssertThat("destroy lucene index --region=region");
+
+    // Assert command was successful and contains the correct rows and output
+    String expectedStatus = LocalizedStrings.LuceneService_NO_INDEXES_WERE_FOUND_IN_REGION_0
+        .toLocalizedString("/region");
+    validateCommandResult(commandResultAssert, expectedStatus);
+
+    // Verify defined and created indexes are empty in both members
+    server1.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+    server2.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+  }
+
+  @Test
+  public void testDestroyIndexesWithRegionCreationInProgress() throws Exception {
+    server1.invoke(() -> initializeCountDownLatches());
+    server2.invoke(() -> initializeCountDownLatches());
+
+    server1.invoke(() -> createIndexesOnSpy(2));
+    server2.invoke(() -> createIndexesOnSpy(2));
+
+    // Asynchronously create region. This will cause the invokeBeforeAfterDataRegionCreated Answer
+    // to be invoked which will wait for the indexes to be destroyed before invoking the real
+    // afterDataRegionCreated method and completing region creation. The registerIndex method will
+    // realize the defined index has been destroyed and destroy the real one.
+    AsyncInvocation server1RegionCreationInvocation = server1.invokeAsync(() -> createRegion());
+    AsyncInvocation server2RegionCreationInvocation = server2.invokeAsync(() -> createRegion());
+
+    // Wait for index creation to be in progress
+    server1.invoke(() -> waitForIndexCreationInProgress());
+    server2.invoke(() -> waitForIndexCreationInProgress());
+
+    // Execute command to destroy index
+    CommandResultAssert commandResultAssert =
+        gfsh.executeAndAssertThat("destroy lucene index --region=region");
+
+    // Assert command was successful and contains the correct rows and output
+    String expectedStatus = CliStrings.format(
+        LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEXES_FROM_REGION_0,
+        new Object[] {"/region"});
+    validateCommandResult(commandResultAssert, expectedStatus);
+
+    // Notify region creation to continue creating the region
+    server1.invoke(() -> notifyIndexDestroyComplete());
+    server2.invoke(() -> notifyIndexDestroyComplete());
+
+    server1RegionCreationInvocation.await(30, TimeUnit.SECONDS);
+    server2RegionCreationInvocation.await(30, TimeUnit.SECONDS);
+
+    // Verify defined and created indexes are empty in both members
+    server1.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+    server2.invoke(() -> verifyDefinedAndCreatedIndexSizes(0, 0));
+  }
+
+  private void validateCommandResult(CommandResultAssert commandResultAssert,
+      String expectedStatus) {
+    commandResultAssert.statusIsSuccess();
+    commandResultAssert.tableHasRowCount("Member", 2);
+    commandResultAssert.tableHasColumnOnlyWithValues("Status", expectedStatus);
+  }
+
+  private void verifyDefinedAndCreatedIndexSizes(int definedIndexesSize, int createdIndexesSize) {
+    LuceneServiceImpl luceneService =
+        (LuceneServiceImpl) LuceneServiceProvider.get(ClusterStartupRule.getCache());
+    assertThat(luceneService.getIndexes(REGION_NAME)).isEmpty();
+    assertThat(luceneService.getDefinedIndexes(REGION_NAME)).isEmpty();
+  }
+
+  private void createIndex(int numIndexes) {
+    LuceneService luceneService = LuceneServiceProvider.get(ClusterStartupRule.getCache());
+    for (int i = 0; i < numIndexes; i++) {
+      luceneService.createIndexFactory().setFields("text" + i).create(INDEX_NAME + i, REGION_NAME);
+    }
+  }
+
+  private void createRegion() {
+    ClusterStartupRule.getCache().createRegionFactory(RegionShortcut.PARTITION).create(REGION_NAME);
+  }
+
+  private void initializeCountDownLatches() {
+    indexCreationInProgress = new CountDownLatch(1);
+    indexDestroyComplete = new CountDownLatch(1);
+  }
+
+  private void createIndexesOnSpy(int numIndexes) {
+    LuceneServiceImpl luceneServiceSpy =
+        (LuceneServiceImpl) spy(LuceneServiceProvider.get(ClusterStartupRule.getCache()));
+    for (int i = 0; i < numIndexes; i++) {
+      luceneServiceSpy.createIndexFactory().setFields("text" + i).create(INDEX_NAME + i,
+          REGION_NAME);
+    }
+
+    Answer invokeBeforeAfterDataRegionCreated = invocation -> {
+      // Confirm index creation is in progress
+      indexCreationInProgress.countDown();
+
+      // Wait for destroy index invocation to complete
+      indexDestroyComplete.await();
+
+      return invocation.callRealMethod();
+    };
+
+    doAnswer(invokeBeforeAfterDataRegionCreated).when(luceneServiceSpy)
+        .afterDataRegionCreated(any());
+  }
+
+  private void waitForIndexCreationInProgress() throws Exception {
+    indexCreationInProgress.await();
+  }
+
+  private void notifyIndexDestroyComplete() throws Exception {
+    indexDestroyComplete.countDown();
+  }
+}
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsDUnitTest.java
index bded765..1242f1f 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsDUnitTest.java
@@ -643,12 +643,20 @@ public class LuceneIndexCommandsDUnitTest implements Serializable {
       createIndexWithoutRegion();
     }
 
+    // Verify destroy all indexes is successful
     String expectedOutput = CliStrings.format(
         LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEXES_FROM_REGION_0,
         new Object[] {"/region"});
 
     gfsh.executeAndAssertThat("destroy lucene index --region=region").statusIsSuccess()
         .containsOutput(expectedOutput);
+
+    // Verify destroy all indexes again reports no indexes exist
+    expectedOutput = LocalizedStrings.LuceneService_NO_INDEXES_WERE_FOUND_IN_REGION_0
+        .toLocalizedString(new Object[] {"/region"});
+
+    gfsh.executeAndAssertThat("destroy lucene index --region=region").statusIsSuccess()
+        .containsOutput(expectedOutput);
   }
 
   @Test
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 9f6bdc0..46a7e5e 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
@@ -14,6 +14,8 @@
  */
 package org.apache.geode.cache.lucene.internal.cli;
 
+import static org.apache.commons.lang.SystemUtils.LINE_SEPARATOR;
+import static org.apache.geode.management.internal.cli.result.ResultData.TYPE_TABULAR;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.isA;
 import static org.mockito.Mockito.any;
@@ -59,6 +61,7 @@ import org.apache.geode.cache.lucene.internal.cli.functions.LuceneListIndexFunct
 import org.apache.geode.cache.lucene.internal.repository.serializer.HeterogeneousLuceneSerializer;
 import org.apache.geode.cache.lucene.internal.repository.serializer.PrimitiveSerializer;
 import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.Version;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.execute.AbstractExecution;
 import org.apache.geode.internal.security.SecurityService;
@@ -427,34 +430,15 @@ public class LuceneIndexCommandsJUnitTest {
   }
 
   @Test
-  @Parameters({"true", "false"})
-  public void testDestroySingleIndexNoRegionMembers(boolean expectedToSucceed) throws Exception {
+  public void testDestroySingleIndexNoRegionMembers() throws Exception {
     LuceneIndexCommands commands = createTestLuceneIndexCommandsForDestroyIndex();
-    String indexName = "index";
-    String regionPath = "regionPath";
-
-    final ResultCollector mockResultCollector = mock(ResultCollector.class);
     final List<CliFunctionResult> cliFunctionResults = new ArrayList<>();
-    String expectedStatus;
-    if (expectedToSucceed) {
-      expectedStatus = CliStrings.format(
-          LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEX_0_FROM_REGION_1,
-          new Object[] {indexName, regionPath});
-      cliFunctionResults.add(new CliFunctionResult("member0"));
-    } else {
-      Exception e = new IllegalStateException("failed");
-      expectedStatus = e.getMessage();
-      cliFunctionResults.add(new CliFunctionResult("member0", e, e.getMessage()));
-    }
-
-    doReturn(mockResultCollector).when(commands).executeFunction(
-        isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any(Set.class));
-    doReturn(cliFunctionResults).when(mockResultCollector).getResult();
-
-    doReturn(Collections.emptySet()).when(commands).getAllNormalMembers();
-    doReturn(Collections.emptySet()).when(commands).findMembersForRegion(any());
-
-    CommandResult result = (CommandResult) commands.destroyIndex(indexName, regionPath);
+    String expectedStatus = CliStrings.format(
+        LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__COULD_NOT_FIND__MEMBERS_GREATER_THAN_VERSION_0,
+        new Object[] {Version.GEODE_160}) + LINE_SEPARATOR;
+    cliFunctionResults.add(new CliFunctionResult("member0"));
+    doReturn(Collections.emptySet()).when(commands).getNormalMembersWithSameOrNewerVersion(any());
+    CommandResult result = (CommandResult) commands.destroyIndex("index", "regionPath");
     verifyDestroyIndexCommandResult(result, cliFunctionResults, expectedStatus);
   }
 
@@ -488,42 +472,22 @@ public class LuceneIndexCommandsJUnitTest {
         isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any(Set.class));
     doReturn(cliFunctionResults).when(mockResultCollector).getResult();
 
-    doReturn(members).when(commands).getAllNormalMembers();
-    doReturn(members).when(commands).findMembersForRegion(any());
+    doReturn(members).when(commands).getNormalMembersWithSameOrNewerVersion(any());
 
     CommandResult result = (CommandResult) commands.destroyIndex(indexName, regionPath);
     verifyDestroyIndexCommandResult(result, cliFunctionResults, expectedStatus);
   }
 
   @Test
-  @Parameters({"true", "false"})
-  public void testDestroyAllIndexesNoRegionMembers(boolean expectedToSucceed) throws Exception {
+  public void testDestroyAllIndexesNoRegionMembers() throws Exception {
     LuceneIndexCommands commands = createTestLuceneIndexCommandsForDestroyIndex();
-    String indexName = null;
-    String regionPath = "regionPath";
-
-    final ResultCollector mockResultCollector = mock(ResultCollector.class);
+    doReturn(Collections.emptySet()).when(commands).getNormalMembersWithSameOrNewerVersion(any());
     final List<CliFunctionResult> cliFunctionResults = new ArrayList<>();
-    String expectedStatus;
-    if (expectedToSucceed) {
-      expectedStatus = CliStrings.format(
-          LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__SUCCESSFULLY_DESTROYED_INDEXES_FROM_REGION_0,
-          new Object[] {regionPath});
-      cliFunctionResults.add(new CliFunctionResult("member0"));
-    } else {
-      Exception e = new IllegalStateException("failed");
-      expectedStatus = e.getMessage();
-      cliFunctionResults.add(new CliFunctionResult("member0", e, e.getMessage()));
-    }
-
-    doReturn(mockResultCollector).when(commands).executeFunction(
-        isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any(Set.class));
-    doReturn(cliFunctionResults).when(mockResultCollector).getResult();
-
-    doReturn(Collections.emptySet()).when(commands).getAllNormalMembers();
-    doReturn(Collections.emptySet()).when(commands).findMembersForRegion(any());
-
-    CommandResult result = (CommandResult) commands.destroyIndex(indexName, regionPath);
+    String expectedStatus = CliStrings.format(
+        LuceneCliStrings.LUCENE_DESTROY_INDEX__MSG__COULD_NOT_FIND__MEMBERS_GREATER_THAN_VERSION_0,
+        new Object[] {Version.GEODE_160}) + LINE_SEPARATOR;
+    cliFunctionResults.add(new CliFunctionResult("member0"));
+    CommandResult result = (CommandResult) commands.destroyIndex(null, "regionPath");
     verifyDestroyIndexCommandResult(result, cliFunctionResults, expectedStatus);
   }
 
@@ -557,8 +521,7 @@ public class LuceneIndexCommandsJUnitTest {
         isA(LuceneDestroyIndexFunction.class), any(LuceneDestroyIndexInfo.class), any(Set.class));
     doReturn(cliFunctionResults).when(mockResultCollector).getResult();
 
-    doReturn(Collections.emptySet()).when(commands).getAllNormalMembers();
-    doReturn(Collections.emptySet()).when(commands).findMembersForRegion(any());
+    doReturn(members).when(commands).getNormalMembersWithSameOrNewerVersion(any());
 
     CommandResult result = (CommandResult) commands.destroyIndex(indexName, regionPath);
     verifyDestroyIndexCommandResult(result, cliFunctionResults, expectedStatus);
@@ -580,17 +543,22 @@ public class LuceneIndexCommandsJUnitTest {
   private void verifyDestroyIndexCommandResult(CommandResult result,
       List<CliFunctionResult> cliFunctionResults, String expectedStatus) {
     assertEquals(Status.OK, result.getStatus());
-    TabularResultData data = (TabularResultData) result.getResultData();
-    List<String> members = data.retrieveAllValues("Member");
-    assertEquals(cliFunctionResults.size(), members.size());
-    // Verify each member
-    for (int i = 0; i < members.size(); i++) {
-      assertEquals("member" + i, members.get(i));
-    }
-    // Verify each status
-    List<String> status = data.retrieveAllValues("Status");
-    for (String statu : status) {
-      assertEquals(expectedStatus, statu);
+    if (result.getType().equals(TYPE_TABULAR)) {
+      TabularResultData data = (TabularResultData) result.getResultData();
+      List<String> members = data.retrieveAllValues("Member");
+      assertEquals(cliFunctionResults.size(), members.size());
+      // Verify each member
+      for (int i = 0; i < members.size(); i++) {
+        assertEquals("member" + i, members.get(i));
+      }
+      // Verify each status
+      List<String> status = data.retrieveAllValues("Status");
+      for (String statu : status) {
+        assertEquals(expectedStatus, statu);
+      }
+    } else {
+      // Info result. Verify next lines are equal.
+      assertEquals(result.nextLine(), expectedStatus);
     }
   }
 
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunctionJUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunctionJUnitTest.java
index 6b083f4..3928ee5 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunctionJUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunctionJUnitTest.java
@@ -134,8 +134,8 @@ public class LuceneDestroyIndexFunctionJUnitTest {
     function = spy(function);
     function.execute(this.context);
     verify(this.service).destroyIndexes(eq(regionPath));
+    verify(this.service).destroyDefinedIndexes(eq(regionPath));
     verify(function).getXmlEntity(eq(null), eq(regionPath));
-    verify(this.service, never()).destroyDefinedIndexes(eq(regionPath));
     verify(this.service, never()).destroyIndex(any(), eq(regionPath));
     verifyFunctionResult(true);
   }
@@ -148,6 +148,7 @@ public class LuceneDestroyIndexFunctionJUnitTest {
     when(this.context.getArguments()).thenReturn(indexInfo);
     LuceneDestroyIndexFunction function = new LuceneDestroyIndexFunction();
     doThrow(new IllegalStateException()).when(this.service).destroyIndexes(eq(regionPath));
+    doThrow(new IllegalStateException()).when(this.service).destroyDefinedIndexes(eq(regionPath));
     function.execute(this.context);
     verifyFunctionResult(false);
   }

-- 
To stop receiving notification emails like this one, please contact
boglesby@apache.org.