Merge remote-tracking branch 'remotes/origin/master' into ignite-3478 # Conflicts: # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/3ad260d2 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3ad260d2 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3ad260d2 Branch: refs/heads/ignite-3478 Commit: 3ad260d24575321650570c7e8136b69c5d5bf02f Parents: f6b0148 1f2f872 Author: sboikov <[email protected]> Authored: Fri Sep 22 14:17:35 2017 +0300 Committer: sboikov <[email protected]> Committed: Fri Sep 22 14:17:35 2017 +0300 ---------------------------------------------------------------------- README.md | 149 +++-- .../jdbc/suite/IgniteJdbcDriverTestSuite.java | 3 + .../jdbc/thin/JdbcThinErrorsSelfTest.java | 31 + .../thin/JdbcThinSelectAfterAlterTable.java | 173 +++++ .../apache/ignite/IgniteSystemProperties.java | 10 + .../PersistentStoreConfiguration.java | 34 +- .../internal/GridEventConsumeHandler.java | 9 +- .../IgniteDiagnosticPrepareContext.java | 4 +- .../internal/jdbc/thin/JdbcThinStatement.java | 7 +- .../managers/deployment/GridDeploymentInfo.java | 1 + .../deployment/GridDeploymentInfoBean.java | 21 +- .../discovery/GridDiscoveryManager.java | 26 +- .../pagemem/store/IgnitePageStoreManager.java | 4 +- .../cache/CacheAffinitySharedManager.java | 4 +- .../processors/cache/CacheMetricsImpl.java | 2 +- .../processors/cache/GridCacheAdapter.java | 18 +- .../cache/GridCacheDeploymentManager.java | 54 +- .../processors/cache/GridCacheIoManager.java | 9 +- .../processors/cache/GridCacheMapEntry.java | 9 +- .../processors/cache/GridCacheMvccManager.java | 5 +- .../GridDistributedTxRemoteAdapter.java | 2 +- .../dht/GridDhtPartitionTopologyImpl.java | 13 +- .../distributed/dht/GridDhtTxFinishFuture.java | 2 +- .../cache/distributed/dht/GridDhtTxLocal.java | 6 +- .../distributed/dht/GridDhtTxLocalAdapter.java | 4 +- .../colocated/GridDhtColocatedLockFuture.java | 79 ++- .../GridDhtPartitionsExchangeFuture.java | 2 +- .../preloader/GridDhtPartitionsFullMessage.java | 2 +- .../distributed/near/GridNearLockFuture.java | 116 ++-- .../near/GridNearOptimisticTxPrepareFuture.java | 3 +- .../near/GridNearTransactionalCache.java | 3 - .../near/GridNearTxFastFinishFuture.java | 82 +++ .../near/GridNearTxFinishFuture.java | 27 +- .../cache/distributed/near/GridNearTxLocal.java | 309 ++++++--- .../distributed/near/NearTxFinishFuture.java | 5 + .../GridCacheDatabaseSharedManager.java | 55 +- .../persistence/GridCacheOffheapManager.java | 2 +- .../IgniteCacheDatabaseSharedManager.java | 2 +- .../cache/persistence/file/AsyncFileIO.java | 218 ++++++ .../persistence/file/AsyncFileIOFactory.java | 52 ++ .../cache/persistence/file/FileIOFactory.java | 25 +- .../cache/persistence/file/FilePageStore.java | 7 +- .../persistence/file/FilePageStoreManager.java | 7 +- .../file/FileVersionCheckingFactory.java | 2 +- .../persistence/file/RandomAccessFileIO.java | 48 +- .../file/RandomAccessFileIOFactory.java | 14 +- .../persistence/pagemem/PageMemoryImpl.java | 96 ++- .../persistence/pagemem/PagesWriteThrottle.java | 104 +++ .../cache/persistence/tree/io/DataPageIO.java | 6 +- .../cache/persistence/tree/io/IOVersions.java | 3 + .../cache/persistence/tree/io/PageIO.java | 2 +- .../wal/AbstractWalRecordsIterator.java | 2 +- .../cache/persistence/wal/FileInput.java | 7 + .../wal/FileWriteAheadLogManager.java | 8 +- .../reader/StandaloneWalRecordsIterator.java | 4 +- .../continuous/CacheContinuousQueryHandler.java | 9 +- .../cache/transactions/IgniteInternalTx.java | 2 +- .../cache/transactions/IgniteTxAdapter.java | 13 +- .../cache/transactions/IgniteTxHandler.java | 26 +- .../transactions/IgniteTxLocalAdapter.java | 10 +- .../cache/transactions/IgniteTxLocalEx.java | 7 +- .../cache/transactions/IgniteTxManager.java | 80 +-- .../odbc/odbc/OdbcConnectionContext.java | 6 +- .../processors/odbc/odbc/OdbcMessageParser.java | 17 +- .../odbc/odbc/OdbcQueryExecuteBatchResult.java | 16 +- .../odbc/odbc/OdbcRequestHandler.java | 54 +- .../processors/odbc/odbc/OdbcUtils.java | 24 +- .../processors/query/GridQueryProcessor.java | 30 +- .../timeout/GridTimeoutProcessor.java | 23 +- .../internal/util/future/GridFutureAdapter.java | 16 + .../ignite/spi/discovery/tcp/ServerImpl.java | 3 +- .../tcp/internal/TcpDiscoveryNode.java | 4 +- .../resources/META-INF/classnames.properties | 2 + .../processors/cache/CacheTxFastFinishTest.java | 9 +- .../cache/IgniteTxConfigCacheSelfTest.java | 14 + .../IgniteCacheThreadLocalTxTest.java | 223 +++++++ .../IgniteOptimisticTxSuspendResumeTest.java | 6 +- ...ionedMultiNodeLongTxTimeout2FullApiTest.java | 34 + .../IgnitePdsContinuousRestartTest.java | 45 +- ...ousRestartTestWithSharedGroupAndIndexes.java | 67 ++ ...ckpointSimulationWithRealCpDisabledTest.java | 4 +- .../file/IgnitePdsThreadInterruptionTest.java | 205 ++++++ .../db/wal/IgniteWalFlushFailoverTest.java | 22 +- .../db/wal/crc/IgniteDataIntegrityTests.java | 39 +- .../pagemem/BPlusTreePageMemoryImplTest.java | 4 +- .../BPlusTreeReuseListPageMemoryImplTest.java | 3 +- .../MetadataStoragePageMemoryImplTest.java | 4 +- .../pagemem/NoOpPageStoreManager.java | 2 +- .../pagemem/PageMemoryImplNoLoadTest.java | 4 +- .../persistence/pagemem/PageMemoryImplTest.java | 4 +- .../pagemem/PagesWriteThrottleSandboxTest.java | 264 ++++++++ .../pagemem/PagesWriteThrottleSmokeTest.java | 327 +++++++++ .../TxRollbackOnTimeoutNearCacheTest.java | 28 + ...ollbackOnTimeoutNoDeadlockDetectionTest.java | 47 ++ .../transactions/TxRollbackOnTimeoutTest.java | 655 +++++++++++++++++++ .../IgniteCacheFullApiSelfTestSuite.java | 2 + .../testsuites/IgniteCacheTestSuite6.java | 10 + .../ignite/testsuites/IgnitePdsTestSuite.java | 4 + .../ignite/testsuites/IgnitePdsTestSuite2.java | 3 + .../development/utils/IgniteWalConverter.java | 1 - .../hadoop/impl/HadoopTxConfigCacheTest.java | 4 +- .../processors/query/h2/IgniteH2Indexing.java | 9 + .../processors/query/h2/opt/GridH2Table.java | 2 + .../IgnitePersistentStoreSchemaLoadTest.java | 237 ++++--- .../IgnitePdsWithIndexingCoreTestSuite.java | 2 + modules/platforms/cpp/README.md | 222 +++++++ modules/platforms/cpp/odbc-test/Makefile.am | 1 + .../cpp/odbc-test/project/vs/odbc-test.vcxproj | 1 + .../project/vs/odbc-test.vcxproj.filters | 3 + .../platforms/cpp/odbc-test/src/errors_test.cpp | 289 ++++++++ .../platforms/cpp/odbc-test/src/parser_test.cpp | 4 +- .../cpp/odbc-test/src/queries_test.cpp | 16 +- modules/platforms/cpp/odbc/include/Makefile.am | 1 + .../cpp/odbc/include/ignite/odbc/common_types.h | 131 +++- .../ignite/odbc/diagnostic/diagnosable.h | 9 + .../odbc/diagnostic/diagnosable_adapter.h | 8 + .../cpp/odbc/include/ignite/odbc/message.h | 48 +- .../cpp/odbc/include/ignite/odbc/odbc_error.h | 94 +++ .../cpp/odbc/include/ignite/odbc/parser.h | 35 +- .../platforms/cpp/odbc/project/vs/odbc.vcxproj | 1 + .../cpp/odbc/project/vs/odbc.vcxproj.filters | 3 + modules/platforms/cpp/odbc/src/common_types.cpp | 51 ++ modules/platforms/cpp/odbc/src/connection.cpp | 25 +- .../odbc/src/diagnostic/diagnosable_adapter.cpp | 8 + .../odbc/src/diagnostic/diagnostic_record.cpp | 105 ++- modules/platforms/cpp/odbc/src/message.cpp | 37 +- .../cpp/odbc/src/query/batch_query.cpp | 13 +- .../odbc/src/query/column_metadata_query.cpp | 11 +- .../platforms/cpp/odbc/src/query/data_query.cpp | 31 +- .../cpp/odbc/src/query/table_metadata_query.cpp | 11 +- modules/platforms/cpp/odbc/src/statement.cpp | 11 +- .../Examples/Example.cs | 6 + modules/platforms/dotnet/README.md | 237 +++++-- .../Datagrid/EntryProcessorExample.cs | 4 + .../app/modules/agent/AgentManager.service.js | 8 +- .../ignite/console/demo/AgentMetadataDemo.java | 7 + 136 files changed, 5152 insertions(+), 797 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java index b2f2774,9c7451e..03b7b6e --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java @@@ -1415,11 -1415,9 +1415,11 @@@ public class GridDhtPartitionsExchangeF cacheCtx.continuousQueries().flushBackupQueue(res); } - } + } if (err == null) { + cctx.coordinators().assignCoordinator(exchCtx.events().discoveryCache()); + if (centralizedAff) { assert !exchCtx.mergeExchanges(); http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java index b1748b8,b6a8855..92f6b86 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java @@@ -136,13 -135,11 +136,18 @@@ public final class GridNearTxFinishFutu } } + /** {@inheritDoc} */ + @Override public boolean commit() { + return commit; + } + + /** + * @return Cache context. + */ + GridCacheSharedContext<K, V> context() { + return cctx; + } + /** {@inheritDoc} */ @Override public IgniteUuid futureId() { return futId; @@@ -390,9 -394,14 +402,15 @@@ fut.getClass() == CheckRemoteTxMiniFuture.class; } + /** + * Initializes future. + * + * @param commit Commit flag. + * @param clearThreadMap If {@code true} removes {@link GridNearTxLocal} from thread map. + */ @SuppressWarnings("ForLoopReplaceableByForEach") + /** {@inheritDoc} */ - public void finish(boolean commit) { + public void finish(boolean commit, boolean clearThreadMap) { if (tx.onNeedCheckBackup()) { assert tx.onePhaseCommit(); @@@ -405,28 -414,8 +423,27 @@@ return; } + if (!commit && tx.mvccCoordinatorVersion() != null) { + ClusterNode crd = cctx.coordinators().coordinator(tx.topologyVersion()); + + assert crd != null; + + cctx.coordinators().ackTxRollback(crd, tx.nearXidVersion()); + } + try { - if (tx.localFinish(commit) || (!commit && tx.state() == UNKNOWN)) { + if (tx.localFinish(commit, clearThreadMap) || (!commit && tx.state() == UNKNOWN)) { + GridLongList waitTxs = tx.mvccWaitTransactions(); + + if (waitTxs != null) { + ClusterNode crd = cctx.coordinators().coordinator(tx.topologyVersion()); + + assert crd != null; + + IgniteInternalFuture fut = cctx.coordinators().waitTxsFuture(crd, waitTxs); + + add(fut); + } - if ((tx.onePhaseCommit() && needFinishOnePhase(commit)) || (!tx.onePhaseCommit() && mappings != null)) { if (mappings.single()) { GridDistributedTxMapping mapping = mappings.singleMapping(); http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java index 94224ca,132c754..9223c9f --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java @@@ -23,9 -23,9 +23,14 @@@ import org.apache.ignite.internal.proce /** * */ -public interface NearTxFinishFuture extends IgniteInternalFuture<IgniteInternalTx> { +public interface NearTxFinishFuture extends IgniteInternalFuture<IgniteInternalTx> { /** + * @return Commit flag. + */ + boolean commit(); ++ ++ /** + * @param commit {@code True} to commit, otherwise rollback. + */ + public void finish(boolean commit); } http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/PageIO.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java index 6445304,9e06d9d..091ecc5 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java @@@ -635,9 -634,4 +635,9 @@@ public interface IgniteInternalTx * @param e Commit error. */ public void commitError(Throwable e); + + /** + * @param mvccVer Version. + */ + public void mvccCoordinatorVersion(MvccCoordinatorVersion mvccVer); - } + } http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java index fd36fca,b5178b5..ee7dfd2 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java @@@ -374,15 -370,13 +374,22 @@@ public abstract class IgniteTxAdapter e consistentIdMapper = new ConsistentIdMapper(cctx.discovery()); } + public MvccCoordinatorVersion mvccCoordinatorVersion() { + return mvccVer; + } + + /** {@inheritDoc} */ + @Override public void mvccCoordinatorVersion(MvccCoordinatorVersion mvccVer) { + this.mvccVer = mvccVer; + } + + /** + * @return Shared cache context. + */ + public GridCacheSharedContext<?, ?> context() { + return cctx; + } + /** {@inheritDoc} */ @Override public boolean localResult() { assert originatingNodeId() != null; http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/BPlusTreePageMemoryImplTest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/BPlusTreeReuseListPageMemoryImplTest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/MetadataStoragePageMemoryImplTest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImplNoLoadTest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3ad260d2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImplTest.java ----------------------------------------------------------------------
