futures: api cleanup
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/bf01a407 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/bf01a407 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/bf01a407 Branch: refs/heads/ignite-51 Commit: bf01a407f368d870c81660e3dc36086d7751eea0 Parents: 2d45a47 Author: Yakov Zhdanov <yzhda...@gridgain.com> Authored: Fri Mar 6 00:08:18 2015 +0300 Committer: Yakov Zhdanov <yzhda...@gridgain.com> Committed: Fri Mar 6 00:08:18 2015 +0300 ---------------------------------------------------------------------- .../ignite/internal/GridKernalGatewayImpl.java | 26 --- .../managers/communication/GridIoManager.java | 26 +-- .../cache/GridCacheDeploymentManager.java | 2 +- .../processors/cache/GridCacheIoManager.java | 9 +- .../processors/cache/GridCacheMessage.java | 7 - .../processors/cache/GridCacheMvccManager.java | 11 +- .../processors/cache/GridCacheUtils.java | 9 - .../distributed/dht/GridDhtTxPrepareFuture.java | 2 +- .../cache/transactions/IgniteTxManager.java | 2 +- .../processors/job/GridJobProcessor.java | 4 +- .../ignite/internal/util/GridThreadLocal.java | 175 ---------------- .../ignite/internal/util/GridThreadLocalEx.java | 210 ------------------- .../ignite/internal/util/IgniteUtils.java | 2 +- .../internal/util/future/GridFutureAdapter.java | 17 +- .../ignite/internal/util/worker/GridWorker.java | 27 --- 15 files changed, 35 insertions(+), 494 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/GridKernalGatewayImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalGatewayImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalGatewayImpl.java index 5982005..c4e2268 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalGatewayImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalGatewayImpl.java @@ -82,14 +82,10 @@ public class GridKernalGatewayImpl implements GridKernalGateway, Serializable { throw illegalState(); } - - enterThreadLocals(); } /** {@inheritDoc} */ @Override public void readUnlock() { - leaveThreadLocals(); - rwLock.readUnlock(); } @@ -99,8 +95,6 @@ public class GridKernalGatewayImpl implements GridKernalGateway, Serializable { if (stackTrace == null) stackTrace = stackTrace(); - enterThreadLocals(); - boolean interrupted = false; // Busy wait is intentional. @@ -129,8 +123,6 @@ public class GridKernalGatewayImpl implements GridKernalGateway, Serializable { if (stackTrace == null) stackTrace = stackTrace(); - enterThreadLocals(); - return true; } @@ -161,27 +153,9 @@ public class GridKernalGatewayImpl implements GridKernalGateway, Serializable { ", state=" + state + ']'); } - /** - * Enter thread locals. - */ - private void enterThreadLocals() { - GridThreadLocal.enter(); - GridThreadLocalEx.enter(); - } - - /** - * Leave thread locals. - */ - private void leaveThreadLocals() { - GridThreadLocalEx.leave(); - GridThreadLocal.leave(); - } - /** {@inheritDoc} */ @Override public void writeUnlock() { rwLock.writeUnlock(); - - leaveThreadLocals(); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java index 67ae808..2289c20 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java @@ -30,7 +30,6 @@ import org.apache.ignite.internal.util.*; import org.apache.ignite.internal.util.tostring.*; import org.apache.ignite.internal.util.typedef.*; import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.internal.util.worker.*; import org.apache.ignite.lang.*; import org.apache.ignite.marshaller.*; import org.apache.ignite.plugin.extensions.communication.*; @@ -112,14 +111,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa /** Lock to sync maps access. */ private final ReadWriteLock lock = new ReentrantReadWriteLock(); - /** Message cache. */ - private ThreadLocal<IgniteBiTuple<Object, byte[]>> cacheMsg = - new GridThreadLocal<IgniteBiTuple<Object, byte[]>>() { - @Nullable @Override protected IgniteBiTuple<Object, byte[]> initialValue() { - return null; - } - }; - /** Fully started flag. When set to true, can send and receive messages. */ private volatile boolean started; @@ -416,9 +407,6 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa @Override public void stop(boolean cancel) throws IgniteCheckedException { stopSpi(); - // Clear cache. - cacheMsg.set(null); - if (log.isDebugEnabled()) log.debug(stopInfo()); } @@ -1332,14 +1320,14 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa pool(msgSet.policy()).execute( new Runnable() { @Override public void run() { - try { - unwindMessageSet(msgSet, lsnrs0); - } - finally { - workersCnt.decrement(); + try { + unwindMessageSet(msgSet, lsnrs0); + } + finally { + workersCnt.decrement(); + } } - } - }); + }); success = true; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java index c9467eb..5e40bee 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java @@ -71,7 +71,7 @@ public class GridCacheDeploymentManager<K, V> extends GridCacheSharedManagerAdap private volatile boolean locDepOwner; /** */ - private final GridThreadLocal<Boolean> ignoreOwnership = new GridThreadLocal<Boolean>() { + private final ThreadLocal<Boolean> ignoreOwnership = new ThreadLocal<Boolean>() { @Override protected Boolean initialValue() { return false; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java index 277c48b..de82f35 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java @@ -293,10 +293,6 @@ public class GridCacheIoManager<K, V> extends GridCacheSharedManagerAdapter<K, V private void processMessage(UUID nodeId, GridCacheMessage<K, V> msg, IgniteBiInClosure<UUID, GridCacheMessage<K, V>> c) { try { - // Start clean. - if (msg.transactional()) - CU.resetTxContext(cctx); - // We will not end up with storing a bunch of new UUIDs // in each cache entry, since node ID is stored in NIO session // on handshake. @@ -309,8 +305,9 @@ public class GridCacheIoManager<K, V> extends GridCacheSharedManagerAdapter<K, V U.error(log, "Failed processing message [senderId=" + nodeId + ']', e); } finally { - // Clear thread-local tx contexts. - CU.resetTxContext(cctx); + // Reset thread local context. + cctx.tm().txContextReset(); + cctx.mvcc().contextReset(); // Unwind eviction notifications. CU.unwindEvicts(cctx); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java index 6b8689c..74994c9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java @@ -87,13 +87,6 @@ public abstract class GridCacheMessage<K, V> implements Message { } /** - * @return If this is a transactional message. - */ - public boolean transactional() { - return false; - } - - /** * @return {@code True} if class loading errors should be ignored, false otherwise. */ public boolean ignoreClassErrors() { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java index 9859039..fc586ba 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java @@ -51,8 +51,8 @@ public class GridCacheMvccManager<K, V> extends GridCacheSharedManagerAdapter<K, private static final int MAX_REMOVED_LOCKS = 10240; /** Pending locks per thread. */ - private final GridThreadLocal<Queue<GridCacheMvccCandidate<K>>> pending = - new GridThreadLocal<Queue<GridCacheMvccCandidate<K>>>() { + private final ThreadLocal<Queue<GridCacheMvccCandidate<K>>> pending = + new ThreadLocal<Queue<GridCacheMvccCandidate<K>>>() { @Override protected Queue<GridCacheMvccCandidate<K>> initialValue() { return new LinkedList<>(); } @@ -725,6 +725,13 @@ public class GridCacheMvccManager<K, V> extends GridCacheSharedManagerAdapter<K, } /** + * Reset MVCC context. + */ + public void contextReset() { + pending.set(new LinkedList<GridCacheMvccCandidate<K>>()); + } + + /** * Adds candidate to the list of near local candidates. * * @param threadId Thread ID. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java index b07c14e..45dfb3f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java @@ -1240,15 +1240,6 @@ public class GridCacheUtils { /** * @param ctx Cache context. */ - public static void resetTxContext(GridCacheSharedContext ctx) { - assert ctx != null; - - ctx.tm().txContextReset(); - } - - /** - * @param ctx Cache context. - */ public static void unwindEvicts(GridCacheContext ctx) { assert ctx != null; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java index f046554..90df2c6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java @@ -1096,7 +1096,7 @@ public final class GridDhtTxPrepareFuture<K, V> extends GridCompoundIdentityFutu /** {@inheritDoc} */ @Override public String toString() { - return S.toString(GridDhtTxPrepareFuture.class, this, "super", super.toString()); + return S.toString(GridDhtTxPrepareFuture.class, this, "xid", tx.xidVersion(), "super", super.toString()); } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java index 065d545..b1569a5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java @@ -65,7 +65,7 @@ public class IgniteTxManager<K, V> extends GridCacheSharedManagerAdapter<K, V> { private static final int TX_SALVAGE_TIMEOUT = Integer.getInteger(IGNITE_TX_SALVAGE_TIMEOUT, 100); /** Committing transactions. */ - private final ThreadLocal<IgniteInternalTx> threadCtx = new GridThreadLocalEx<>(); + private final ThreadLocal<IgniteInternalTx> threadCtx = new ThreadLocal<>(); /** Per-thread transaction map. */ private final ConcurrentMap<Long, IgniteInternalTx<K, V>> threadMap = newMap(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/processors/job/GridJobProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/job/GridJobProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/job/GridJobProcessor.java index 6b753b4..49f8998 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/job/GridJobProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/job/GridJobProcessor.java @@ -147,14 +147,14 @@ public class GridJobProcessor extends GridProcessorAdapter { }; /** Internal task flag. */ - private final GridThreadLocal<Boolean> internal = new GridThreadLocal<Boolean>() { + private final ThreadLocal<Boolean> internal = new ThreadLocal<Boolean>() { @Override protected Boolean initialValue() { return false; } }; /** Current session. */ - private final GridThreadLocal<ComputeTaskSession> currentSess = new GridThreadLocal<>(); + private final ThreadLocal<ComputeTaskSession> currentSess = new ThreadLocal<>(); /** * @param ctx Kernal context. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/util/GridThreadLocal.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridThreadLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridThreadLocal.java deleted file mode 100644 index 8e94e89..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridThreadLocal.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.util; - -import org.apache.ignite.internal.*; -import org.apache.ignite.internal.util.worker.*; -import org.apache.ignite.lang.*; -import org.jetbrains.annotations.*; - -import java.util.*; - -/** - * Thread local that auto resets upon leaving thread context. This thread local is - * integrated with {@link GridKernalGateway} and - * with {@link GridWorker} threads. - */ -public class GridThreadLocal<T> extends ThreadLocal<T> { - /** Thread context for non-worker threads. */ - private static final ThreadLocal<ThreadContext> threadCtx = new ThreadLocal<ThreadContext>() { - @Override protected ThreadContext initialValue() { - return new ThreadContext(); - } - - @Override public String toString() { - return "Thread context."; - } - }; - - /** */ - private final IgniteOutClosure<T> initializer; - - /** - * - */ - public GridThreadLocal() { - initializer = null; - } - - /** - * @param initializer Initializer. - */ - public GridThreadLocal(IgniteOutClosure<T> initializer) { - this.initializer = initializer; - } - - /** - * Callback for start of thread context. - */ - public static void enter() { - threadCtx.get().enter(); - } - - /** - * Callback for end of thread context. - */ - public static void leave() { - threadCtx.get().leave(); - } - - /** {@inheritDoc} */ - @Nullable @Override protected T initialValue() { - return initializer == null ? null : initializer.apply(); - } - - /** - * Resets the state of this thread local. - */ - private void reset() { - super.set(initialValue()); - } - - /** {@inheritDoc} */ - @Override public final T get() { - addThreadLocal(this); - - return super.get(); - } - - /** {@inheritDoc} */ - @Override public final void set(T val) { - if (val != null) - addThreadLocal(this); - - super.set(val); - } - - /** - * @param threadLoc Thread local. - * @return {@code True} if thread-local was added. - */ - private boolean addThreadLocal(GridThreadLocal<?> threadLoc) { - assert threadLoc != null; - - ThreadContext ctx = threadCtx.get(); - - return ctx.entered() && ctx.add(threadLoc); - } - - /** - * - */ - private static class ThreadContext { - /** Entered flag. */ - private int entered; - - /** Thread locals for given thread context. */ - private Collection<GridThreadLocal<?>> threadLocals = new HashSet<>(); - - /** - * Enter callback. - */ - void enter() { - assert entered >= 0 : "Thread context gateway cannot be negative prior to enter: " + entered; - - if (entered == 0) - reset(); - - entered++; - } - - /** - * Leave callback. - */ - void leave() { - assert entered > 0 : "Thread context gateway must be positive prior to leave: " + entered; - - entered--; - - if (entered == 0) - reset(); - } - - /** - * @param threadLoc Thread local to add. - * @return {@code True} if thread local was added. - */ - boolean add(GridThreadLocal<?> threadLoc) { - return threadLocals.add(threadLoc); - } - - /** - * @return Entered flag. - */ - boolean entered() { - return entered > 0; - } - - /** - * Resets thread locals. - */ - private void reset() { - if (!threadLocals.isEmpty()) { - for (GridThreadLocal<?> threadLocal : threadLocals) - threadLocal.reset(); - - threadLocals.clear(); - } - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/util/GridThreadLocalEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridThreadLocalEx.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridThreadLocalEx.java deleted file mode 100644 index a8f01f3..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridThreadLocalEx.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.util; - -import org.apache.ignite.internal.util.typedef.*; -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.internal.util.worker.*; -import org.apache.ignite.lang.*; -import org.jetbrains.annotations.*; - -import java.util.*; - -/** - * Thread local that auto resets upon leaving thread context. This thread local is different - * from {@link GridThreadLocal} as it inherits thread local values from the parent - * {@link GridWorker} thread. - */ -public class GridThreadLocalEx<T> extends ThreadLocal<T> { - /** Thread context for non-worker threads. */ - private static final ThreadLocal<ThreadContext> threadCtx = new ThreadLocal<ThreadContext>() { - @Override protected ThreadContext initialValue() { - return new ThreadContext(); - } - }; - - /** */ - private final IgniteOutClosure<T> initializer; - - /** - * - */ - public GridThreadLocalEx() { - initializer = null; - } - - /** - * @param initializer Initializer. - */ - public GridThreadLocalEx(IgniteOutClosure<T> initializer) { - this.initializer = initializer; - } - - /** - * @return Thread locals to inherit. - */ - public static Map<GridThreadLocalEx<?>, ?> inherit() { - ThreadContext ctx = threadCtx.get(); - - Collection<GridThreadLocalEx<?>> threadLocals = ctx.threadLocals(); - - Map<GridThreadLocalEx<?>, Object> ret = F.isEmpty(threadLocals) ? - Collections.<GridThreadLocalEx<?>, Object>emptyMap() : - U.<GridThreadLocalEx<?>, Object>newHashMap(threadLocals.size()); - - for (GridThreadLocalEx<?> t : threadLocals) - ret.put(t, t.get()); - - return ret; - } - - /** - * Callback for start of thread context. - */ - public static void enter() { - threadCtx.get().enter(); - } - - /** - * Callback for start of thread context. - * - * @param inherited Inherited map. - */ - @SuppressWarnings({"unchecked"}) - public static void enter(Map<GridThreadLocalEx<?>, ?> inherited) { - threadCtx.get().enter(); - - for (Map.Entry<GridThreadLocalEx<?>, ?> e : inherited.entrySet()) { - ThreadLocal<Object> t = (ThreadLocal<Object>)e.getKey(); - - t.set(e.getValue()); - } - } - - /** - * Callback for end of thread context. - */ - public static void leave() { - threadCtx.get().leave(); - } - - /** {@inheritDoc} */ - @Nullable @Override protected T initialValue() { - return initializer == null ? null : initializer.apply(); - } - - /** {@inheritDoc} */ - @Override public final T get() { - addThreadLocal(this); - - return super.get(); - } - - /** {@inheritDoc} */ - @Override public final void set(T val) { - if (val != null) - addThreadLocal(this); - - super.set(val); - } - - /** - * Resets the state of this thread local. - */ - private void reset() { - super.set(initialValue()); - } - - /** - * @param threadLoc Thread local. - * @return {@code True} if thread-local was added. - */ - private boolean addThreadLocal(GridThreadLocalEx<?> threadLoc) { - assert threadLoc != null; - - ThreadContext ctx = threadCtx.get(); - - return ctx.entered() && ctx.add(threadLoc); - } - - /** - * - */ - private static class ThreadContext { - /** Entered flag. */ - private int entered; - - /** Thread locals for given thread context. */ - private Collection<GridThreadLocalEx<?>> threadLocals = new HashSet<>(); - - /** - * Enter callback. - */ - void enter() { - assert entered >= 0 : "Thread context gateway cannot be negative prior to enter: " + entered; - - entered++; - } - - /** - * Leave callback. - */ - void leave() { - assert entered > 0 : "Thread context gateway must be positive prior to leave: " + entered; - - entered--; - - if (entered == 0) - reset(); - } - - /** - * @param threadLoc Thread local to add. - * @return {@code True} if thread local was added. - */ - boolean add(GridThreadLocalEx<?> threadLoc) { - return threadLocals.add(threadLoc); - } - - /** - * @return Thread locals. - */ - Collection<GridThreadLocalEx<?>> threadLocals() { - return threadLocals; - } - - /** - * @return Entered flag. - */ - boolean entered() { - return entered > 0; - } - - /** - * Resets thread locals. - */ - private void reset() { - if (!threadLocals.isEmpty()) { - for (GridThreadLocalEx<?> threadLocal : threadLocals) - threadLocal.reset(); - - threadLocals.clear(); - } - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index 89bb6f2..af5b838 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -743,7 +743,7 @@ public abstract class IgniteUtils { */ @Deprecated public static void debug(Object msg) { - X.println(debugPrefix() + msg); + X.error(debugPrefix() + msg); } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java index 5246067..5091655 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java @@ -179,12 +179,15 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements else { lsnr = (IgniteInClosure)new ArrayListener<IgniteInternalFuture>(lsnr, lsnr0); } + + return; } } } - if (done) - notifyListener(lsnr0); + assert done; + + notifyListener(lsnr0); } } @@ -197,20 +200,20 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements * Notifies all registered listeners. */ private void notifyListeners() { - IgniteInClosure<? super IgniteInternalFuture<R>> lsnrs0; + IgniteInClosure<? super IgniteInternalFuture<R>> lsnr0; synchronized (this) { - lsnrs0 = lsnr; + lsnr0 = lsnr; - if (lsnrs0 == null) + if (lsnr0 == null) return; lsnr = null; } - assert lsnrs0 != null; + assert lsnr0 != null; - notifyListener(lsnrs0); + notifyListener(lsnr0); } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bf01a407/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java b/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java index 12c5234..4319b61 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java @@ -19,11 +19,9 @@ package org.apache.ignite.internal.util.worker; import org.apache.ignite.*; import org.apache.ignite.internal.*; -import org.apache.ignite.internal.util.*; import org.apache.ignite.internal.util.typedef.internal.*; import org.jetbrains.annotations.*; -import java.util.*; import java.util.concurrent.*; /** @@ -55,9 +53,6 @@ public abstract class GridWorker implements Runnable { /** Parent thread. */ private final Thread parent; - /** Inherited thread locals. */ - private final Map<GridThreadLocalEx<?>, ?> inherited; - /** */ private final Object mux = new Object(); @@ -87,8 +82,6 @@ public abstract class GridWorker implements Runnable { GridWorker.log = log.getLogger(GridWorker.class); } } - - inherited = GridThreadLocalEx.inherit(); } /** @@ -104,30 +97,12 @@ public abstract class GridWorker implements Runnable { this(gridName, name, log, null); } - /** - * Enter thread locals. - */ - private void enterThreadLocals() { - GridThreadLocal.enter(); - GridThreadLocalEx.enter(inherited); - } - - /** - * Leave thread locals. - */ - private void leaveThreadLocals() { - GridThreadLocalEx.leave(); - GridThreadLocal.leave(); - } - /** {@inheritDoc} */ @Override public final void run() { // Runner thread must be recorded first as other operations // may depend on it being present. runner = Thread.currentThread(); - enterThreadLocals(); - IgniteLogger log = GridWorker.log; if (log.isDebugEnabled()) @@ -179,8 +154,6 @@ public abstract class GridWorker implements Runnable { else log.debug("Grid runnable finished normally: " + name); - leaveThreadLocals(); - // Need to set runner to null, to make sure that // further operations on this runnable won't // affect the thread which could have been recycled