Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id DA65320049E for ; Thu, 10 Aug 2017 15:53:03 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id D900A16B14D; Thu, 10 Aug 2017 13:53:03 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 62CFE16B44B for ; Thu, 10 Aug 2017 15:53:02 +0200 (CEST) Received: (qmail 6788 invoked by uid 500); 10 Aug 2017 13:53:01 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 6615 invoked by uid 99); 10 Aug 2017 13:53:01 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Aug 2017 13:53:01 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id B9080F3345; Thu, 10 Aug 2017 13:52:58 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: agoncharuk@apache.org To: commits@ignite.apache.org Date: Thu, 10 Aug 2017 13:53:18 -0000 Message-Id: In-Reply-To: <7e422cabd1664a31b6055684c882da3d@git.apache.org> References: <7e422cabd1664a31b6055684c882da3d@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [21/30] ignite git commit: IGNITE-5897 Fix session init/end logic. This fixes tests. archived-at: Thu, 10 Aug 2017 13:53:04 -0000 IGNITE-5897 Fix session init/end logic. This fixes tests. Signed-off-by: nikolay_tikhonov Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5a559dfa Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5a559dfa Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5a559dfa Branch: refs/heads/ignite-5872 Commit: 5a559dfa167db3ff90f35ac06624afc2688dacb9 Parents: aeafbf1 Author: Nikolay Izhikov Authored: Wed Aug 9 13:37:11 2017 +0300 Committer: nikolay_tikhonov Committed: Wed Aug 9 13:37:11 2017 +0300 ---------------------------------------------------------------------- .../cache/store/CacheStoreManager.java | 4 +++- .../store/GridCacheStoreManagerAdapter.java | 20 +++++++++----------- .../cache/transactions/IgniteTxAdapter.java | 9 +++++++-- 3 files changed, 19 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5a559dfa/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/CacheStoreManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/CacheStoreManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/CacheStoreManager.java index c56a25c..83428b3 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/CacheStoreManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/CacheStoreManager.java @@ -168,9 +168,11 @@ public interface CacheStoreManager extends GridCacheManager { /** * @param tx Transaction. * @param commit Commit. + * @param last {@code True} if this is last store in transaction. + * @param storeSessionEnded {@code True} if session for underlying store already ended. * @throws IgniteCheckedException If failed. */ - public void sessionEnd(IgniteInternalTx tx, boolean commit, boolean last) throws IgniteCheckedException; + public void sessionEnd(IgniteInternalTx tx, boolean commit, boolean last, boolean storeSessionEnded) throws IgniteCheckedException; /** * End session initiated by write-behind store. http://git-wip-us.apache.org/repos/asf/ignite/blob/5a559dfa/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheStoreManagerAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheStoreManagerAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheStoreManagerAdapter.java index 83f07fb..9fe1f0c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheStoreManagerAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheStoreManagerAdapter.java @@ -774,7 +774,8 @@ public abstract class GridCacheStoreManagerAdapter extends GridCacheManagerAdapt } /** {@inheritDoc} */ - @Override public final void sessionEnd(IgniteInternalTx tx, boolean commit, boolean last) throws IgniteCheckedException { + @Override public final void sessionEnd(IgniteInternalTx tx, boolean commit, boolean last, + boolean storeSessionEnded) throws IgniteCheckedException { assert store != null; sessionInit0(tx); @@ -785,7 +786,7 @@ public abstract class GridCacheStoreManagerAdapter extends GridCacheManagerAdapt lsnr.onSessionEnd(locSes, commit); } - if (!sesHolder.get().ended(store)) + if (!sesHolder.get().ended(store) && !storeSessionEnded) store.sessionEnd(commit); } catch (Throwable e) { @@ -854,7 +855,7 @@ public abstract class GridCacheStoreManagerAdapter extends GridCacheManagerAdapt sesHolder.set(ses); try { - if (sesLsnrs != null && !ses.started(this)) { + if (!ses.started(store) && sesLsnrs != null) { for (CacheStoreSessionListener lsnr : sesLsnrs) lsnr.onSessionStart(locSes); } @@ -918,11 +919,8 @@ public abstract class GridCacheStoreManagerAdapter extends GridCacheManagerAdapt private Object attach; /** */ - private final Set started = - new GridSetWrapper<>(new IdentityHashMap()); - - /** */ - private final Set ended = new GridSetWrapper<>(new IdentityHashMap()); + private final Set started = + new GridSetWrapper<>(new IdentityHashMap()); /** * @param tx Current transaction. @@ -985,8 +983,8 @@ public abstract class GridCacheStoreManagerAdapter extends GridCacheManagerAdapt /** * @return If session is started. */ - private boolean started(CacheStoreManager mgr) { - return !started.add(mgr); + private boolean started(CacheStore store) { + return !started.add(store); } /** @@ -994,7 +992,7 @@ public abstract class GridCacheStoreManagerAdapter extends GridCacheManagerAdapt * @return Whether session already ended on this store instance. */ private boolean ended(CacheStore store) { - return !ended.add(store); + return !started.remove(store); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/5a559dfa/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java ---------------------------------------------------------------------- diff --git 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 index 61ca78c..eccb9c1 100644 --- 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 @@ -27,6 +27,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.IdentityHashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -39,6 +40,7 @@ import javax.cache.expiry.ExpiryPolicy; import javax.cache.processor.EntryProcessor; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteLogger; +import org.apache.ignite.cache.store.CacheStore; import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; @@ -60,6 +62,7 @@ import org.apache.ignite.internal.processors.cache.version.GridCacheVersion; import org.apache.ignite.internal.processors.cache.version.GridCacheVersionConflictContext; import org.apache.ignite.internal.processors.cache.version.GridCacheVersionedEntryEx; import org.apache.ignite.internal.transactions.IgniteTxTimeoutCheckedException; +import org.apache.ignite.internal.util.GridSetWrapper; import org.apache.ignite.internal.util.future.GridFutureAdapter; import org.apache.ignite.internal.util.lang.GridMetadataAwareAdapter; import org.apache.ignite.internal.util.lang.GridTuple; @@ -1159,13 +1162,15 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement * @param commit Commit flag. * @throws IgniteCheckedException In case of error. */ - protected void sessionEnd(Collection stores, boolean commit) throws IgniteCheckedException { + protected void sessionEnd(final Collection stores, boolean commit) throws IgniteCheckedException { Iterator it = stores.iterator(); + Set visited = new GridSetWrapper<>(new IdentityHashMap()); + while (it.hasNext()) { CacheStoreManager store = it.next(); - store.sessionEnd(this, commit, !it.hasNext()); + store.sessionEnd(this, commit, !it.hasNext(), !visited.add(store.store())); } }