Merge branch 'ignite-5075-cc' into ignite-5075-cc-debug # Conflicts: # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEntry.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBuffer.java
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7e56f3ae Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7e56f3ae Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7e56f3ae Branch: refs/heads/ignite-5075-cc-debug Commit: 7e56f3ae8cb616018cf267e9f4f16e66482f7ea5 Parents: 58919c5 be43bf8 Author: sboikov <[email protected]> Authored: Fri May 26 16:45:51 2017 +0300 Committer: sboikov <[email protected]> Committed: Fri May 26 16:45:51 2017 +0300 ---------------------------------------------------------------------- doap_Ignite.rdf | 2 + .../examples/datagrid/CacheQueryExample.java | 2 +- .../jdbc/suite/IgniteJdbcDriverTestSuite.java | 3 + .../jdbc/thin/JdbcConnectionSelfTest.java | 195 ++ .../src/main/java/org/apache/ignite/Ignite.java | 18 +- .../org/apache/ignite/IgniteJdbcThinDriver.java | 312 +++ .../configuration/CacheConfiguration.java | 5 +- .../MemoryPolicyConfiguration.java | 96 +- .../ignite/internal/GridKernalContext.java | 8 +- .../ignite/internal/GridKernalContextImpl.java | 12 +- .../org/apache/ignite/internal/IgniteEx.java | 27 + .../apache/ignite/internal/IgniteKernal.java | 42 +- .../internal/binary/BinaryWriterExImpl.java | 16 +- .../internal/jdbc/thin/JdbcConnection.java | 529 +++++ .../ignite/internal/jdbc/thin/JdbcTcpIo.java | 207 ++ .../ignite/internal/jdbc2/JdbcConnection.java | 3 +- .../managers/communication/GridIoManager.java | 380 +++- .../communication/IgniteIoTestMessage.java | 362 ++- .../managers/indexing/GridIndexingManager.java | 19 +- .../processors/cache/ClusterCachesInfo.java | 10 +- .../processors/cache/ExchangeActions.java | 2 +- .../processors/cache/GridCacheIoManager.java | 6 +- .../processors/cache/GridCacheMapEntry.java | 7 +- .../GridCachePartitionExchangeManager.java | 2 +- .../processors/cache/GridCacheProcessor.java | 47 +- .../processors/cache/IgniteCacheProxy.java | 15 +- .../IgniteCacheDatabaseSharedManager.java | 40 + .../cache/database/MemoryMetricsImpl.java | 31 +- .../cache/database/tree/BPlusTree.java | 64 +- .../dht/GridClientPartitionTopology.java | 31 +- .../dht/GridDhtPartitionTopology.java | 9 +- .../dht/GridDhtPartitionTopologyImpl.java | 59 +- .../GridDhtPartitionsExchangeFuture.java | 51 +- .../cache/query/GridCacheQueryManager.java | 32 +- .../continuous/CacheContinuousQueryEntry.java | 73 +- .../CacheContinuousQueryEventBuffer.java | 224 +- .../continuous/CacheContinuousQueryHandler.java | 4 +- .../continuous/CacheContinuousQueryManager.java | 16 +- .../CacheContinuousQueryPartitionRecovery.java | 2 +- .../processors/odbc/OdbcNioListener.java | 242 -- .../internal/processors/odbc/OdbcProcessor.java | 199 -- .../odbc/SqlListenerAbstractMessageParser.java | 265 +++ .../odbc/SqlListenerAbstractObjectReader.java | 137 ++ .../odbc/SqlListenerAbstractObjectWriter.java | 111 + .../processors/odbc/SqlListenerNioListener.java | 263 +++ .../processors/odbc/SqlListenerProcessor.java | 191 ++ .../odbc/SqlListenerRequestHandlerImpl.java | 494 ++++ .../processors/odbc/jdbc/JdbcMessageParser.java | 50 + .../processors/odbc/jdbc/JdbcObjectReader.java | 33 + .../processors/odbc/jdbc/JdbcObjectWriter.java | 33 + .../processors/odbc/odbc/OdbcMessageParser.java | 249 +-- .../processors/odbc/odbc/OdbcObjectReader.java | 33 + .../processors/odbc/odbc/OdbcObjectWriter.java | 32 + .../odbc/odbc/OdbcRequestHandler.java | 513 ----- .../processors/query/GridQueryIndexing.java | 96 +- .../processors/query/GridQueryProcessor.java | 232 +- .../processors/query/QueryIndexKey.java | 20 +- .../query/QueryTypeDescriptorImpl.java | 16 +- .../processors/query/QueryTypeIdKey.java | 26 +- .../processors/query/QueryTypeNameKey.java | 12 +- .../internal/processors/query/QueryUtils.java | 14 +- .../schema/SchemaIndexCacheVisitorImpl.java | 12 +- .../operation/SchemaAbstractOperation.java | 2 +- .../handlers/GridRestCommandHandlerAdapter.java | 3 + .../handlers/cache/GridCacheCommandHandler.java | 10 +- .../handlers/query/QueryCommandHandler.java | 13 +- .../spi/indexing/IndexingQueryFilter.java | 8 +- .../apache/ignite/spi/indexing/IndexingSpi.java | 17 +- .../spi/indexing/noop/NoopIndexingSpi.java | 6 +- ...iteMarshallerCacheClassNameConflictTest.java | 9 +- .../IgniteTxExceptionAbstractSelfTest.java | 6 +- .../cache/MemoryPolicyConfigValidationTest.java | 62 +- .../cache/query/IndexingSpiQuerySelfTest.java | 14 +- .../cache/query/IndexingSpiQueryTxSelfTest.java | 6 +- .../CacheContinuousQueryEventBufferTest.java | 7 +- ...eCacheContinuousQueryImmutableEntryTest.java | 4 +- .../processors/igfs/IgfsIgniteMock.java | 24 + .../odbc/OdbcProcessorValidationSelfTest.java | 182 -- .../SqlListenerProcessorValidationSelfTest.java | 184 ++ .../ignite/testframework/GridTestUtils.java | 8 +- .../config/GridTestProperties.java | 3 +- .../ignite/testframework/junits/IgniteMock.java | 5 + .../junits/multijvm/IgniteProcessProxy.java | 18 + .../ignite/testsuites/IgniteBasicTestSuite.java | 17 +- .../testsuites/IgniteBinaryBasicTestSuite.java | 75 +- ...iteBinarySimpleNameMapperBasicTestSuite.java | 3 +- .../query/h2/DmlStatementsProcessor.java | 71 +- .../query/h2/GridH2ResultSetIterator.java | 191 -- .../query/h2/H2ConnectionWrapper.java | 67 + .../processors/query/h2/H2DatabaseType.java | 161 ++ .../processors/query/h2/H2FieldsIterator.java | 50 + .../processors/query/h2/H2KeyValueIterator.java | 48 + .../query/h2/H2ResultSetIterator.java | 191 ++ .../processors/query/h2/H2RowDescriptor.java | 479 ++++ .../internal/processors/query/h2/H2Schema.java | 135 ++ .../processors/query/h2/H2SqlFieldMetadata.java | 111 + .../processors/query/h2/H2StatementCache.java | 73 + .../processors/query/h2/H2TableDescriptor.java | 345 +++ .../processors/query/h2/H2TableEngine.java | 89 + .../query/h2/H2TwoStepCachedQuery.java | 49 + .../query/h2/H2TwoStepCachedQueryKey.java | 107 + .../internal/processors/query/h2/H2Utils.java | 299 +++ .../processors/query/h2/IgniteH2Indexing.java | 2112 +++--------------- .../query/h2/database/H2PkHashIndex.java | 4 +- .../query/h2/database/H2TreeIndex.java | 4 +- .../query/h2/ddl/DdlStatementsProcessor.java | 55 +- .../query/h2/opt/GridH2IndexBase.java | 10 +- .../processors/query/h2/opt/GridH2Table.java | 2 +- .../query/h2/opt/GridH2TreeIndex.java | 2 +- .../query/h2/opt/GridLuceneIndex.java | 15 +- .../query/h2/sql/GridSqlCreateTable.java | 153 ++ .../query/h2/sql/GridSqlDropTable.java | 79 + .../query/h2/sql/GridSqlQueryParser.java | 260 +++ .../query/h2/sql/GridSqlQuerySplitter.java | 4 +- .../query/h2/twostep/GridMapQueryExecutor.java | 8 +- .../h2/twostep/GridReduceQueryExecutor.java | 39 +- .../cache/GridCacheCrossCacheQuerySelfTest.java | 12 +- .../DynamicIndexAbstractBasicSelfTest.java | 18 +- .../DynamicIndexAbstractConcurrentSelfTest.java | 8 +- .../cache/index/H2DynamicTableSelfTest.java | 320 +++ .../query/IgniteQueryDedicatedPoolTest.java | 6 +- .../h2/GridIndexingSpiAbstractSelfTest.java | 140 +- .../query/h2/sql/GridQueryParsingTest.java | 286 ++- .../IgniteCacheQuerySelfTestSuite.java | 2 + .../cpp/odbc/include/ignite/odbc/message.h | 10 + .../Impl/CacheFieldsQueryExecutor.cs | 39 - .../Impl/CacheQueryableBase.cs | 14 +- .../Impl/ICacheQueryableInternal.cs | 6 - .../org/apache/ignite/IgniteSpringBean.java | 7 + .../yardstick/IgniteBenchmarkArguments.java | 11 + .../org/apache/ignite/yardstick/IgniteNode.java | 5 + .../apache/ignite/yardstick/io/FileUtils.java | 64 + 132 files changed, 8742 insertions(+), 4341 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/7e56f3ae/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/7e56f3ae/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBuffer.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBuffer.java index 5346144,7d33614..d0950ef --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBuffer.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryEventBuffer.java @@@ -28,9 -27,8 +27,10 @@@ import java.util.concurrent.ConcurrentS import java.util.concurrent.atomic.AtomicReference; import org.apache.ignite.IgniteSystemProperties; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; +import org.apache.ignite.spi.communication.tcp.TestDebugLog; +import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; import org.jetbrains.annotations.Nullable; + import org.jsr166.ConcurrentLinkedDeque8; /** * @@@ -85,27 -83,31 +85,39 @@@ public class CacheContinuousQueryEventB Batch batch = curBatch.get(); if (batch != null) - entries = batch.backupFlushEntries(); + ret = batch.flushCurrentEntries(); + + int size = backupQ.sizex(); - if (!backupQ.isEmpty()) { - if (entries != null) - backupQ.addAll(entries); + if (size > 0) { + if (ret == null) + ret = new ArrayList<>(); + + for (int i = 0; i < size; i++) { + CacheContinuousQueryEntry e = backupQ.pollFirst(); + + if (e != null) + ret.add(e); + else + break; + } + } - ret = this.backupQ; + if (!pending.isEmpty()) { + if (ret == null) + ret = new ArrayList<>(); - backupQ = new ConcurrentLinkedDeque<>(); + ret.addAll(pending.values()); } - else - ret = entries; + if (ret != null) { + for (CacheContinuousQueryEntry e : ret) + TestDebugLog.addEntryMessage(part, + e.updateCounter(), + "filtered " + e.filteredCount() + + " reset backup"); + } + return ret; } @@@ -145,33 -147,29 +157,39 @@@ private Object process0(long cntr, CacheContinuousQueryEntry entry, boolean backup) { assert cntr >= 0 : cntr; - Batch batch = initBatch(entry.topologyVersion()); + Batch batch; + Object res = null; - if (batch == null || cntr < batch.startCntr) { - if (backup) - backupQ.add(entry); + for (;;) { + batch = initBatch(entry.topologyVersion()); + + if (batch == null || cntr < batch.startCntr) { + if (backup) + backupQ.add(entry); - return entry; - } + TestDebugLog.addEntryMessage(part, + cntr, + "buffer rcd small start=" + batch.startCntr + + " cntr=" + cntr + + ", backup=" + backup + - " topVer=" + ((CacheContinuousQueryEntry)entry).topologyVersion()); - - return entry; ++ " topVer=" + ((CacheContinuousQueryEntry)entry).topologyVersion());return entry; + } - Object res = null; + if (cntr <= batch.endCntr) { + res = batch.processEntry0(null, cntr, entry, backup); - if (cntr <= batch.endCntr) - res = batch.processEvent0(null, cntr, entry, backup); - else { - if (res == RETRY) ++ if ( ++ res = = RETRY) + continue; + } - else - pending.put(cntr, entry); ++ else{ + TestDebugLog.addEntryMessage(part, + cntr, + "buffer add pending start=" + batch.startCntr + + " cntr=" + cntr + - " topVer=" + ((CacheContinuousQueryEntry)entry).topologyVersion()); - pending.put(cntr, entry); ++ " topVer=" + ((CacheContinuousQueryEntry)entry).topologyVersion());pending.put(cntr, entry);} + + break; } Batch batch0 = curBatch.get(); @@@ -200,19 -198,22 +218,22 @@@ if (batch != null) return batch; - long curCntr = currentPartitionCounter(); + for (;;) { + long curCntr = currentPartitionCounter(); - if (curCntr == -1) - return null; + if (curCntr == -1) + return null; - TestDebugLog.addEntryMessage(part, curCntr, "created batch"); - batch = new Batch(curCntr + 1, 0L, new CacheContinuousQueryEntry[BUF_SIZE], topVer); ++ TestDebugLog.addEntryMessage(part, curCntr, "created batch");batch = new Batch(curCntr + 1, 0L, new CacheContinuousQueryEntry[BUF_SIZE], topVer); - batch = new Batch(curCntr + 1, 0L, new CacheContinuousQueryEntry[BUF_SIZE], topVer); + if (curBatch.compareAndSet(null, batch)) + return batch; - if (curBatch.compareAndSet(null, batch)) - return batch; + batch = curBatch.get(); - return curBatch.get(); + if (batch != null) + return batch; + } } /** @@@ -376,13 -423,9 +443,16 @@@ int pos = (int)(cntr - startCntr); synchronized (this) { + if (entries == null) + return RETRY; + + TestDebugLog.addEntryMessage(part, + cntr, + "buffer process start=" + startCntr + + ", lastProc=" + lastProc + + " pos=" + pos + + " topVer=" + entry.topologyVersion()); + entries[pos] = entry; int next = lastProc + 1; @@@ -405,45 -440,11 +475,20 @@@ filtered = 0; - if (res == null) { - if (backup) - backupQ.add(entry0); - else - res = entry0; - } - else { - assert !backup; - - List<CacheContinuousQueryEntry> resList; - - if (res instanceof CacheContinuousQueryEntry) { - resList = new ArrayList<>(); - - resList.add((CacheContinuousQueryEntry)res); - } - else { - assert res instanceof List : res; - - resList = (List<CacheContinuousQueryEntry>)res; - } - - resList.add(entry0); - - res = resList; - } + res = addResult(res, entry0, backup); } - else + else { filtered++; + TestDebugLog.addEntryMessage(part, + cntr, + "buffer process inc filtered start=" + startCntr + + ", lastProc=" + lastProc + + " pos=" + pos + + ", filtered=" + filtered + + " topVer=" + entry0.topologyVersion()); + } + pos = i; } else http://git-wip-us.apache.org/repos/asf/ignite/blob/7e56f3ae/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/7e56f3ae/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryPartitionRecovery.java ----------------------------------------------------------------------
