[ignite] branch master updated: IGNITE-5227 StackOverflowError in GridCacheMapEntry#checkOwnerChanged() - Fixes #6736.

2019-08-01 Thread irakov
This is an automated email from the ASF dual-hosted git repository.

irakov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
 new b6dbc9e  IGNITE-5227 StackOverflowError in 
GridCacheMapEntry#checkOwnerChanged() - Fixes #6736.
b6dbc9e is described below

commit b6dbc9e781de9001c68007d9853938e85b217b87
Author: mstepachev 
AuthorDate: Thu Aug 1 19:47:08 2019 +0300

IGNITE-5227 StackOverflowError in GridCacheMapEntry#checkOwnerChanged() - 
Fixes #6736.

Signed-off-by: Ivan Rakov 
---
 .../processors/cache/GridCacheMapEntry.java|  16 ++-
 .../distributed/GridDistributedCacheEntry.java |  18 ++-
 .../cache/local/GridLocalCacheEntry.java   |  19 ++-
 .../cache/CacheLockCandidatesThreadTest.java   | 133 +
 4 files changed, 173 insertions(+), 13 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index f1b7ec7..194c97a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -4865,6 +4865,19 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
 protected final void checkOwnerChanged(@Nullable CacheLockCandidates 
prevOwners,
 @Nullable CacheLockCandidates owners,
 CacheObject val) {
+checkOwnerChanged(prevOwners, owners, val, null);
+}
+
+/**
+ * @param prevOwners Previous owners.
+ * @param owners Current owners.
+ * @param val Entry value.
+ * @param checkingCandidate flag to enable or disable check of candidate 
chain
+ */
+protected final void checkOwnerChanged(@Nullable CacheLockCandidates 
prevOwners,
+@Nullable CacheLockCandidates owners,
+CacheObject val,
+CacheLockCandidates checkingCandidate) {
 assert !lock.isHeldByCurrentThread();
 
 if (prevOwners != null && owners == null) {
@@ -4900,7 +4913,8 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
 if (locked) {
 cctx.mvcc().callback().onOwnerChanged(this, owner);
 
-if (owner.local())
+if (owner.local()
+&& (checkingCandidate == null || 
!checkingCandidate.hasCandidate(owner.version(
 checkThreadChain(owner);
 
 if (cctx.events().isRecordable(EVT_CACHE_OBJECT_LOCKED)) {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheEntry.java
index 9b1d0ca..51245e8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheEntry.java
@@ -642,7 +642,7 @@ public class GridDistributedCacheEntry extends 
GridCacheMapEntry {
 /**
  * Rechecks if lock should be reassigned.
  */
-public void recheck() {
+public CacheLockCandidates recheck(GridCacheMvccCandidate 
checkingCandidate) {
 CacheLockCandidates prev = null;
 CacheLockCandidates owner = null;
 
@@ -675,7 +675,9 @@ public class GridDistributedCacheEntry extends 
GridCacheMapEntry {
 }
 
 // This call must be made outside of synchronization.
-checkOwnerChanged(prev, owner, val);
+checkOwnerChanged(prev, owner, val, checkingCandidate);
+
+return owner;
 }
 
 /** {@inheritDoc} */
@@ -753,10 +755,14 @@ public class GridDistributedCacheEntry extends 
GridCacheMapEntry {
 GridDistributedCacheEntry e =
 
(GridDistributedCacheEntry)cctx0.cache().peekEx(cand.parent().key());
 
-if (e != null)
-e.recheck();
-
-break;
+if (e != null) {
+CacheLockCandidates newOnwer = e.recheck(owner);
+if(newOnwer == null || 
!newOnwer.hasCandidate(cand.version()))
+// the lock from the chain hasn't been acquired, 
no sense to check the rest of the chain
+break;
+}
+else
+break;
 }
 }
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCacheEntry.java
 

[ignite] branch master updated: IGNITE-12028 [IEP-35] HitRateMetric should provide rateTimeInterval value to metrics exporter (#6739)

2019-08-01 Thread nizhikov
This is an automated email from the ASF dual-hosted git repository.

nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
 new 736c133  IGNITE-12028  [IEP-35] HitRateMetric should provide 
rateTimeInterval value to metrics exporter (#6739)
736c133 is described below

commit 736c133a5516a31eeea0842dc9869ca319f640e1
Author: Nikita Amelchev 
AuthorDate: Thu Aug 1 19:44:24 2019 +0300

IGNITE-12028  [IEP-35] HitRateMetric should provide rateTimeInterval value 
to metrics exporter (#6739)

A public method added.
---
 .../processors/metric/impl/HitRateMetric.java  |  7 +++-
 .../ignite/internal/metric/MetricsSelfTest.java| 39 ++
 2 files changed, 38 insertions(+), 8 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/impl/HitRateMetric.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/impl/HitRateMetric.java
index 44381c2..f77fdb6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/impl/HitRateMetric.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/impl/HitRateMetric.java
@@ -40,7 +40,7 @@ public class HitRateMetric extends AbstractMetric implements 
LongMetric {
 /**
  * @param name Name.
  * @param desc Description.
- * @param rateTimeInterval Rate time interval.
+ * @param rateTimeInterval Rate time interval in milliseconds.
  * @param size Counters array size.
  */
 public HitRateMetric(String name, @Nullable String desc, long 
rateTimeInterval, int size) {
@@ -83,6 +83,11 @@ public class HitRateMetric extends AbstractMetric implements 
LongMetric {
 return cntr.value();
 }
 
+/** @return Rate time interval in milliseconds. */
+public long rateTimeInterval() {
+return cntr.rateTimeInterval;
+}
+
 /**
  * Actual metric.
  *
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
index fa0bb7d..4f32db1 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
@@ -25,32 +25,31 @@ import java.util.Spliterators;
 import java.util.stream.StreamSupport;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.processors.metric.MetricRegistry;
+import org.apache.ignite.internal.processors.metric.impl.AtomicLongMetric;
 import org.apache.ignite.internal.processors.metric.impl.BooleanMetricImpl;
 import org.apache.ignite.internal.processors.metric.impl.DoubleMetricImpl;
 import org.apache.ignite.internal.processors.metric.impl.HistogramMetric;
+import org.apache.ignite.internal.processors.metric.impl.HitRateMetric;
 import org.apache.ignite.internal.processors.metric.impl.IntMetricImpl;
 import org.apache.ignite.internal.processors.metric.impl.LongAdderMetric;
-import org.apache.ignite.internal.processors.metric.impl.AtomicLongMetric;
+import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.spi.metric.BooleanMetric;
 import org.apache.ignite.spi.metric.DoubleMetric;
 import org.apache.ignite.spi.metric.IntMetric;
 import org.apache.ignite.spi.metric.LongMetric;
 import org.apache.ignite.spi.metric.Metric;
 import org.apache.ignite.spi.metric.ObjectMetric;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Before;
 import org.junit.Test;
 
 import static java.util.Arrays.asList;
 import static java.util.stream.Collectors.toSet;
-import static junit.framework.TestCase.assertNull;
-import static junit.framework.TestCase.assertTrue;
 import static org.apache.ignite.testframework.GridTestUtils.runAsync;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 
 /** */
-public class MetricsSelfTest {
+public class MetricsSelfTest extends GridCommonAbstractTest {
 /** */
 private MetricRegistry mreg;
 
@@ -310,6 +309,32 @@ public class MetricsSelfTest {
 }
 
 /** */
+@Test
+public void testHitRateMetric() throws Exception {
+long rateTimeInterval = 500;
+
+HitRateMetric metric = mreg.hitRateMetric("testHitRate", null, 
rateTimeInterval, 10);
+
+assertEquals(0, metric.value());
+
+long startTs = U.currentTimeMillis();
+
+GridTestUtils.runMultiThreaded(metric::increment, 10, "test-thread");
+
+assertTrue(metric.value() > 0 || U.currentTimeMillis() - startTs > 
rateTimeInterval);
+
+U.sleep(rateTimeInterval * 2);
+
+assertEquals(0, metric.value());
+
+

[ignite] branch master updated: IGNITE-11924: Migrate TransactionMetricsMxBean (#6733)

2019-08-01 Thread nizhikov
This is an automated email from the ASF dual-hosted git repository.

nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
 new 0bb7c17  IGNITE-11924:  Migrate TransactionMetricsMxBean (#6733)
0bb7c17 is described below

commit 0bb7c170cc0faf41e69d5bbef9e1fbac80a933e2
Author: Nikita Amelchev 
AuthorDate: Thu Aug 1 19:13:07 2019 +0300

IGNITE-11924:  Migrate TransactionMetricsMxBean (#6733)

Metrics migration.
---
 .../internal/TransactionMetricsMxBeanImpl.java |   4 +
 .../wal/reader/StandaloneGridKernalContext.java|  10 +-
 .../cache/transactions/IgniteTransactionsImpl.java |   2 +-
 .../transactions/TransactionMetricsAdapter.java| 196 -
 .../processors/metric/GridMetricManager.java   |   3 +
 .../processors/metric/impl/IntMetricImpl.java  |   5 +
 .../ignite/mxbean/TransactionMetricsMxBean.java|   4 +
 .../ignite/transactions/TransactionMetrics.java|   3 +-
 ...anImplTest.java => TransactionMetricsTest.java} |  37 ++--
 .../db/wal/IgniteWalIteratorSwitchSegmentTest.java |   7 -
 .../IgniteCacheMetricsSelfTestSuite.java   |   4 +-
 11 files changed, 207 insertions(+), 68 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/TransactionMetricsMxBeanImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/TransactionMetricsMxBeanImpl.java
index 58b5867..e1deb50 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/TransactionMetricsMxBeanImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/TransactionMetricsMxBeanImpl.java
@@ -18,12 +18,16 @@
 package org.apache.ignite.internal;
 
 import java.util.Map;
+import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.mxbean.TransactionMetricsMxBean;
 import org.apache.ignite.transactions.TransactionMetrics;
 
 /**
  * Transactions MXBean implementation.
+ *
+ * @deprecated Use {@link GridMetricManager} instead.
  */
+@Deprecated
 public class TransactionMetricsMxBeanImpl implements TransactionMetricsMxBean {
 /** */
 private static final long serialVersionUID = 0L;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
index 0a25f1c..468d603 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
@@ -98,6 +98,7 @@ import org.apache.ignite.internal.worker.WorkersRegistry;
 import org.apache.ignite.marshaller.Marshaller;
 import org.apache.ignite.plugin.PluginNotFoundException;
 import org.apache.ignite.plugin.PluginProvider;
+import org.apache.ignite.spi.metric.noop.NoopMetricExporterSpi;
 import org.apache.ignite.thread.IgniteStripedThreadPoolExecutor;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -118,6 +119,9 @@ public class StandaloneGridKernalContext implements 
GridKernalContext {
 /** Empty plugin processor. */
 private IgnitePluginProcessor pluginProc;
 
+/** Metrics manager. */
+private final GridMetricManager metricMgr;
+
 /**
  * Cache object processor. Used for converting cache objects and keys into 
binary objects. Null means there is no
  * convert is configured. All entries in this case will be lazy data 
entries.
@@ -163,6 +167,8 @@ public class StandaloneGridKernalContext implements 
GridKernalContext {
 
marshallerCtx.setMarshallerMappingFileStoreDir(marshallerMappingFileStoreDir);
 marshallerCtx.onMarshallerProcessorStarted(this, null);
 }
+
+metricMgr = new GridMetricManager(this);
 }
 
 /**
@@ -207,6 +213,8 @@ public class StandaloneGridKernalContext implements 
GridKernalContext {
 
 marshaller.setContext(marshallerCtx);
 
+cfg.setMetricExporterSpi(new NoopMetricExporterSpi());
+
 return cfg;
 }
 
@@ -296,7 +304,7 @@ public class StandaloneGridKernalContext implements 
GridKernalContext {
 
 /** {@inheritDoc} */
 @Override public GridMetricManager metric() {
-return null;
+return metricMgr;
 }
 
 /** {@inheritDoc} */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTransactionsImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTransactionsImpl.java
index 5d2686c..2a7999f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTransactionsImpl.java
+++ 

[ignite-teamcity-bot] branch master updated: Tracked branch list now contains number of suites running and queued

2019-08-01 Thread dpavlov
This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git


The following commit(s) were added to refs/heads/master by this push:
 new 3f55641  Tracked branch list now contains number of suites running and 
queued
3f55641 is described below

commit 3f55641bb2aabc0e4f77455ede46c4efa664c9f7
Author: Dmitriy Pavlov 
AuthorDate: Thu Aug 1 18:05:11 2019 +0300

Tracked branch list now contains number of suites running and queued
---
 .../org/apache/ignite/ci/web/model/Version.java|  2 +-
 .../rest/tracked/GetTrackedBranchTestResults.java  | 17 ++
 ignite-tc-helper-web/src/main/webapp/guard.html| 35 +
 .../tracked/IDetailedStatusForTrackedBranch.java   |  7 +++
 .../tracked/TrackedBranchChainsProcessor.java  | 60 ++
 .../tcbot/engine/ui/GuardBranchStatusUi.java   | 58 +
 .../apache/ignite/tcignited/ITeamcityIgnited.java  |  4 ++
 .../ignite/tcignited/TeamcityIgnitedImpl.java  |  8 ++-
 .../ignite/tcignited/history/HistoryCollector.java | 44 
 9 files changed, 210 insertions(+), 25 deletions(-)

diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
index b1ce2f9..a9170d3 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
@@ -28,7 +28,7 @@ package org.apache.ignite.ci.web.model;
 public static final String GITHUB_REF = 
"https://github.com/apache/ignite-teamcity-bot;;
 
 /** TC Bot Version. */
-public static final String VERSION = "20190731";
+public static final String VERSION = "20190801";
 
 /** Java version, where Web App is running. */
 public String javaVer;
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/tracked/GetTrackedBranchTestResults.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/tracked/GetTrackedBranchTestResults.java
index 1ff6d7c..3b87184 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/tracked/GetTrackedBranchTestResults.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/tracked/GetTrackedBranchTestResults.java
@@ -18,7 +18,10 @@
 package org.apache.ignite.ci.web.rest.tracked;
 
 import com.google.inject.Injector;
+import java.util.List;
+import java.util.Objects;
 import java.util.Set;
+import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
@@ -38,6 +41,7 @@ import org.apache.ignite.tcbot.engine.tracked.DisplayMode;
 import org.apache.ignite.tcbot.engine.tracked.IDetailedStatusForTrackedBranch;
 import org.apache.ignite.tcbot.engine.tracked.TrackedBranchChainsProcessor;
 import org.apache.ignite.tcbot.engine.ui.DsSummaryUi;
+import org.apache.ignite.tcbot.engine.ui.GuardBranchStatusUi;
 import org.apache.ignite.tcbot.engine.ui.UpdateInfo;
 import org.apache.ignite.tcignited.ITeamcityIgnitedProvider;
 import org.apache.ignite.tcignited.SyncMode;
@@ -220,4 +224,17 @@ public class GetTrackedBranchTestResults {
 .getInstance(TcBotTriggerAndSignOffService.class)
 .getMutes(srvCode, projectId, creds);
 }
+
+@GET
+@Path("summary")
+public List getIdsIfAccessible() {
+ITcBotUserCreds prov = ITcBotUserCreds.get(req);
+Injector injector = CtxListener.getInjector(ctx);
+ITcBotConfig cfg = injector.getInstance(ITcBotConfig.class);
+IDetailedStatusForTrackedBranch status = 
injector.getInstance(IDetailedStatusForTrackedBranch.class);
+
+return cfg.getTrackedBranches().branchesStream()
+.map(bt -> status.getBranchSummary(bt.name(), 
prov)).filter(Objects::nonNull)
+.collect(Collectors.toList());
+}
 }
diff --git a/ignite-tc-helper-web/src/main/webapp/guard.html 
b/ignite-tc-helper-web/src/main/webapp/guard.html
index 0078687..8c8d303 100644
--- a/ignite-tc-helper-web/src/main/webapp/guard.html
+++ b/ignite-tc-helper-web/src/main/webapp/guard.html
@@ -33,15 +33,50 @@ function loadData() {
 success: function(result) {
 $("#loadStatus").html("");
 showTrackedBranchesLinks(result);
+
+$.ajax({
+url: "rest/tracked/summary",
+success: function(result) {
+$("#loadStatus").html("");
+showTrackedBranchesLinks2(result);
+},
+error: showErrInLoadStatus
+});
 },
 error: showErrInLoadStatus
 });
 
 
+
+}
+
+function showTrackedBranchesLinks2(result) {

[ignite] branch master updated: IGNITE-10654 Print warn message in case of index creating with already existing fields.

2019-08-01 Thread agura
This is an automated email from the ASF dual-hosted git repository.

agura pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
 new c41466f  IGNITE-10654 Print warn message in case of index creating 
with already existing fields.
c41466f is described below

commit c41466f480aca524f7a9da2891d1988c0e82bc43
Author: zstan 
AuthorDate: Thu Aug 1 16:14:50 2019 +0300

IGNITE-10654 Print warn message in case of index creating with already 
existing fields.

Signed-off-by: Andrey Gura 
---
 .../processors/query/QueryIndexDescriptorImpl.java |   2 +-
 .../processors/query/h2/opt/GridH2Table.java   |  76 +++-
 .../cache/IgniteDynamicSqlRestoreTest.java |   2 +-
 .../processors/cache/index/BasicIndexTest.java | 487 -
 4 files changed, 560 insertions(+), 7 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryIndexDescriptorImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryIndexDescriptorImpl.java
index 1b85af5..d8b972c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryIndexDescriptorImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryIndexDescriptorImpl.java
@@ -127,7 +127,7 @@ public class QueryIndexDescriptorImpl implements 
GridQueryIndexDescriptor {
 
 if (descending) {
 if (descendings == null)
-descendings  = new HashSet<>();
+descendings = new HashSet<>();
 
 descendings.add(field);
 }
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
index 250fe2d..a4dfa16 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
@@ -29,10 +29,15 @@ import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.LongAdder;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteInterruptedException;
 import org.apache.ignite.cache.query.QueryRetryException;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.internal.GridKernalContext;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.GridCacheContextInfo;
 import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
@@ -48,6 +53,7 @@ import 
org.apache.ignite.internal.processors.query.h2.database.H2IndexType;
 import org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex;
 import org.apache.ignite.internal.processors.query.h2.database.H2TreeIndexBase;
 import 
org.apache.ignite.internal.processors.query.h2.database.IndexInformation;
+import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.spi.indexing.IndexingQueryCacheFilter;
@@ -163,6 +169,10 @@ public class GridH2Table extends TableBase {
 /** Table statistics. */
 private volatile TableStatistics tblStats;
 
+/** Logger. */
+@GridToStringExclude
+private IgniteLogger log;
+
 /**
  * Creates table.
  *
@@ -231,6 +241,12 @@ public class GridH2Table extends TableBase {
 // Init stats with the dummy values. This prevents us from scanning 
index with backup filter when
 // topology may not be initialized yet.
 tblStats = new TableStatistics(0, 0);
+
+if (desc != null && desc.context() != null) {
+GridKernalContext ctx = desc.context().kernalContext();
+
+log = ctx.log(getClass());
+}
 }
 
 /**
@@ -858,6 +874,52 @@ public class GridH2Table extends TableBase {
 }
 
 /**
+ * Checks index presence, return {@link Index} if index with same name or 
same fields and search direction already
+ * exist or {@code null} othervise.
+ *
+ * @param curIdx Index to check.
+ * @return Index if equal or subset index exist.
+ * @throws IgniteCheckedException If failed.
+ */
+private @Nullable Index checkIndexPresence(Index curIdx) throws 
IgniteCheckedException {
+IndexColumn[] curColumns = curIdx.getIndexColumns();
+
+Index registredIdx = null;
+
+for (Index idx : idxs) {
+if (!(idx instanceof 

[ignite] branch ignite-11704-1 deleted (was 2394c56)

2019-08-01 Thread sboikov
This is an automated email from the ASF dual-hosted git repository.

sboikov pushed a change to branch ignite-11704-1
in repository https://gitbox.apache.org/repos/asf/ignite.git.


 was 2394c56  ignite-11704

This change permanently discards the following revisions:

 discard 2394c56  ignite-11704



[ignite] branch ignite-11704 updated: ignite-11704

2019-08-01 Thread sboikov
This is an automated email from the ASF dual-hosted git repository.

sboikov pushed a commit to branch ignite-11704
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/ignite-11704 by this push:
 new 1da9dc3  ignite-11704
1da9dc3 is described below

commit 1da9dc31b51718f595334a32e60e11f571676dd5
Author: sboikov 
AuthorDate: Thu Aug 1 09:43:33 2019 +0300

ignite-11704
---
 .../ignite/internal/processors/cache/CacheGroupContext.java   | 2 +-
 .../apache/ignite/internal/processors/cache/GridCacheContext.java | 8 ++--
 .../ignite/internal/processors/cache/GridCacheMapEntry.java   | 3 +++
 .../internal/processors/cache/IgniteCacheOffheapManagerImpl.java  | 2 ++
 .../cache/distributed/dht/topology/GridDhtLocalPartition.java | 2 --
 5 files changed, 12 insertions(+), 5 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java
index 3a7a445..c2cba6b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java
@@ -1296,7 +1296,7 @@ public class CacheGroupContext {
  * @return {@code True} if need create temporary tombstones entries for 
removed data.
  */
 public boolean supportsTombstone() {
-return !sharedGroup() && !hasAtomicCaches && !mvccEnabled && 
!isLocal();
+return !mvccEnabled && !isLocal();
 }
 
 /**
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index 959095c..4c51981 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -625,8 +625,12 @@ public class GridCacheContext implements 
Externalizable {
 public void cache(GridCacheAdapter cache) {
 this.cache = cache;
 
-deferredDel = !grp.supportsTombstone() && (cache.isDht() || 
cache.isDhtAtomic() || cache.isColocated() ||
-(cache.isNear() && cache.configuration().getAtomicityMode() == 
ATOMIC));
+if (grp.supportsTombstone() && 
cache.configuration().getAtomicityMode() == TRANSACTIONAL)
+deferredDel = false;
+else {
+deferredDel = (cache.isDht() || cache.isDhtAtomic() || 
cache.isColocated() ||
+(cache.isNear() && cache.configuration().getAtomicityMode() == 
ATOMIC));
+}
 }
 
 /**
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index 1133085..db066b6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -4505,6 +4505,9 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
 
 CacheDataRow row = cctx.offheap().read(this);
 
+if (cctx.offheap().isTombstone(row))
+return;
+
 if (row != null && (filter == null || filter.apply(row)))
 clo.apply(row);
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index 1f3a22d..9d15358 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@ -628,6 +628,8 @@ public class IgniteCacheOffheapManagerImpl implements 
IgniteCacheOffheapManager
 GridCacheVersion ver,
 GridDhtLocalPartition part) throws IgniteCheckedException {
 assert part != null;
+assert !cctx.isNear();
+assert !cctx.isLocal();
 
 dataStore(part).removeWithTombstone(cctx, key, ver, part);
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtLocalPartition.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtLocalPartition.java
index d9b34c6..f098e99 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtLocalPartition.java
+++