You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by zh...@apache.org on 2019/06/05 17:39:22 UTC

[geode] branch feature/GEODE-6770 updated (463f37a -> 98d37be)

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

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


 discard 463f37a  GEODE-6770: add optional deregister driver class when destroy data source.
     add 0a6fa58  GEODE-6745 Adds properties to REST api v2 list members (#3619)
     add a109bcb  GEODE-6793: jackson mapper should fail on unrecognized attributes. (#3618)
     add d916506  GEODE-6791: Remove wrong file from repo
     add 59003e6  GEODE-6750: Clean up Swagger UI model for Manageability REST API (#3563)
     add 350e6d2  GEODE-6790: Refactor DataSourceCreateException to correctly capture cause (#3615)
     add 5ee7a2e  GEODE-6745 Added unit test coverage for MemberConfigManager and refactored (#3620)
     add 68dc56c  GEODE-6803: Make CacheElement an interface and have RuntimeCacheElemeā€¦ (#3625)
     add 965ef8e  GEODE-6754: Cleanup LocalRegion warnings, typos, and bug refs (#3580)
     add 02af174  Update docs build to go with bookbinder 10.1.15
     add 6ca8d5c  GEODE-6733 un-ignore test now that static has been removed
     add 7218802  GEODE-6733 remove unused import and make spotless happay
     add d3ed413  Preparing for 1.9.0 release
     add 263dc3d  GEODE-6533: Update NOTICE for updated Spring deps
     add 2065819  GEODE-6533: Add NOTICE entry for commons-codec
     add a54f893  GEODE-5604: Fix over-zealous fix for adding NOTICE to jar manifest (#3365)
     add b442a27  GEODE-6533: Update LICENSE file for changed dependencies (#3313)
     add d9981e5  add a daily trigger to generate additional test runs for soak
     add 3ec4659  GEODE-6569: geode-all-bom shouldn't make a jar
     add 41cd486  GEODE-6570 processing of cached join request delays view installation
     add 85e1362  GEODE-6559: PdxInstance.getObject() is using class from older jar in case of Reconnect (#3353)
     add 75ac498  GEODE-6589: Parameterize gradle project group for use in GradleBuildWithGeodeCoreAcceptanceTest (#3395)
     add 4a86807  Fix geoge-book redirect url for 1.9.0
     add 5d2b8d9  GEODE-3948 fixing handling of sotimeout in Message.receive()
     add 6b05cae  Ignore GrgitException when building from src dist
     add e0c29b1  GEODE-6195 putIfAbsent may get a returned value caused by the same operation due to retry
     add ed13a72  GEODE-6664 CI failure: org.apache.geode.ClusterCommunicationsDUnitTest.receiveBigResponse
     add 097353f  GEODE-6662 NioPlainEngine.ensureWrappedCapacity
     add 0fea07a  GEODE-6423 availability checks sometimes immediately initiate removal
     add 3601d83  Fixes CI benchmark baseline selection.
     add 40ebccd  adding my PGP block as instructed in release steps
     add 7d7f8f1  GEODE-6630: move allBucketsRecoveredFromDisk count down latch (#3477)
     add 8e92509  Use branch of benchmarks targeted for release/1.9.0.
     add b912ac7  Fixes benchmarks branch
     add bf4ee80  adding my GPG key as per release instructions
     add c0a73d1  bump the geode version in the Dockerfile
     add 2dd9dc5  update the release SHA256 in the Dockerfile
     add 31e6612  Updated release versions to 1.7.0 for release preparation
     add 0936c9f  Revert "Adding 1.8 as a version in Version.java"
     add bbc9bac  Changing all the version numbers from 1.8.0 to 1.7.0
     add 9175e34  Changing all Version.GEODE_180 to Version_170
     add fb0ee09  Revert "[GEODE-5591] If there is a BindException we should always throw. (#2351)"
     add ab7e6e7  Disabling the the Windows test pipeline
     add d07244df GEODE-5695: Update Gemfile.lock to Sprockets 3.7.2
     add 1d261c5  Remove windows tests from concourse (#2436)
     add db56584  Fix instance naming for heavy-lifters on release branches (#2437)
     add 94b5c15  GCP instances cannot have dots in the name (#2439)
     add 00f68ba  GCP instances dont like underscores either? Using hyphen (#2440)
     add 1da670c  Changing the pre version to 1.6.0 from 1.7.0 in TxCommitMessageTest
     add 4185fe8  Changed the version number of JARs
     add c637193  GEODE-5723: Don't publish to maven repo unless SNAPSHOT. (#2453)
     add c3494e0  GEODE-5727: rework how ResultModel deal with file contents. (#2460)
     add f9abdeb  Revert two GEODE-5600 commits
     add 38dd001  Revert "GEODE-3967: There're following 9 problems fixed here:"
     add dd78494  GEODE-3967: Cleaning up of revert issues (#2523)
     add 48061cd  Force inclusion of all ci/** files to work around exclude name collision (#2528)
     add f3d691f  Update version numbers for 1.8.0 release
     add 62d95cd  GEODE-6018 Remove reflections from LICENSE
     add 4192d05  GEODE-6048 build should work on release branches (#2847)
     add 70902b0  Revert "GEODE-5729: when DistributedCacheOperation needs 2 messages, should let (#2458)" (#2801)
     add 411ff86  GEODE-5993: Eliminate race in monitorQueryThread() (#2818)
     add e54e33d  GEODE-5884: Added new command and restored pre 1.8 region function behavior (#2829)
     add 35f7a43  GEODE-5884: Adding to function exception list if cause is FunctionInvocationTargetException (#2809)
     add b0e3c3c  GEODE-6053: Parameterized Queries fixed (#2859)
     add 933c4fb  GEODE-6063 remove PublishArtifacts from Geode release pipelines (#2865)
     add 671671b  GEODE-6065: Continue event processing when hostname lookup fails (#2883)
     add 14bfde0  Merge branch 'release/1.8.0'
     add 7a285c9  Merge branch release/1.9.0 into master
     add c1d33d7  Merge remote-tracking branch 'origin/master' into develop
     add 9dba005  Merge pull request #3626 from rhoughton-pivot/develop
     add a08902a  GEODE-6669 Changed CreateDataSourceCommand to register driver earlier (#3627)
     add ce10ede  GEODE-6786: Provide ability to delete a region using V2 REST API (#3610)
     add 8bc775e  GEODE-6815 Adds member count to gfsh list members (#3637)
     add 70b1556  GEODE-6732 GMSHealthMonitor reports member is not available when self-health check fails
     add b8fc62f  Revert "GEODE-6803: Make CacheElement an interface and have RuntimeCacheElemeā€¦ (#3625)"
     add b2928c9  GEODE-6583 Integrate phi-accrual failure detection into Geode
     add 23fdac1  GEODE-6809 Document the gfsh destroy gateway-receiver command (#3635)
     add fb07bab  GEODE-6813: Build pipeline emits passing ref and build artifact (#3644)
     add ee42d7f  GEODE-6571 Remove unneccessary list of region shortcuts (#3642)
     add 1680b2b  GEODE-4240: Fixup DeprecatedCacheServerLauncherIntegrationTest (#3645)
     add 47e44ff  GEODE-6765: Gfsh list* commands do not return error when no results found (#3634)
     add 1463cb4  GEODE-6794: optimize returning client pooled coonection
     add fbe167b  GEODE-2600 Inconsistent spacing of headers in Startup Configuration log
     add ec08f36  Update windows image and tweaks to support it. (#3649)
     add c411f64  GEODE-6803: be able to configure pdx using management rest api (#3638)
     add b501843  GEODE-4240: Use ASSIGN_BUCKETS_PROPERTY in DeprecatedCacheServerLauncherIntegrationTest (#3648)
     add 327feec  GEODE-6696: EntryEvenImpl.offHeapLock created only if off-heap in use (#3581)
     add 0b3ff12  split Windows tests into Core and non-Core (#3647)
     add 30ddcbd  GEODE-6588: Cleanup static analyzer warnings and generics (#3646)
     add 7bfbf55  GEODE-6820: Initialize count down latches in setup method. (#3652)
     add cd2eae3  GEODE-6472 Fix double increment gets stat for partitioned region (#3640)
     add ef18e4d  GEODE-6823 Hang in ElderInitProcessor.init()
     add 9cdc63c   GEODE-4240: Fix testCreateBuckets on windows (#3660)
     add f38fef5  GEODE-6824: Copy backup files using file copy on Windows (#3658)
     add 7ce0f51  GEODE-6777: Create gateway senders command should only return when DistributedSystemMXBean reflects creation status (#3643)
     add 51733cd  GEODE-6821: Shared P2P reader no longer processes messages on regions with serial sender
     add fcefe67  GEODE-6588 removed raw arraylists, assigning them each a type (#3659)
     add 5afd611  GEODE-6806: Ignore LIMIT in intermediate steps (#3629)
     add f00fa83  GEODE-2685: support getStatistics on PartitionedRegion (#3576)
     add 02814f4  GEODE-6749 additional tests for duplicate disk store detection logic (#3666)
     add cea316f  use tagged commit as benchmark baseline
     add 9073f6e  GEODE-6321: The test is expecting shutdown took more than 4 seconds, (#3665)
     add a118f13  GEODE-6786: be able to delete cache element when no members are found. (#3663)
     add 9c97685  GEODE-6803: add AnalyzeSerializable test in geode-management module (#3651)
     add 1e6d2a5  GEODE-6773 Adding register driver, deregister driver and list drivers gfsh commands (#3657)
     new 98d37be  GEODE-6770: add optional deregister driver class when destroy data source.

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   (463f37a)
            \
             N -- N -- N   refs/heads/feature/GEODE-6770 (98d37be)

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:
 .../windows-packer.json                            |   25 +-
 ci/pipelines/geode-build/jinja.template.yml        |    9 +-
 ci/pipelines/shared/jinja.variables.yml            |   15 +-
 ci/scripts/execute_tests.sh                        |    3 +-
 ci/scripts/run_benchmarks.sh                       |    2 +-
 docker/Dockerfile                                  |    6 +-
 .../GradleBuildWithGeodeCoreAcceptanceTest.java    |    1 +
 .../rest/ListIndexManagementDUnitTest.java         |    4 +-
 .../rest/MemberManagementServiceDunitTest.java     |   14 +-
 .../rest/RegionManagementOnMultipleGroup.java      |   62 -
 .../integrationTest/resources/assembly_content.txt |    5 +-
 geode-book/Gemfile                                 |    2 +-
 geode-book/Gemfile.lock                            |   70 +-
 .../source/subnavs/geode-subnav.erb                |    3 +
 .../cli/CreateDataSourceCommandDUnitTest.java      |    6 +-
 .../cli/DeregisterDriverCommandDUnitTest.java      |   82 ++
 .../internal/cli/ListDriversCommandDUnitTest.java  |   97 ++
 .../cli/RegisterDriverCommandDUnitTest.java        |   86 ++
 .../jdbc/internal/cli/DeregisterDriverCommand.java |   88 ++
 .../internal/cli/DeregisterDriverFunction.java     |   52 +
 .../jdbc/internal/cli/ListDriversCommand.java      |  102 ++
 .../jdbc/internal/cli/ListDriversFunction.java     |   70 ++
 .../jdbc/internal/cli/RegisterDriverCommand.java   |   69 ++
 .../jdbc/internal/cli/RegisterDriverFunction.java  |   52 +
 .../org.springframework.shell.core.CommandMarker   |    5 +-
 .../sanctioned-geode-connectors-serializables.txt  |    5 +-
 .../internal/cli/DeregisterDriverCommandTest.java  |  144 +++
 .../internal/cli/DeregisterDriverFunctionTest.java |   66 +
 .../jdbc/internal/cli/ListDriversCommandTest.java  |  132 ++
 .../jdbc/internal/cli/ListDriversFunctionTest.java |   75 ++
 .../internal/cli/RegisterDriverCommandTest.java    |  104 ++
 .../internal/cli/RegisterDriverFunctionTest.java   |   69 ++
 .../CacheStatisticsPartitionedRegionDUnitTest.java |  505 ++++++++
 .../internal/cache/ClearTXLockingDUnitTest.java    |   15 +-
 .../sockets/DurableClientReconnectDUnitTest.java   |    4 +-
 ...ListenersDifferentPrimariesDistributedTest.java |  329 +++++
 .../LoggingWithReconnectDistributedTest.java       |    3 +-
 .../management/PartitionedRegionStatsTest.java     |   76 ++
 .../cli/commands/DiskStoreCommandsDUnitTest.java   |   42 +-
 .../ListAsyncEventQueuesCommandDUnitTest.java      |   12 +-
 .../cli/commands/ListMembersCommandDUnitTest.java  |    6 +-
 .../internal/cli/commands/ListRegionDUnitTest.java |    7 +
 .../cache/query/JoinQueriesIntegrationTest.java    |  361 +++++-
 .../IndexUsageInNestedQueryJUnitTest.java          |    2 +-
 .../AnalyzeManagementSerializablesJUnitTest.java   |   21 +-
 .../gms/fd/GMSHealthMonitorJUnitTest.java          |   45 +-
 ...edThreadPoolExecutorWithKeepAliveJUnitTest.java |   14 +-
 ...precatedCacheServerLauncherIntegrationTest.java |  537 ++++----
 .../geode/internal/cache/OplogRVVJUnitTest.java    |    6 +-
 .../tier/sockets/ConnectionProxyJUnitTest.java     |    2 +-
 ...StartupConfigurationLoggingIntegrationTest.java |    3 +-
 .../ShowMetricsCommandIntegrationTest.java         |    2 +-
 .../RegionConfigRealizerIntegrationTest.java       |   16 +
 .../main/java/org/apache/geode/SystemFailure.java  |   55 +-
 .../internal/DistributedSystemHealthMonitor.java   |    8 +-
 .../admin/internal/GemFireHealthEvaluator.java     |    8 +-
 .../apache/geode/admin/internal/LogCollator.java   |    6 +-
 .../geode/admin/internal/SystemMemberImpl.java     |    4 +-
 .../main/java/org/apache/geode/cache/Region.java   |    4 +-
 .../client/internal/pooling/PooledConnection.java  |    4 +-
 .../geode/cache/query/internal/MethodDispatch.java |    8 +-
 .../geode/cache/query/internal/QueryUtils.java     |    8 +-
 .../cache/query/internal/index/IndexManager.java   |    2 +-
 .../query/internal/index/PartitionedIndex.java     |    2 +-
 .../ConfigurationPersistenceService.java           |    1 -
 .../geode/distributed/DistributedSystem.java       |   20 +-
 .../internal/ClusterDistributionManager.java       |   29 +-
 .../distributed/internal/ClusterElderManager.java  |   27 +-
 .../distributed/internal/DistributionManager.java  |    2 +-
 .../distributed/internal/DistributionMessage.java  |   11 +-
 .../internal/InternalDistributedSystem.java        |  470 ++++---
 .../internal/locks/ElderInitProcessor.java         |   38 +-
 .../internal/locks/GrantorRequestProcessor.java    |   18 +-
 .../membership/gms/fd/GMSHealthMonitor.java        |   50 +-
 .../membership/gms/mgr/GMSMembershipManager.java   |    2 +-
 .../internal/ObjectInputStreamFilterWrapper.java   |    8 +
 .../geode/internal/admin/ClientStatsManager.java   |    8 +-
 .../geode/internal/cache/AbstractDiskRegion.java   |    2 +-
 .../geode/internal/cache/AbstractRegion.java       |  440 ++++---
 .../internal/cache/AbstractUpdateOperation.java    |    4 +-
 .../apache/geode/internal/cache/BucketRegion.java  |    4 +-
 .../geode/internal/cache/CacheServerLauncher.java  |    6 +-
 .../geode/internal/cache/DestroyOperation.java     |    4 +-
 .../internal/cache/DistributedCacheOperation.java  |    4 +-
 .../geode/internal/cache/EntryEventImpl.java       |   67 +-
 .../geode/internal/cache/GemFireCacheImpl.java     |  994 ++++++++-------
 ...ava~d2263ebc2... Create HasDiskRegion interface |   22 -
 .../geode/internal/cache/InternalRegion.java       |    4 +-
 .../apache/geode/internal/cache/LocalRegion.java   | 1277 +++++++++-----------
 .../org/apache/geode/internal/cache/Oplog.java     |    2 +-
 .../geode/internal/cache/PartitionedRegion.java    |   66 +-
 .../internal/cache/backup/BackupFileCopier.java    |   18 +-
 .../internal/cache/partitioned/DestroyMessage.java |    4 +-
 .../cache/partitioned/PartitionMessage.java        |    4 +-
 .../cache/partitioned/PutAllPRMessage.java         |    4 +-
 .../internal/cache/partitioned/PutMessage.java     |    4 +-
 .../cache/partitioned/RemoveAllPRMessage.java      |    4 +-
 .../cache/persistence/DiskRecoveryStore.java       |    2 +-
 .../internal/cache/xmlcache/CacheXmlParser.java    |    4 +-
 .../datasource/DataSourceCreateException.java      |   28 +-
 .../internal/datasource/DataSourceFactory.java     |    3 +
 .../apache/geode/internal/jndi/JNDIInvoker.java    |   34 +-
 .../geode/internal/logging/LoggingSession.java     |    2 +-
 .../DisconnectingOutOfOffHeapMemoryListener.java   |   22 +-
 .../apache/geode/internal/util/DriverJarUtil.java  |   47 +-
 .../internal/util/concurrent/FutureResult.java     |   50 +-
 .../apache/geode/management/cli/CliFunction.java   |    3 +
 .../apache/geode/management/cli/GfshCommand.java   |   33 +
 .../management/internal/CacheElementOperation.java |   16 +-
 .../api/LocatorClusterManagementService.java       |  214 +++-
 .../geode/management/internal/cli/CliUtil.java     |    2 +-
 .../cli/commands/CreateGatewaySenderCommand.java   |   41 +
 .../cli/commands/DestroyGatewaySenderCommand.java  |   22 +
 .../cli/commands/ListAsyncEventQueuesCommand.java  |    2 +-
 .../internal/cli/commands/ListClientCommand.java   |    4 +-
 .../internal/cli/commands/ListDeployedCommand.java |    2 +-
 .../cli/commands/ListDurableClientCQsCommand.java  |    4 +-
 .../internal/cli/commands/ListFunctionCommand.java |    2 +-
 .../internal/cli/commands/ListGatewayCommand.java  |    4 +-
 .../internal/cli/commands/ListMembersCommand.java  |    2 +-
 .../internal/cli/commands/ListRegionCommand.java   |    2 +-
 .../internal/cli/domain/MemberInformation.java     |    5 +-
 .../cli/functions/ListDurableCqNamesFunction.java  |    8 +-
 .../cli/functions/UpdateCacheFunction.java         |   19 +-
 .../geode/management/internal/cli/shell/Gfsh.java  |    6 +-
 .../mutators/ConfigurationManager.java             |    3 +-
 .../mutators/MemberConfigManager.java              |   86 +-
 .../configuration/mutators/PdxManager.java         |   30 +-
 .../mutators/RegionConfigManager.java              |    6 +-
 .../realizers/RegionConfigRealizer.java            |   17 +-
 .../validators/CacheElementValidator.java          |   40 +-
 .../validators/ConfigurationValidator.java         |    8 +-
 .../validators/RegionConfigValidator.java          |   23 +-
 .../sanctioned-geode-core-serializables.txt        |   35 +-
 .../sanctioned-geode-management-serializables.txt  |   38 +
 .../cache/configuration/RegionConfigTest.java      |    3 +-
 .../internal/ClusterElderManagerTest.java          |   41 +-
 .../internal/cache/AbstractRegionMapTest.java      |   42 +-
 .../cache/AbstractRegionMapTxApplyDestroyTest.java |    8 +-
 .../internal/cache/CacheOperationMessageTest.java  |    4 +-
 .../geode/internal/cache/EntryEventImplTest.java   |  270 +++++
 .../geode/internal/cache/LocalRegionTest.java      |   49 +
 .../cache/SearchLoadAndWriteProcessorTest.java     |    9 +
 .../cache/event/DistributedEventTrackerTest.java   |    8 +
 .../cache/partitioned/PutAllPRMessageTest.java     |   14 +
 .../cache/partitioned/RemoveAllPRMessageTest.java  |   14 +
 ...rallelGatewaySenderEventProcessorJUnitTest.java |   16 +
 .../geode/internal/net/NioPlainEngineTest.java     |    2 -
 ...nectingOutOfOffHeapMemoryListenerJUnitTest.java |    7 +-
 .../internal/api/ClusterManagementResultTest.java  |    4 +-
 .../api/LocatorClusterManagementServiceTest.java   |  168 ++-
 .../commands/CreateGatewaySenderCommandTest.java   |    1 +
 .../commands/DestroyGatewaySenderCommandTest.java  |    1 +
 .../cli/commands/ListAsyncEventQueuesTest.java     |    2 +-
 .../mutators/MemberConfigManagerTest.java          |  240 ++++
 .../realizers/RegionConfigRealizerTest.java        |    5 +-
 .../validators/CacheElementValidatorTest.java      |   38 +-
 .../validators/RegionConfigValidatorTest.java      |   46 +-
 .../query/cq/dunit/CqPerfUsingPoolDUnitTest.java   |    4 +-
 .../commands/DurableClientCommandsDUnitTest.java   |   12 +-
 .../cli/commands/ListClientCommandDUnitTest.java   |   39 +-
 .../security/ClientPostAuthorizationDUnitTest.java |    2 +-
 .../geode/security/FilterPostAuthorization.java    |    2 +-
 .../chapter_overview_regionshortcuts.html.md.erb   |   53 +-
 .../gfsh/command-pages/destroy.html.md.erb         |   32 +
 .../gfsh/gfsh_command_index.html.md.erb            |    2 +-
 .../tests/MemberStarterRuleAwaitDUnitTest.java     |    7 -
 .../dunit/cache/internal/JUnit4CacheTestCase.java  |   24 +
 .../apache/geode/test/dunit/rules/MemberVM.java    |    6 -
 .../geode/test/junit/rules/MemberStarterRule.java  |   12 +-
 .../assertions/ClusterManagementResultAssert.java  |   14 +-
 .../test/junit/assertions/CommandResultAssert.java |    4 +-
 .../apache/geode/test/process/ProcessWrapper.java  |  262 ++--
 .../apache/geode/cache/configuration/PdxType.java  |   30 +-
 .../cache/configuration/RegionAttributesType.java  |    8 +
 .../geode/cache/configuration/RegionConfig.java    |   31 +-
 .../management/api/ClusterManagementResult.java    |   11 +-
 .../management/api/ClusterManagementService.java   |    2 +-
 .../geode/management/api/RestfulEndpoint.java      |   14 +-
 .../management/configuration/MemberConfig.java     |  142 +--
 ...cheElement.java => MultiGroupCacheElement.java} |    8 +-
 .../management/configuration/RuntimeIndex.java     |    2 +-
 ...{MemberConfig.java => RuntimeMemberConfig.java} |   62 +-
 .../configuration/RuntimeRegionConfig.java         |    2 +-
 .../internal/ClientClusterManagementService.java   |   47 +-
 .../configuration/CacheElementJsonMappingTest.java |   15 +-
 .../cache/configuration/CacheElementTest.java      |    4 +-
 .../geode/cache/configuration/PdxTypeTest.java}    |   22 +-
 ...CreateDestroyGatewaySenderCommandDUnitTest.java |   14 +
 .../DestroyGatewaySenderCommandDUnitTest.java      |   39 +-
 .../wancommand/ListGatewaysCommandDUnitTest.java   |    2 +-
 .../cli/commands/AlterRegionCommandDUnitTest.java  |   12 +-
 .../cli/commands/CreateRegionCommandDUnitTest.java |   15 +-
 .../cli/commands/DescribeRegionDUnitTest.java      |    5 +-
 .../cache/wan/AckReaderThreadJUnitTest.java        |    5 +-
 .../internal/rest/BaseLocatorContextLoader.java    |   15 +-
 .../rest/LocatorLauncherContextLoader.java         |   48 +-
 .../internal/rest/LocatorWebContext.java           |    9 +
 ...Launcher.java => MockLocatorContextLoader.java} |   40 +-
 .../internal/rest/PlainLocatorContextLoader.java   |   29 +-
 ...rRule.java => SecuredLocatorContextLoader.java} |   25 +-
 .../ClientClusterManagementServiceDUnitTest.java   |  173 ++-
 ...ceDUnitTest.java => ConfigurePDXDUnitTest.java} |   44 +-
 .../client/MemberManagementServiceDUnitTest.java   |   12 +-
 ...neralManagementServiceRestIntegrationTest.java} |   52 +-
 .../internal/rest/JsonSerializationTest.java       |   89 ++
 ...MemberManagementServiceRestIntegrationTest.java |   23 +-
 .../internal/rest/PdxManagementTest.java           |   81 ++
 .../rest/RegionManagementIntegrationTest.java      |    8 +-
 .../RegionManagementSecurityIntegrationTest.java   |   28 +-
 .../controllers/ManagementControllerAdvice.java    |    5 +-
 .../rest/controllers/PdxManagementController.java  |   52 +
 .../controllers/RegionManagementController.java    |    9 +
 .../webapp/WEB-INF/geode-management-servlet.xml    |    4 -
 .../internal/cli/commands/CommandOverHttpTest.java |    2 +-
 215 files changed, 7423 insertions(+), 3413 deletions(-)
 delete mode 100644 geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/RegionManagementOnMultipleGroup.java
 create mode 100644 geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/DeregisterDriverCommandDUnitTest.java
 create mode 100644 geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/ListDriversCommandDUnitTest.java
 create mode 100644 geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/RegisterDriverCommandDUnitTest.java
 create mode 100644 geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DeregisterDriverCommand.java
 create mode 100644 geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DeregisterDriverFunction.java
 create mode 100644 geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ListDriversCommand.java
 create mode 100644 geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ListDriversFunction.java
 create mode 100644 geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/RegisterDriverCommand.java
 create mode 100644 geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/RegisterDriverFunction.java
 create mode 100644 geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DeregisterDriverCommandTest.java
 create mode 100644 geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DeregisterDriverFunctionTest.java
 create mode 100644 geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/ListDriversCommandTest.java
 create mode 100644 geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/ListDriversFunctionTest.java
 create mode 100644 geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/RegisterDriverCommandTest.java
 create mode 100644 geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/RegisterDriverFunctionTest.java
 create mode 100644 geode-core/src/distributedTest/java/org/apache/geode/cache30/CacheStatisticsPartitionedRegionDUnitTest.java
 create mode 100644 geode-core/src/distributedTest/java/org/apache/geode/internal/cache/wan/asyncqueue/SerialAsyncEventListenersDifferentPrimariesDistributedTest.java
 create mode 100644 geode-core/src/distributedTest/java/org/apache/geode/management/PartitionedRegionStatsTest.java
 copy geode-web-management/src/commonTest/java/org/apache/geode/management/internal/rest/PlainLocatorContextLoader.java => geode-core/src/integrationTest/java/org/apache/geode/codeAnalysis/AnalyzeManagementSerializablesJUnitTest.java (61%)
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/HasDiskRegion.java~d2263ebc2... Create HasDiskRegion interface
 copy geode-management/src/main/java/org/apache/geode/management/api/RestfulEndpoint.java => geode-core/src/main/java/org/apache/geode/management/internal/CacheElementOperation.java (71%)
 rename geode-web-management/src/commonTest/java/org/apache/geode/management/internal/rest/LocatorWithSecurityManagerContextLoader.java => geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/PdxManager.java (53%)
 create mode 100644 geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-management-serializables.txt
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/configuration/mutators/MemberConfigManagerTest.java
 rename geode-management/src/main/java/org/apache/geode/management/configuration/{RuntimeCacheElement.java => MultiGroupCacheElement.java} (79%)
 copy geode-management/src/main/java/org/apache/geode/management/configuration/{MemberConfig.java => RuntimeMemberConfig.java} (80%)
 copy geode-management/src/{main/java/org/apache/geode/management/api/RestfulEndpoint.java => test/java/org/apache/geode/cache/configuration/PdxTypeTest.java} (68%)
 rename geode-web-management/src/commonTest/java/org/apache/geode/management/internal/rest/{WrappedLocatorLauncher.java => MockLocatorContextLoader.java} (57%)
 rename geode-web-management/src/commonTest/java/org/apache/geode/management/internal/rest/{WrappedLocatorStarterRule.java => SecuredLocatorContextLoader.java} (72%)
 copy geode-web-management/src/distributedTest/java/org/apache/geode/management/client/{ClientClusterManagementServiceDUnitTest.java => ConfigurePDXDUnitTest.java} (67%)
 copy geode-web-management/src/{distributedTest/java/org/apache/geode/management/client/ClientClusterManagementServiceDUnitTest.java => integrationTest/java/org/apache/geode/management/internal/rest/GeneralManagementServiceRestIntegrationTest.java} (51%)
 create mode 100644 geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/JsonSerializationTest.java
 create mode 100644 geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/PdxManagementTest.java
 create mode 100644 geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/PdxManagementController.java


[geode] 01/01: GEODE-6770: add optional deregister driver class when destroy data source.

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

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

commit 98d37be738002badceeda566392c3d892a0ce9e7
Author: zhouxh <gz...@pivotal.io>
AuthorDate: Wed May 22 10:19:58 2019 -0700

    GEODE-6770: add optional deregister driver class when destroy data source.
    
        Co-authored-by: Benjamin Ross <br...@pivotal.io>
        Co-authored-by: Donal Evans <do...@pivotal.io>
        Co-authored-by: Xiaojian Zhou <gz...@pivotal.io>
---
 .../internal/cli/DestroyDataSourceCommand.java     |  54 ++++++++-
 .../internal/cli/DestroyDataSourceCommandTest.java | 132 +++++++++++++++++++++
 .../geode/internal/util/DriverJarUtilTest.java     |   1 -
 3 files changed, 183 insertions(+), 4 deletions(-)

diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyDataSourceCommand.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyDataSourceCommand.java
index 2b1be87..0188710 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyDataSourceCommand.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyDataSourceCommand.java
@@ -14,6 +14,7 @@
  */
 package org.apache.geode.connectors.jdbc.internal.cli;
 
+import java.sql.SQLException;
 import java.util.List;
 import java.util.Set;
 
@@ -28,12 +29,14 @@ import org.apache.geode.cache.configuration.RegionConfig;
 import org.apache.geode.connectors.jdbc.internal.configuration.RegionMapping;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
+import org.apache.geode.internal.util.DriverJarUtil;
 import org.apache.geode.management.cli.CliMetaData;
 import org.apache.geode.management.cli.SingleGfshCommand;
 import org.apache.geode.management.internal.cli.commands.CreateJndiBindingCommand;
 import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
 import org.apache.geode.management.internal.cli.functions.DestroyJndiBindingFunction;
 import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.model.InfoResultModel;
 import org.apache.geode.management.internal.cli.result.model.ResultModel;
 import org.apache.geode.management.internal.exceptions.EntityNotFoundException;
 import org.apache.geode.management.internal.security.ResourceOperation;
@@ -49,6 +52,10 @@ public class DestroyDataSourceCommand extends SingleGfshCommand {
       "Skip the destroy operation when the specified data source does "
           + "not exist. Without this option, an error results from the specification "
           + "of a data source that does not exist.";
+  static final String DEREGISTER_DRIVER = "deregister-driver";
+  static final String DEREGISTER_DRIVER_HELP =
+      "Indicates whether or not the driver class associated"
+          + "with the target data source should be deregistered during the destroy process.";
 
   @CliCommand(value = DESTROY_DATA_SOURCE, help = DESTROY_DATA_SOURCE_HELP)
   @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_REGION)
@@ -57,11 +64,15 @@ public class DestroyDataSourceCommand extends SingleGfshCommand {
   public ResultModel destroyDataSource(
       @CliOption(key = DATA_SOURCE_NAME, mandatory = true,
           help = DATA_SOURCE_NAME_HELP) String dataSourceName,
+      @CliOption(key = DEREGISTER_DRIVER,
+          help = DEREGISTER_DRIVER_HELP, specifiedDefaultValue = "true",
+          unspecifiedDefaultValue = "false") boolean deregisterDriver,
       @CliOption(key = CliStrings.IFEXISTS, help = IFEXISTS_HELP, specifiedDefaultValue = "true",
           unspecifiedDefaultValue = "false") boolean ifExists) {
 
     InternalConfigurationPersistenceService service =
         (InternalConfigurationPersistenceService) getConfigurationPersistenceService();
+    String driverClassName = null;
     if (service != null) {
       List<JndiBindingsType.JndiBinding> bindings =
           service.getCacheConfig("cluster").getJndiBindings();
@@ -86,6 +97,9 @@ public class DestroyDataSourceCommand extends SingleGfshCommand {
             dataSourceName, ex.getMessage()));
 
       }
+      if (deregisterDriver) {
+        driverClassName = binding.getJdbcDriverClass();
+      }
     }
 
     Set<DistributedMember> targetMembers = findMembers(null, null);
@@ -109,14 +123,27 @@ public class DestroyDataSourceCommand extends SingleGfshCommand {
       }
 
       ResultModel result = ResultModel.createMemberStatusResult(dataSourceDestroyResult);
+      InfoResultModel infoModel = result.addInfo();
+      String deregisterResult = deregisterDriver(deregisterDriver, driverClassName, dataSourceName);
+      if (deregisterResult != null) {
+        infoModel.addLine(deregisterResult);
+      }
       result.setConfigObject(dataSourceName);
 
       return result;
     } else {
       if (service != null) {
-        ResultModel result =
-            ResultModel
-                .createInfo("No members found, data source removed from cluster configuration.");
+        // ResultModel result =
+        // ResultModel
+        // .createInfo("No members found, data source removed from cluster configuration.");
+        ResultModel result = new ResultModel();
+        InfoResultModel infoModel = result.addInfo();
+        infoModel.addLine("No members found, data source removed from cluster configuration.");
+        String deregisterResult =
+            deregisterDriver(deregisterDriver, driverClassName, dataSourceName);
+        if (deregisterResult != null) {
+          infoModel.addLine(deregisterResult);
+        }
         result.setConfigObject(dataSourceName);
         return result;
       } else {
@@ -149,6 +176,27 @@ public class DestroyDataSourceCommand extends SingleGfshCommand {
         || CreateJndiBindingCommand.DATASOURCE_TYPE.POOLED.getType().equals(binding.getType());
   }
 
+  private String deregisterDriver(boolean deregisterDriver, String driverClassName,
+      String dataSourceName) {
+    if (deregisterDriver && driverClassName != null) {
+      DriverJarUtil util = createDriverJarUtil();
+      try {
+        util.deregisterDriver(driverClassName);
+      } catch (SQLException ex) {
+        return "Warning: deregistering \"" + driverClassName + "\" while destroying data source \""
+            + dataSourceName + "\" failed with exception: " + ex.getMessage();
+      }
+    } else if (deregisterDriver && driverClassName == null) {
+      return "Warning: deregistering \"" + driverClassName + "\" while destroying data source \""
+          + dataSourceName + "\" failed: No driver class name found";
+    }
+    return null;
+  }
+
+  DriverJarUtil createDriverJarUtil() {
+    return new DriverJarUtil();
+  }
+
   @Override
   public boolean updateConfigForGroup(String group, CacheConfig config, Object element) {
     CacheElement.removeElement(config.getJndiBindings(), (String) element);
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyDataSourceCommandTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyDataSourceCommandTest.java
index 4388e91..823b946 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyDataSourceCommandTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyDataSourceCommandTest.java
@@ -20,12 +20,14 @@ import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.ArgumentMatchers.isNotNull;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -47,6 +49,7 @@ import org.apache.geode.connectors.jdbc.internal.configuration.RegionMapping;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
 import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.util.DriverJarUtil;
 import org.apache.geode.management.internal.cli.commands.CreateJndiBindingCommand;
 import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
 import org.apache.geode.management.internal.cli.functions.DestroyJndiBindingFunction;
@@ -364,4 +367,133 @@ public class DestroyDataSourceCommandTest {
     assertThat(destroyingDataSource).isEqualTo(true);
     assertThat(targetMembers.getValue()).isEqualTo(members);
   }
+
+  @Test
+  public void destroyDataSourceWithDeregisterDriverSucceedsWithWarning() {
+    List<JndiBindingsType.JndiBinding> bindings = new ArrayList<>();
+    JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding();
+    jndiBinding.setJndiName("name");
+    jndiBinding.setType(CreateJndiBindingCommand.DATASOURCE_TYPE.SIMPLE.getType());
+    bindings.add(jndiBinding);
+    doReturn(bindings).when(cacheConfig).getJndiBindings();
+
+    Set<DistributedMember> members = new HashSet<>();
+    members.add(mock(DistributedMember.class));
+
+    CliFunctionResult result =
+        new CliFunctionResult("server1", true, "Data source \"name\" destroyed on \"server1\"");
+    List<CliFunctionResult> results = new ArrayList<>();
+    results.add(result);
+
+    doReturn(members).when(command).findMembers(any(), any());
+    doReturn(results).when(command).executeAndGetFunctionResult(any(), any(), any());
+
+    gfsh.executeAndAssertThat(command, COMMAND + " --name=name --deregister-driver")
+        .statusIsSuccess()
+        .tableHasColumnOnlyWithValues("Member", "server1")
+        .tableHasColumnOnlyWithValues("Status", "OK")
+        .tableHasColumnOnlyWithValues("Message", "Data source \"name\" destroyed on \"server1\"");
+
+    assertThat(cacheConfig.getJndiBindings().isEmpty()).isTrue();
+    verify(command).updateConfigForGroup(eq("cluster"), eq(cacheConfig), any());
+
+    ArgumentCaptor<DestroyJndiBindingFunction> function =
+        ArgumentCaptor.forClass(DestroyJndiBindingFunction.class);
+    ArgumentCaptor<Object[]> arguments = ArgumentCaptor.forClass(Object[].class);
+
+    ArgumentCaptor<Set<DistributedMember>> targetMembers = ArgumentCaptor.forClass(Set.class);
+    verify(command, times(1)).executeAndGetFunctionResult(function.capture(), arguments.capture(),
+        targetMembers.capture());
+
+    String jndiName = (String) arguments.getValue()[0];
+    boolean destroyingDataSource = (boolean) arguments.getValue()[1];
+
+    assertThat(function.getValue()).isInstanceOf(DestroyJndiBindingFunction.class);
+    assertThat(jndiName).isEqualTo("name");
+    assertThat(destroyingDataSource).isEqualTo(true);
+    assertThat(targetMembers.getValue()).isEqualTo(members);
+  }
+
+  @Test
+  public void destroyDataSourceThrowsSQLExceptpionWithRegisterDriverAndBadDriverClassName()
+      throws SQLException {
+    DriverJarUtil util = mock(DriverJarUtil.class);
+    doReturn(util).when(command).createDriverJarUtil();
+
+    String exceptionMessage = "Command failed as expected.";
+
+    doThrow(new SQLException(exceptionMessage)).when(util).deregisterDriver(any());
+
+    List<JndiBindingsType.JndiBinding> bindings = new ArrayList<>();
+    JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding();
+    jndiBinding.setJndiName("name");
+    jndiBinding.setJdbcDriverClass("badDriverClassName");
+    jndiBinding.setType(CreateJndiBindingCommand.DATASOURCE_TYPE.SIMPLE.getType());
+    bindings.add(jndiBinding);
+    doReturn(bindings).when(cacheConfig).getJndiBindings();
+
+    Set<DistributedMember> members = new HashSet<>();
+    members.add(mock(DistributedMember.class));
+
+    CliFunctionResult result =
+        new CliFunctionResult("server1", true, "Data source \"name\" destroyed on \"server1\"");
+    List<CliFunctionResult> results = new ArrayList<>();
+    results.add(result);
+
+    doReturn(members).when(command).findMembers(any(), any());
+    doReturn(results).when(command).executeAndGetFunctionResult(any(), any(), any());
+
+    gfsh.executeAndAssertThat(command, COMMAND + " --name=name --deregister-driver")
+        .containsOutput(exceptionMessage);
+  }
+
+  @Test
+  public void destroyDataSourceWithDeregisterDriverSucceedsWithoutWarnings() {
+    DriverJarUtil util = mock(DriverJarUtil.class);
+
+    List<JndiBindingsType.JndiBinding> bindings = new ArrayList<>();
+    JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding();
+    jndiBinding.setJndiName("name");
+    jndiBinding.setJdbcDriverClass("driverClassName");
+    jndiBinding.setType(CreateJndiBindingCommand.DATASOURCE_TYPE.SIMPLE.getType());
+    bindings.add(jndiBinding);
+    doReturn(bindings).when(cacheConfig).getJndiBindings();
+
+    Set<DistributedMember> members = new HashSet<>();
+    members.add(mock(DistributedMember.class));
+
+    CliFunctionResult result =
+        new CliFunctionResult("server1", true, "Data source \"name\" destroyed on \"server1\"");
+    List<CliFunctionResult> results = new ArrayList<>();
+    results.add(result);
+
+    doReturn(members).when(command).findMembers(any(), any());
+    doReturn(results).when(command).executeAndGetFunctionResult(any(), any(), any());
+
+    gfsh.executeAndAssertThat(command, COMMAND + " --name=name --deregister-driver")
+        .statusIsSuccess()
+        .tableHasColumnOnlyWithValues("Member", "server1")
+        .tableHasColumnOnlyWithValues("Status", "OK")
+        .tableHasColumnOnlyWithValues("Message", "Data source \"name\" destroyed on \"server1\"")
+        .doesNotContainOutput("Warning:");
+
+    assertThat(cacheConfig.getJndiBindings().isEmpty()).isTrue();
+    verify(command).updateConfigForGroup(eq("cluster"), eq(cacheConfig), any());
+
+    ArgumentCaptor<DestroyJndiBindingFunction> function =
+        ArgumentCaptor.forClass(DestroyJndiBindingFunction.class);
+    ArgumentCaptor<Object[]> arguments = ArgumentCaptor.forClass(Object[].class);
+
+    ArgumentCaptor<Set<DistributedMember>> targetMembers = ArgumentCaptor.forClass(Set.class);
+    verify(command, times(1)).executeAndGetFunctionResult(function.capture(), arguments.capture(),
+        targetMembers.capture());
+
+    String jndiName = (String) arguments.getValue()[0];
+    boolean destroyingDataSource = (boolean) arguments.getValue()[1];
+
+    assertThat(function.getValue()).isInstanceOf(DestroyJndiBindingFunction.class);
+    assertThat(jndiName).isEqualTo("name");
+    assertThat(destroyingDataSource).isEqualTo(true);
+    assertThat(targetMembers.getValue()).isEqualTo(members);
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/util/DriverJarUtilTest.java b/geode-core/src/test/java/org/apache/geode/internal/util/DriverJarUtilTest.java
index 8a93b96..de8102a 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/util/DriverJarUtilTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/util/DriverJarUtilTest.java
@@ -63,5 +63,4 @@ public class DriverJarUtilTest {
     util.deregisterDriver(driverName);
     verify(util).deregisterDriverWithDriverManager(any());
   }
-
 }