This is an automated email from the ASF dual-hosted git repository. gvvinblade pushed a commit to branch ignite-12248 in repository https://gitbox.apache.org/repos/asf/ignite.git
commit 32de6d8dabee6e18cfcb1d331ce0acf6a287042c Merge: 39d090d cbe58f4 Author: Igor Seliverstov <[email protected]> AuthorDate: Wed May 27 16:55:38 2020 +0300 Merge branch 'master' into ignite-12248 # Conflicts: # modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/ConnectionProperties.java # modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/ConnectionPropertiesImpl.java # modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinTcpIo.java # modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcConnectionContext.java .../class_list_exploit_included.txt => .asf.yaml | 37 +- .github/PULL_REQUEST_TEMPLATE.md | 25 + CONTRIBUTING.md | 4 +- README.md | 1 - RELEASE_NOTES.txt | 82 ++ .../cassandra/session/CassandraSessionImpl.java | 60 +- .../ClientTcpUnreachableMultiNodeSelfTest.java | 8 + .../internal/jdbc2/JdbcMetadataSelfTest.java | 3 +- .../rest/JettyRestProcessorAbstractSelfTest.java | 74 +- .../rest/TcpRestUnmarshalVulnerabilityTest.java | 11 - .../apache/ignite/jdbc/JdbcAuthorizationTest.java | 372 +++++++ .../jdbc/suite/IgniteJdbcDriverTestSuite.java | 2 + .../JdbcThinComplexDmlDdlCustomSchemaSelfTest.java | 3 +- .../jdbc/thin/JdbcThinConnectionSelfTest.java | 81 +- .../jdbc/thin/JdbcThinDefaultTimeoutTest.java | 3 +- .../ignite/jdbc/thin/JdbcThinMetadataSelfTest.java | 5 +- ...ThinPartitionAwarenessTransactionsSelfTest.java | 4 +- .../thin/JdbcThinPreparedStatementSelfTest.java | 310 +++++- .../jdbc/thin/JdbcThinResultSetSelfTest.java | 49 +- .../thin/JdbcThinStreamingAbstractSelfTest.java | 68 ++ .../apache/ignite/jdbc/thin/JdbcThinTcpIoTest.java | 4 +- .../src/main/java/org/apache/ignite/Ignite.java | 3 + .../main/java/org/apache/ignite/IgniteCache.java | 2 +- .../org/apache/ignite/IgniteSystemProperties.java | 9 + .../java/org/apache/ignite/cache/CacheMetrics.java | 6 + .../apache/ignite/cache/PartitionLossPolicy.java | 15 +- .../apache/ignite/client/ClientClusterGroup.java | 150 +++ .../configuration/DataStorageConfiguration.java | 5 +- .../DefaultCommunicationFailureResolver.java | 11 +- .../ignite/configuration/IgniteConfiguration.java | 112 +- .../ignite/configuration/SqlConfiguration.java | 154 +++ .../java/org/apache/ignite/events/EventType.java | 140 +-- .../ignite/events/PageReplacementStartedEvent.java | 53 + .../org/apache/ignite/internal/IgnitionEx.java | 7 +- .../ignite/internal/MarshallerContextImpl.java | 83 +- .../ignite/internal/MarshallerPlatformIds.java | 31 + .../ignite/internal/binary/BinaryContext.java | 14 +- .../ignite/internal/binary/BinaryMarshaller.java | 2 +- .../ignite/internal/binary/BinaryReaderExImpl.java | 18 +- .../apache/ignite/internal/binary/BinaryUtils.java | 27 +- .../internal/binary/GridBinaryMarshaller.java | 3 - .../ignite/internal/client/GridClientNode.java | 17 + .../client/impl/GridClientComputeImpl.java | 16 +- .../internal/client/impl/GridClientNodeImpl.java | 14 + .../connection/GridClientNioTcpConnection.java | 27 +- .../client/thin/ClientBinaryMarshaller.java | 2 +- .../client/thin/ClientClusterGroupImpl.java | 739 +++++++++++++- .../internal/client/thin/ClientClusterImpl.java | 17 +- .../client/thin/ClientClusterNodeImpl.java | 166 +++ .../internal/client/thin/ClientOperation.java | 2 + .../client/thin/ProtocolBitmaskFeature.java | 8 +- .../internal/commandline/BaselineCommand.java | 5 +- .../ignite/internal/commandline/CommandList.java | 6 +- .../commandline/cache/CacheCommandList.java | 5 + .../internal/commandline/cache/CacheCommands.java | 1 + .../commandline/cache/CacheSubcommands.java | 7 +- .../commandline/cache/CheckIndexInlineSizes.java | 152 +++ .../CheckIndexInlineSizesResult.java | 96 ++ .../CheckIndexInlineSizesTask.java | 99 ++ .../commandline/snapshot/SnapshotCommand.java | 100 ++ .../snapshot/SnapshotSubcommand.java} | 39 +- .../internal/events/DiscoveryCustomEvent.java | 8 + .../internal/jdbc/thin/ConnectionProperties.java | 32 + .../jdbc/thin/ConnectionPropertiesImpl.java | 48 + .../ignite/internal/jdbc/thin/HandshakeResult.java | 20 +- .../internal/jdbc/thin/JdbcThinConnection.java | 620 +++++++++-- .../JdbcThinPartitionAwarenessMappingGroup.java | 24 +- .../jdbc/thin/JdbcThinPreparedStatement.java | 17 +- .../internal/jdbc/thin/JdbcThinResultSet.java | 2 +- .../internal/jdbc/thin/JdbcThinStatement.java | 2 +- .../ignite/internal/jdbc/thin/JdbcThinTcpIo.java | 75 +- .../ignite/internal/jdbc2/JdbcResultSet.java | 2 +- .../marshaller/optimized/OptimizedMarshaller.java | 23 +- .../OptimizedObjectPooledStreamRegistry.java | 89 ++ .../OptimizedObjectSharedStreamRegistry.java | 121 +++ .../optimized/OptimizedObjectStreamRegistry.java | 170 +--- .../affinity/GridAffinityAssignmentCache.java | 6 +- .../cache/CacheAffinitySharedManager.java | 92 +- .../processors/cache/CacheGroupContext.java | 28 +- .../processors/cache/ClusterCachesInfo.java | 7 +- .../processors/cache/DynamicCacheChangeBatch.java | 2 +- .../processors/cache/DynamicCacheDescriptor.java | 6 +- .../cache/GridCachePartitionExchangeManager.java | 122 ++- .../processors/cache/GridCachePreloader.java | 16 +- .../cache/GridCachePreloaderAdapter.java | 11 +- .../processors/cache/GridCacheProcessor.java | 20 +- .../processors/cache/GridCacheSharedContext.java | 9 +- .../cache/IgniteCacheOffheapManagerImpl.java | 2 +- .../processors/cache/PartitionUpdateCounter.java | 5 + .../cache/PartitionUpdateCounterDebugWrapper.java | 5 + .../cache/PartitionUpdateCounterTrackingImpl.java | 13 + .../cache/PartitionUpdateCounterVolatileImpl.java | 10 + .../internal/processors/cache/WalStateManager.java | 178 ++-- .../dht/ClientCacheDhtTopologyFuture.java | 5 +- .../cache/distributed/dht/GridDhtCacheAdapter.java | 6 +- .../cache/distributed/dht/GridDhtGetFuture.java | 13 - .../distributed/dht/GridDhtGetSingleFuture.java | 13 - .../distributed/dht/GridDhtTopologyFuture.java | 5 +- .../dht/GridDhtTopologyFutureAdapter.java | 174 +--- .../distributed/dht/GridDhtTxPrepareFuture.java | 13 +- .../distributed/dht/GridPartitionedGetFuture.java | 72 +- .../dht/GridPartitionedSingleGetFuture.java | 50 +- .../cache/distributed/dht/NearTxResultHandler.java | 4 + .../distributed/dht/atomic/GridDhtAtomicCache.java | 6 +- .../dht/colocated/GridDhtColocatedCache.java | 3 +- .../preloader/GridDhtPartitionDemandMessage.java | 29 +- .../dht/preloader/GridDhtPartitionDemander.java | 786 ++++++++------ .../preloader/GridDhtPartitionsExchangeFuture.java | 297 ++++-- .../preloader/GridDhtPartitionsFullMessage.java | 89 +- .../dht/preloader/GridDhtPreloader.java | 92 +- .../dht/preloader/GridDhtPreloaderAssignments.java | 17 +- .../dht/preloader/latch/ExchangeLatchManager.java | 33 +- .../dht/topology/GridClientPartitionTopology.java | 126 ++- .../dht/topology/GridDhtLocalPartition.java | 33 +- .../dht/topology/GridDhtPartitionTopology.java | 22 +- .../dht/topology/GridDhtPartitionTopologyImpl.java | 358 ++++--- .../dht/topology/PartitionsEvictManager.java | 19 +- .../GridCacheDatabaseSharedManager.java | 66 +- .../persistence/file/FilePageStoreManager.java | 4 +- .../cache/persistence/pagemem/PageMemoryImpl.java | 37 +- .../pagemem/PagesWriteSpeedBasedThrottle.java | 2 +- .../snapshot/IgniteSnapshotManager.java | 63 +- .../persistence/snapshot/SnapshotMXBeanImpl.java | 10 +- .../persistence/wal/scanner/PrintToLogHandler.java | 3 +- .../cache/query/GridCacheQueryAdapter.java | 35 +- .../cache/query/GridCacheQueryManager.java | 28 +- .../cache/transactions/IgniteTxHandler.java | 19 +- .../cache/transactions/IgniteTxManager.java | 141 ++- .../cache/transactions/IgniteTxStateImpl.java | 20 +- .../cache/transactions/TxDeadlockDetection.java | 8 +- .../verify/CollectConflictPartitionKeysTask.java | 21 +- .../cache/verify/IdleVerifyResultV2.java | 10 +- .../processors/cache/verify/IdleVerifyUtility.java | 202 +++- .../cache/verify/PartitionHashRecordV2.java | 12 +- .../verify/VerifyBackupPartitionsDumpTask.java | 6 +- .../cache/verify/VerifyBackupPartitionsTask.java | 10 +- .../cache/verify/VerifyBackupPartitionsTaskV2.java | 165 ++- .../autoadjust/BaselineAutoAdjustScheduler.java | 6 +- .../datastructures/GridCacheLockImpl.java | 5 +- .../diagnostic/PageHistoryDiagnoster.java | 6 +- .../processors/odbc/ClientListenerNioListener.java | 2 +- .../processors/odbc/ClientListenerProcessor.java | 9 +- .../internal/processors/odbc/SqlListenerUtils.java | 34 +- .../odbc/jdbc/JdbcBatchExecuteRequest.java | 30 +- .../odbc/jdbc/JdbcBatchExecuteResult.java | 17 +- ...eRequest.java => JdbcBinaryTypeGetRequest.java} | 47 +- .../odbc/jdbc/JdbcBinaryTypeGetResult.java | 107 ++ ...uest.java => JdbcBinaryTypeNameGetRequest.java} | 75 +- ...quest.java => JdbcBinaryTypeNameGetResult.java} | 74 +- .../odbc/jdbc/JdbcBinaryTypeNamePutRequest.java | 109 ++ ...hRequest.java => JdbcBinaryTypePutRequest.java} | 78 +- .../odbc/jdbc/JdbcBulkLoadAckResult.java | 17 +- .../odbc/jdbc/JdbcBulkLoadBatchRequest.java | 17 +- .../odbc/jdbc/JdbcCachePartitionsRequest.java | 17 +- .../odbc/jdbc/JdbcCachePartitionsResult.java | 22 +- .../processors/odbc/jdbc/JdbcColumnMeta.java | 13 +- .../processors/odbc/jdbc/JdbcColumnMetaV2.java | 17 +- .../processors/odbc/jdbc/JdbcColumnMetaV3.java | 17 +- .../processors/odbc/jdbc/JdbcColumnMetaV4.java | 17 +- .../odbc/jdbc/JdbcConnectionContext.java | 28 +- .../processors/odbc/jdbc/JdbcIndexMeta.java | 13 +- .../processors/odbc/jdbc/JdbcMessageParser.java | 28 +- .../odbc/jdbc/JdbcMetaColumnsRequest.java | 17 +- .../odbc/jdbc/JdbcMetaColumnsResult.java | 21 +- .../odbc/jdbc/JdbcMetaIndexesRequest.java | 17 +- .../odbc/jdbc/JdbcMetaIndexesResult.java | 21 +- .../odbc/jdbc/JdbcMetaParamsRequest.java | 17 +- .../processors/odbc/jdbc/JdbcMetaParamsResult.java | 21 +- .../odbc/jdbc/JdbcMetaPrimaryKeysRequest.java | 17 +- .../odbc/jdbc/JdbcMetaPrimaryKeysResult.java | 21 +- .../odbc/jdbc/JdbcMetaSchemasRequest.java | 17 +- .../odbc/jdbc/JdbcMetaSchemasResult.java | 17 +- .../odbc/jdbc/JdbcMetaTablesRequest.java | 23 +- .../processors/odbc/jdbc/JdbcMetaTablesResult.java | 21 +- .../odbc/jdbc/JdbcOrderedBatchExecuteRequest.java | 15 +- .../odbc/jdbc/JdbcOrderedBatchExecuteResult.java | 17 +- .../processors/odbc/jdbc/JdbcParameterMeta.java | 13 +- .../processors/odbc/jdbc/JdbcPrimaryKeyMeta.java | 13 +- .../processors/odbc/jdbc/JdbcProtocolContext.java | 104 ++ .../internal/processors/odbc/jdbc/JdbcQuery.java | 18 +- .../odbc/jdbc/JdbcQueryCancelRequest.java | 18 +- .../odbc/jdbc/JdbcQueryCloseRequest.java | 17 +- .../JdbcQueryExecuteMultipleStatementsResult.java | 25 +- .../odbc/jdbc/JdbcQueryExecuteRequest.java | 33 +- .../odbc/jdbc/JdbcQueryExecuteResult.java | 25 +- .../odbc/jdbc/JdbcQueryFetchRequest.java | 17 +- .../processors/odbc/jdbc/JdbcQueryFetchResult.java | 21 +- .../odbc/jdbc/JdbcQueryMetadataRequest.java | 17 +- .../odbc/jdbc/JdbcQueryMetadataResult.java | 21 +- .../processors/odbc/jdbc/JdbcRawBinarylizable.java | 10 +- .../internal/processors/odbc/jdbc/JdbcRequest.java | 61 +- .../processors/odbc/jdbc/JdbcRequestHandler.java | 124 +++ .../processors/odbc/jdbc/JdbcResponse.java | 23 +- .../internal/processors/odbc/jdbc/JdbcResult.java | 47 +- .../processors/odbc/jdbc/JdbcResultInfo.java | 13 +- .../processors/odbc/jdbc/JdbcTableMeta.java | 18 +- .../jdbc/JdbcThinFeature.java} | 30 +- ...uest.java => JdbcUpdateBinarySchemaResult.java} | 69 +- .../internal/processors/odbc/jdbc/JdbcUtils.java | 44 +- .../platform/client/ClientBitmaskFeature.java | 10 +- .../platform/client/ClientMessageParser.java | 17 +- .../cluster/ClientClusterGetStateRequest.java | 2 +- ...lientClusterGroupGetNodesEndpointsRequest.java} | 24 +- ...lientClusterGroupGetNodesEndpointsResponse.java | 170 ++++ .../cluster/ClientClusterGroupProjection.java | 4 +- .../platform/client/compute/ClientComputeTask.java | 3 + .../client/compute/ClientExecuteTaskRequest.java | 17 +- .../platform/services/PlatformAbstractService.java | 8 +- .../platform/services/PlatformService.java | 13 + .../processors/platform/utils/PlatformUtils.java | 18 +- .../processors/query/GridQueryIndexing.java | 12 + .../processors/query/GridQueryProcessor.java | 180 +++- .../processors/query/QueryHistoryTracker.java | 4 +- .../processors/query/RunningQueryManager.java | 6 +- .../schema/SchemaIndexCachePartitionWorker.java | 3 +- .../client/message/GridClientAbstractMessage.java | 58 -- .../message/GridClientAuthenticationRequest.java | 32 +- .../rest/client/message/GridClientMessage.java | 15 - .../rest/protocols/tcp/GridMemcachedMessage.java | 11 - .../rest/protocols/tcp/GridTcpRestNioListener.java | 22 +- .../rest/protocols/tcp/redis/GridRedisMessage.java | 11 - .../processors/service/GridServiceProcessor.java | 10 +- .../processors/service/GridServiceProxy.java | 81 +- .../processors/service/IgniteServiceProcessor.java | 50 +- .../internal/processors/service/ServiceInfo.java | 13 +- .../ignite/internal/util/GridArgumentCheck.java | 1 + .../ignite/internal/util/GridJavaProcess.java | 2 +- .../ignite/internal/util/IgniteStopwatch.java | 14 +- .../org/apache/ignite/internal/util/TimeBag.java | 63 +- .../visor/snapshot/VisorSnapshotCreateTask.java | 62 ++ .../verify/ValidateIndexesPartitionResult.java | 92 +- .../ignite/platform/PlatformServiceMethod.java | 48 + .../org/apache/ignite/spi/IgniteSpiThread.java | 5 +- .../spi/communication/tcp/TcpCommunicationSpi.java | 4 +- .../ignite/spi/discovery/tcp/ClientImpl.java | 3 +- .../org/apache/ignite/thread/IgniteThread.java | 10 + .../main/resources/META-INF/classnames.properties | 5 + .../test/config/class_list_exploit_included.txt | 3 +- .../ignite/cache/BreakRebalanceChainTest.java | 176 ++++ .../ClientCreateCacheGroupOnJoinNodeMapsTest.java | 89 ++ .../ignite/cache/NotOptimizedRebalanceTest.java | 288 ++++++ .../RebalanceAfterResettingLostPartitionTest.java | 177 ++++ .../ignite/cache/RebalanceCancellationTest.java | 495 +++++++++ .../ignite/cache/ResetLostPartitionTest.java | 37 +- .../ignite/cache/affinity/PendingExchangeTest.java | 343 +++++++ .../ignite/failure/SystemWorkersBlockingTest.java | 3 + .../internal/GridJobMasterLeaveAwareSelfTest.java | 8 +- .../internal/IgniteThreadGroupNodeRestartTest.java | 59 ++ .../internal/TestDelayingCommunicationSpi.java | 3 +- .../internal/binary/BinaryMarshallerSelfTest.java | 96 ++ .../internal/client/thin/ClusterGroupTest.java | 429 ++++++++ .../internal/client/thin/ComputeTaskTest.java | 140 +-- .../internal/client/thin/TestFailoverTask.java | 65 ++ .../ignite/internal/client/thin/TestJob.java | 61 ++ .../internal/client/thin/TestResultCacheTask.java | 58 ++ .../ignite/internal/client/thin/TestTask.java | 59 ++ .../commandline/CommandHandlerParsingTest.java | 3 +- .../internal/encryption/MasterKeyChangeTest.java | 7 + .../MessageDirectTypeIdConflictTest.java | 3 +- .../optimized/OptimizedObjectStreamSelfTest.java | 21 +- ...acheConfigurationSerializationAbstractTest.java | 218 ++++ ...eConfigurationSerializationOnDiscoveryTest.java | 162 +-- ...heConfigurationSerializationOnExchangeTest.java | 189 +--- .../cache/CacheDataRegionConfigurationTest.java | 128 ++- .../processors/cache/CacheMetricsManageTest.java | 3 + .../cache/CacheValidatorMetricsTest.java | 16 +- ...heWithDifferentDataRegionConfigurationTest.java | 2 - .../DataStorageConfigurationValidationTest.java | 17 + .../IgniteCacheConfigurationTemplateTest.java | 2 +- ...eCachePartitionMapUpdateSafeLossPolicyTest.java | 79 ++ .../cache/IgniteCachePartitionMapUpdateTest.java | 70 +- .../cache/IgniteClusterActivateDeactivateTest.java | 2 + .../cache/distributed/CacheExchangeMergeTest.java | 95 +- .../CacheLateAffinityAssignmentTest.java | 38 +- .../CachePartitionLossDetectionOnNodeLeftTest.java | 115 --- .../CachePartitionLossWithPersistenceTest.java | 264 +++++ .../CachePartitionLossWithRestartsTest.java | 223 ++++ ...CachePartitionLostAfterSupplierHasLeftTest.java | 409 ++++++++ .../CachePartitionLostWhileClearingTest.java | 168 --- .../CacheResultIsNotNullOnPartitionLossTest.java | 4 + .../GridCachePartitionNotLoadedEventSelfTest.java | 41 +- ...GridExchangeFreeCellularSwitchAbstractTest.java | 290 ++++++ ...ngeFreeCellularSwitchComplexOperationsTest.java | 354 +++++++ ...ridExchangeFreeCellularSwitchIsolationTest.java | 486 +++++++++ .../distributed/GridExchangeFreeSwitchTest.java | 28 +- ...gniteCacheClientNodePartitionsExchangeTest.java | 12 +- ...niteCacheGroupsPartitionLossPolicySelfTest.java | 316 +----- .../IgniteCachePartitionLossPolicySelfTest.java | 1072 ++++++-------------- .../distributed/IgniteCachePrimarySyncTest.java | 3 + .../dht/topology/EvictPartitionInLogTest.java | 48 +- .../cache/mvcc/CacheMvccTxFailoverTest.java | 10 +- ...gniteLostPartitionsOnLeaveBaselineSelfTest.java | 167 +++ .../IgnitePdsBinaryMetadataAsyncWritingTest.java | 13 +- .../IgnitePdsCacheRebalancingAbstractTest.java | 1 + .../persistence/IgnitePdsCorruptedIndexTest.java | 6 + ...ocalWalModeChangeDuringRebalancingSelfTest.java | 25 +- .../PersistenceDirectoryWarningLoggingTest.java | 25 + .../ClientAffinityAssignmentWithBaselineTest.java | 37 +- .../IgniteAbsentEvictionNodeOutOfBaselineTest.java | 3 + .../persistence/db/IgnitePdsCacheRestoreTest.java | 5 +- ...IgnitePdsCacheWalDisabledOnRebalancingTest.java | 15 +- ...itePdsPageEvictionDuringPartitionClearTest.java | 163 --- ...PdsPageReplacementDuringPartitionClearTest.java | 343 +++++++ .../db/IgniteSequentialNodeCrashRecoveryTest.java | 2 + .../CheckpointFailBeforeWriteMarkTest.java | 2 +- .../persistence/db/wal/IgniteWalRebalanceTest.java | 171 ++-- .../persistence/db/wal/WalCompactionTest.java | 3 + .../IgnitePageMemReplaceDelayedWriteUnitTest.java | 11 + .../pagemem/IgniteThrottlingUnitTest.java | 2 + .../persistence/pagemem/PageMemoryImplTest.java | 4 + .../snapshot/AbstractSnapshotSelfTest.java | 43 +- .../snapshot/IgniteClusterSnapshotSelfTest.java | 63 +- .../persistence/wal/scanner/WalScannerTest.java | 4 + ...CacheContinuousWithTransformerFailoverTest.java | 3 +- ...coveryDataDeserializationFailureHanderTest.java | 3 +- ...AtomicPartitionCounterStateConsistencyTest.java | 10 +- .../TxCrossCacheMapOnInvalidTopologyTest.java | 3 +- .../TxDeadlockDetectionNoHangsTest.java | 12 +- .../TxPartitionCounterStateAbstractTest.java | 19 + .../TxPartitionCounterStateConsistencyTest.java | 140 ++- .../failure/FailureProcessorLoggingTest.java | 7 +- .../FailureProcessorThreadDumpThrottlingTest.java | 2 +- .../client/AdditionalSecurityCheckTest.java | 137 +-- .../client/AttributeSecurityCheckTest.java | 94 ++ ...CheckTest.java => CommonSecurityCheckTest.java} | 147 +-- ...uthenticationContextSecurityPluginProvider.java | 82 ++ ...GridServiceProxyTopologyInitializationTest.java | 249 +++++ .../IgniteServiceProxyTimeoutInitializedTest.java | 33 + .../platform/AbstractPlatformServiceCallTask.java | 278 +++++ .../platform/PlatformCacheAffinityVersionTask.java | 81 ++ .../PlatformServiceCallCollectionsTask.java | 93 ++ .../ignite/platform/PlatformServiceCallTask.java | 81 ++ .../apache/ignite/testframework/GridTestUtils.java | 68 +- .../ignite/testframework/ListeningTestLogger.java | 50 +- .../testframework/junits/GridAbstractTest.java | 27 +- .../ignite/testframework/junits/IgniteMock.java | 2 +- .../junits/common/GridCommonAbstractTest.java | 157 ++- .../junits/logger/GridTestLog4jLogger.java | 6 + .../junits/logger/GridTestLog4jLoggerSelfTest.java | 95 ++ .../junits/multijvm/IgniteProcessProxy.java | 3 +- .../ignite/testsuites/IgniteBasicTestSuite.java | 5 +- .../testsuites/IgniteCacheMvccTestSuite5.java | 11 + .../testsuites/IgniteCacheMvccTestSuite6.java | 4 + .../testsuites/IgniteCacheMvccTestSuite7.java | 2 + .../ignite/testsuites/IgniteCacheTestSuite2.java | 2 + .../ignite/testsuites/IgniteCacheTestSuite5.java | 5 + .../ignite/testsuites/IgniteCacheTestSuite6.java | 6 +- .../ignite/testsuites/IgniteCacheTestSuite7.java | 8 +- .../ignite/testsuites/IgniteCacheTestSuite8.java | 2 + .../ignite/testsuites/IgniteLangSelfTestSuite.java | 3 + .../ignite/testsuites/IgnitePdsTestSuite4.java | 10 +- .../ignite/testsuites/IgniteReproducingSuite.java | 6 +- .../testsuites/IgniteServiceGridTestSuite.java | 2 + .../ignite/testsuites/SecurityTestSuite.java | 2 + .../util/GridCommandHandlerAbstractTest.java | 57 +- .../apache/ignite/util/GridCommandHandlerTest.java | 65 +- ...mandHandlerClusterByClassTest_cache_help.output | 3 + ...ridCommandHandlerClusterByClassTest_help.output | 6 + ...dlerClusterByClassWithSSLTest_cache_help.output | 3 + ...andHandlerClusterByClassWithSSLTest_help.output | 6 + .../processors/query/h2/IgniteH2Indexing.java | 19 +- .../query/h2/LongRunningQueryManager.java | 2 +- .../internal/processors/query/h2/QueryParser.java | 2 +- .../processors/query/h2/SchemaManager.java | 6 +- .../processors/query/h2/opt/GridH2Table.java | 33 +- .../processors/query/h2/opt/TableStatistics.java | 2 +- .../query/h2/sql/GridSqlQueryParser.java | 21 +- .../query/h2/twostep/AbstractReducer.java | 14 +- .../query/h2/twostep/GridMapQueryExecutor.java | 6 +- .../h2/twostep/PartitionReservationManager.java | 36 +- .../query/h2/twostep/ReducePartitionMapper.java | 65 +- .../visor/verify/ValidateIndexesClosure.java | 236 +++-- .../org/apache/ignite/client/ClientTestSuite.java | 2 + ...eckIndexesInlineSizeOnNodeJoinMultiJvmTest.java | 245 +++++ ...ockPartitionOnAffinityRunAtomicCacheOpTest.java | 11 +- ...cheLockPartitionOnAffinityRunTxCacheOpTest.java | 3 +- .../cache/IgniteDynamicSqlRestoreTest.java | 3 + .../IndexingCachePartitionLossPolicySelfTest.java | 57 +- ...acheDistributedQueryDefaultTimeoutSelfTest.java | 3 +- .../near/IgniteCacheQueryNodeRestartSelfTest.java | 22 +- ...acheQueryReservationOnUnstableTopologyTest.java | 110 ++ .../cache/index/H2DynamicTableSelfTest.java | 3 +- ...gniteCacheLocalQueryDefaultTimeoutSelfTest.java | 3 +- .../cache/metric/SqlViewExporterSpiTest.java | 4 +- .../db/IgniteCacheGroupsWithRestartsTest.java | 2 + .../persistence/db/wal/IgniteWalRecoveryTest.java | 74 +- .../IgniteClusterSnapshotWithIndexesTest.java | 42 - .../processors/client/IgniteDataStreamerTest.java | 6 +- .../processors/database/RebuildIndexTest.java | 7 +- ...eLockPartitionOnAffinityRunAtomicCacheTest.java | 4 +- ...elineLockPartitionOnAffinityRunTxCacheTest.java | 4 +- ...ngingBaselineCacheQueryNodeRestartSelfTest.java | 5 +- ...ableBaselineCacheQueryNodeRestartsSelfTest.java | 34 + .../processors/query/AbstractCustomSchemaTest.java | 5 +- .../query/IgniteSqlCustomSchemaWithPdsEnabled.java | 5 +- .../IgniteSqlSchemasDiffConfigurationsTest.java | 11 +- .../IgniteSqlSkipReducerOnUpdateDmlSelfTest.java | 3 +- .../query/IgniteSqlSplitterSelfTest.java | 4 +- .../processors/query/SqlQueryHistorySelfTest.java | 3 +- .../processors/query/SqlSystemViewsSelfTest.java | 14 +- .../h2/twostep/RetryCauseMessageSelfTest.java | 28 +- .../org/apache/ignite/sqltests/BaseSqlTest.java | 3 +- .../IgniteBinaryCacheQueryTestSuite.java | 2 + .../IgniteBinaryCacheQueryTestSuite2.java | 5 +- ...teCacheWithIndexingAndPersistenceTestSuite.java | 2 + ...idCommandHandlerCheckIndexesInlineSizeTest.java | 153 +++ ...idCommandHandlerIndexingClusterByClassTest.java | 16 + .../util/GridCommandHandlerIndexingTest.java | 151 ++- .../apache/ignite/stream/kafka/KafkaStreamer.java | 3 +- .../java/org/apache/ignite/ml/math/Tracer.java | 11 +- .../ignite/ml/util/plugin/MLPluginProvider.java | 6 +- .../osgi/IgniteAbstractOsgiContextActivator.java | 3 +- .../platforms/cpp/core-test/src/teamcity_boost.cpp | 2 +- .../cpp/odbc-test/src/teamcity/teamcity_boost.cpp | 2 +- .../src/teamcity/teamcity_boost.cpp | 2 +- .../Apache.Ignite.BenchmarkDotNet.csproj | 18 + .../Program.cs} | 21 +- .../ThinClient/ThinClientBenchmarkBase.cs} | 34 +- .../ThinClient/ThinClientCacheGetBenchmark.cs | 63 ++ .../ThinClient/ThinClientComputeBenchmark.cs} | 29 +- .../dotnet/Apache.Ignite.BenchmarkDotNet/Utils.cs | 75 ++ .../Apache.Ignite.Core.Tests.DotNetCore.csproj | 73 +- .../Common/TestUtils.DotNetCore.cs | 4 +- .../Apache.Ignite.Core.Tests.csproj | 10 +- .../Binary/BinaryDynamicRegistrationTest.cs | 2 +- .../Cache/Affinity/AffinityFunctionSpringTest.cs | 5 +- .../Cache/Affinity/AffinityTest.cs | 3 +- .../Cache/PartitionLossTest.cs | 20 +- .../Cache/Platform/PlatformCacheTest.cs | 2 +- .../Cache/Query/Linq/CacheLinqTest.Misc.cs | 3 +- .../Client/Cache/CacheTest.cs | 16 + .../Client/Cache/CacheTestSsl.cs | 38 +- .../Client/Cache/ClientCacheConfigurationTest.cs | 4 +- .../Client/Cache/ListLogger.cs | 5 + .../Client/Cache/PartitionAwarenessTest.cs | 39 +- .../Client/ClientConnectionTest.cs | 6 +- .../Client/ClientFeaturesTest.cs | 86 ++ .../Client/ClientOpExtensionsTest.cs | 59 -- .../Client/ClientProtocolCompatibilityTest.cs | 62 +- .../Client/ClientReconnectCompatibilityTest.cs | 5 +- .../Client/ClientServerCompatibilityTest.cs | 40 +- .../Client/ClientTestBase.cs | 37 +- .../Client/Cluster/ClientClusterDiscoveryTests.cs | 176 ++++ .../Cluster/ClientClusterDiscoveryTestsBase.cs | 149 +++ .../ClientClusterDiscoveryTestsBaselineTopology.cs | 74 ++ .../ClientClusterDiscoveryTestsNoLocalhost.cs} | 21 +- .../Cluster/ClientClusterDiscoveryTestsSsl.cs} | 21 +- .../Client/Compute/ComputeClientDisabledTests.cs | 46 + .../Client/Compute/ComputeClientTests.cs | 476 +++++++++ .../Compute/ComputeApiTest.JavaTask.cs | 9 +- .../Compute/ComputeApiTest.cs | 12 +- .../EventsTestLocalListeners.cs | 41 +- .../IgniteConfigurationTest.cs | 6 +- .../dotnet/Apache.Ignite.Core.Tests/JavaServer.cs | 24 +- .../Apache.Ignite.Core.Tests/ProjectFilesTest.cs | 6 +- .../Services/CallPlatformServiceTest.cs | 345 +++++++ .../Apache.Ignite.Core.Tests/TestUtils.Common.cs | 43 + .../Apache.Ignite.Core/Apache.Ignite.Core.csproj | 13 +- .../Client/Cache/CacheClientConfiguration.cs | 8 +- .../Client/Compute/IComputeClient.cs | 85 ++ .../Client/IClientClusterGroup.cs | 9 + .../IClientConnection.cs} | 37 +- .../Apache.Ignite.Core/Client/IIgniteClient.cs | 12 + .../Apache.Ignite.Core/Impl/Binary/BinaryReader.cs | 8 +- .../Apache.Ignite.Core/Impl/Binary/BinaryTypeId.cs | 3 + .../IgniteBiTuple.cs} | 35 +- .../Apache.Ignite.Core/Impl/Binary/Marshaller.cs | 1 + .../Impl/Client/Cache/CacheClient.cs | 8 +- .../Cache/ClientCacheConfigurationSerializer.cs | 29 +- .../{ClientFlags.cs => ClientBitmaskFeature.cs} | 16 +- .../Impl/Client/ClientConnection.cs | 71 ++ .../Impl/Client/ClientContextBase.cs | 31 +- ...entRequestContext.cs => ClientDiscoveryNode.cs} | 56 +- .../Impl/Client/ClientFailoverSocket.cs | 395 ++++++-- .../Impl/Client/ClientFeatures.cs | 228 +++++ .../Apache.Ignite.Core/Impl/Client/ClientFlags.cs | 3 +- .../Impl/Client/ClientNotificationHandler.cs | 137 +++ .../Apache.Ignite.Core/Impl/Client/ClientOp.cs | 18 +- .../Impl/Client/ClientOpExtensions.cs | 71 -- .../Impl/Client/ClientRequestContext.cs | 7 +- .../Impl/Client/ClientResponseContext.cs | 7 +- .../Apache.Ignite.Core/Impl/Client/ClientSocket.cs | 262 ++++- .../Apache.Ignite.Core/Impl/Client/ClientUtils.cs | 58 -- .../Impl/Client/Cluster/ClientCluster.cs | 7 +- .../Impl/Client/Cluster/ClientClusterGroup.cs | 27 +- .../Impl/Client/Compute/ComputeClient.cs | 220 ++++ .../ComputeClientFlags.cs} | 17 +- .../Apache.Ignite.Core/Impl/Client/Endpoint.cs | 43 +- .../Apache.Ignite.Core/Impl/Client/IgniteClient.cs | 30 +- .../platforms/dotnet/Apache.Ignite.DotNetCore.sln | 6 + modules/platforms/dotnet/DEVNOTES.txt | 4 +- modules/platforms/dotnet/build.ps1 | 2 +- .../http/jetty/GridJettyObjectMapper.java | 35 +- modules/yardstick/README.txt | 1 + .../benchmark-cache-pegereplacements.properties | 83 ++ .../config/ignite-localhost-persistence-config.xml | 15 +- .../cache/IgnitePutGetWithPageReplacements.java | 172 ++++ .../zk/internal/ZookeeperDiscoveryImpl.java | 2 +- .../internal/ZookeeperDiscoverySpiSslTestBase.java | 7 +- packaging/deb/changelog | 12 + packaging/rpm/apache-ignite.spec | 8 +- parent/pom.xml | 1 + 502 files changed, 21567 insertions(+), 6578 deletions(-) diff --cc modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/ConnectionProperties.java index 6aea74b,d8ddfc2..b74da99 --- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/ConnectionProperties.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/ConnectionProperties.java @@@ -528,14 -529,33 +529,45 @@@ public interface ConnectionProperties public void setUserAttributesFactory(String sslFactory); /** + * Any JDBC features could be force disabled. + * See {@link JdbcThinFeature}. + * The string should contain enumeration of feature names, separated by the comma. + * + * @return disabled features. + */ + public String disabledFeatures(); + + /** + * @param features Disabled features. See {@link JdbcThinFeature}. + * The string should contain enumeration of feature names, separated by the comma. + */ + public void disabledFeatures(String features); + + /** + * Get keep binary configuration flag. + * + * @return Keep binary configuration flag. + */ + public boolean isKeepBinary(); + + /** + * Set to {@code true} to keep binary objects in binary form. + * + * <p> Defaults is {@code false}. + ** + * @param keepBinary Whether to keep binary objects in binary form. + */ + public void setKeepBinary(boolean keepBinary); ++ ++ /** + * @return {@code True} if experimental query engine is enabled for a connection. + */ + public boolean isUseExperimentalQueryEngine(); + + /** + * Sets use experimental query engine flag. + * + * @param useExperimentalQueryEngine {@code True} if experimental query engine is enabled for a connection. + */ + public void setUseExperimentalQueryEngine(boolean useExperimentalQueryEngine); } diff --cc modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/ConnectionPropertiesImpl.java index 501ec4e,d9000648..00ff3e0 --- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/ConnectionPropertiesImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/ConnectionPropertiesImpl.java @@@ -233,10 -234,30 +234,35 @@@ public class ConnectionPropertiesImpl i " Zero means there is no limits.", 0, false, 0, Integer.MAX_VALUE); + /** Disabled features. */ + private StringProperty disabledFeatures = new StringProperty("disabledFeatures", + "Sets enumeration of features to force disable its.", null, null, false, new PropertyValidator() { + @Override public void validate(String val) throws SQLException { + if (val == null) + return; + + String[] features = val.split("\\W+"); + + for (String f : features) { + try { + JdbcThinFeature.valueOf(f.toUpperCase()); + } + catch (IllegalArgumentException e) { + throw new SQLException("Unknown feature: " + f); + } + } + } + }); + + /** Keep binary objects in binary form. */ + private BooleanProperty keepBinary = new BooleanProperty("keepBinary", + "Whether to keep binary objects in binary form.", false, false); + ++ + /** Whether an experimental SQL engine enabled for a connection. */ + private BooleanProperty useExperimentalQueryEngine = new BooleanProperty("useExperimentalQueryEngine", + "Enables experimental query engine.", false, false); + /** Properties array. */ private final ConnectionProperty[] propsArray = { distributedJoins, enforceJoinOrder, collocated, replicatedOnly, autoCloseServerCursor, @@@ -254,7 -275,8 +280,9 @@@ partitionAwarenessPartDistributionsCacheSize, qryTimeout, connTimeout, + disabledFeatures, - keepBinary ++ keepBinary, + useExperimentalQueryEngine }; /** {@inheritDoc} */ @@@ -644,15 -666,25 +672,35 @@@ } /** {@inheritDoc} */ + @Override public String disabledFeatures() { + return disabledFeatures.value(); + } + + /** {@inheritDoc} */ + @Override public void disabledFeatures(String features) { + disabledFeatures.setValue(features); + } + + /** {@inheritDoc} */ + @Override public boolean isKeepBinary() { + return keepBinary.value(); + } + + /** {@inheritDoc} */ + @Override public void setKeepBinary(boolean keepBinary) { + this.keepBinary.setValue(keepBinary); + } + ++ /** {@inheritDoc} */ + @Override public boolean isUseExperimentalQueryEngine() { + return useExperimentalQueryEngine.value(); + } + + /** {@inheritDoc} */ + @Override public void setUseExperimentalQueryEngine(boolean useExperimentalQueryEngine) { + this.useExperimentalQueryEngine.setValue(useExperimentalQueryEngine); + } + /** * @param url URL connection. * @param props Environment properties. diff --cc modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinTcpIo.java index 735184f,9129666..6de4a41 --- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinTcpIo.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinTcpIo.java @@@ -89,11 -94,11 +94,14 @@@ public class JdbcThinTcpIo /** Version 2.8.0. */ private static final ClientListenerProtocolVersion VER_2_8_0 = ClientListenerProtocolVersion.create(2, 8, 0); + /** Version 2.8.1. Adds features flags support. */ + private static final ClientListenerProtocolVersion VER_2_8_1 = ClientListenerProtocolVersion.create(2, 8, 1); + + /** Version 2.9.0. */ + private static final ClientListenerProtocolVersion VER_2_9_0 = ClientListenerProtocolVersion.create(2, 9, 0); + /** Current version. */ - private static final ClientListenerProtocolVersion CURRENT_VER = VER_2_8_1; + private static final ClientListenerProtocolVersion CURRENT_VER = VER_2_9_0; /** Initial output stream capacity for handshake. */ private static final int HANDSHAKE_MSG_SIZE = 13; @@@ -291,9 -306,9 +309,6 @@@ } } - if (ver.compareTo(VER_2_9_0) >= 0) - writer.writeBoolean(connProps.isUseExperimentalQueryEngine()); - if (ver.compareTo(VER_2_8_1) >= 0) - writer.writeByteArray(ThinProtocolFeature.featuresAsBytes(enabledFeatures())); -- if (!F.isEmpty(connProps.getUsername())) { assert ver.compareTo(VER_2_5_0) >= 0 : "Authentication is supported since 2.5"; diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcConnectionContext.java index 6ec381c,0f8fdc1..7b4b62f --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcConnectionContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcConnectionContext.java @@@ -64,11 -65,11 +65,14 @@@ public class JdbcConnectionContext exte /** Version 2.8.0: adds query id in order to implement cancel feature, partition awareness support: IEP-23.*/ static final ClientListenerProtocolVersion VER_2_8_0 = ClientListenerProtocolVersion.create(2, 8, 0); - /** Version 2.8.0: adds experimental query engine support */ + /** Version 2.8.1: adds features flags support.*/ + static final ClientListenerProtocolVersion VER_2_8_1 = ClientListenerProtocolVersion.create(2, 8, 1); + ++ /** Version 2.9.0: adds experimental query engine support */ + static final ClientListenerProtocolVersion VER_2_9_0 = ClientListenerProtocolVersion.create(2, 9, 0); + /** Current version. */ - public static final ClientListenerProtocolVersion CURRENT_VER = VER_2_8_1; + public static final ClientListenerProtocolVersion CURRENT_VER = VER_2_9_0; /** Supported versions. */ private static final Set<ClientListenerProtocolVersion> SUPPORTED_VERS = new HashSet<>(); @@@ -178,9 -183,12 +187,15 @@@ userAttrs = reader.readMap(); } + if (ver.compareTo(VER_2_8_1) >= 0) { + byte[] cliFeatures = reader.readByteArray(); + + features = JdbcThinFeature.enumSet(cliFeatures); + } + + if (ver.compareTo(VER_2_9_0) >= 0) + useExperimentalQueryEngine = reader.readBoolean(); + if (ver.compareTo(VER_2_5_0) >= 0) { String user = null; String passwd = null; diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcRequestHandler.java index b0c80a2,a2270c8..7a49631 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcRequestHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcRequestHandler.java @@@ -38,9 -38,11 +38,12 @@@ import org.apache.ignite.cache.query.Bu import org.apache.ignite.cache.query.FieldsQueryCursor; import org.apache.ignite.cache.query.QueryCancelledException; import org.apache.ignite.cluster.ClusterNode; +import org.apache.ignite.internal.GridComponent; import org.apache.ignite.internal.IgniteInterruptedCheckedException; import org.apache.ignite.internal.IgniteVersionUtils; + import org.apache.ignite.internal.ThinProtocolFeature; + import org.apache.ignite.internal.binary.BinaryContext; + import org.apache.ignite.internal.binary.BinaryTypeImpl; import org.apache.ignite.internal.binary.BinaryWriterExImpl; import org.apache.ignite.internal.jdbc.thin.JdbcThinPartitionAwarenessMappingGroup; import org.apache.ignite.internal.processors.affinity.AffinityAssignment; @@@ -51,9 -53,9 +54,10 @@@ import org.apache.ignite.internal.proce import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor; import org.apache.ignite.internal.processors.cache.GridCacheContext; import org.apache.ignite.internal.processors.cache.QueryCursorImpl; + import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl; import org.apache.ignite.internal.processors.cache.mvcc.MvccUtils; import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode; +import org.apache.ignite.internal.processors.cache.query.QueryCursorEx; import org.apache.ignite.internal.processors.cache.query.SqlFieldsQueryEx; import org.apache.ignite.internal.processors.odbc.ClientListenerProtocolVersion; import org.apache.ignite.internal.processors.odbc.ClientListenerRequest;
