You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sk...@apache.org on 2020/08/03 23:43:51 UTC
[ignite] branch master updated: IGNITE-13158 Get rid of
Externalizable interface at IgniteTxAdapter. Fixes #8099
This is an automated email from the ASF dual-hosted git repository.
sk0x50 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 07cc371 IGNITE-13158 Get rid of Externalizable interface at IgniteTxAdapter. Fixes #8099
07cc371 is described below
commit 07cc371e46d06fa3c8ccf7d81deff330f1e42a44
Author: Slava Koptilin <sl...@gmail.com>
AuthorDate: Tue Aug 4 02:30:32 2020 +0300
IGNITE-13158 Get rid of Externalizable interface at IgniteTxAdapter. Fixes #8099
---
.../GridDistributedTxRemoteAdapter.java | 11 ---
.../cache/distributed/dht/GridDhtTxLocal.java | 11 ---
.../distributed/dht/GridDhtTxLocalAdapter.java | 11 ---
.../cache/distributed/dht/GridDhtTxRemote.java | 11 ---
.../distributed/dht/atomic/GridDhtAtomicCache.java | 25 ++++--
.../distributed/near/GridNearAtomicCache.java | 15 +++-
.../cache/distributed/near/GridNearTxLocal.java | 11 ---
.../cache/distributed/near/GridNearTxRemote.java | 11 ---
.../cache/transactions/IgniteTxAdapter.java | 95 ++++------------------
.../cache/transactions/IgniteTxLocalAdapter.java | 11 ---
.../processors/task/GridTaskProcessor.java | 14 +++-
.../util/lang/GridMetadataAwareAdapter.java | 40 ---------
.../TxDataConsistencyOnCommitFailureTest.java | 4 -
13 files changed, 63 insertions(+), 207 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
index 54d5381..90a7830 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.cache.distributed;
-import java.io.Externalizable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -104,9 +103,6 @@ import static org.apache.ignite.transactions.TransactionState.UNKNOWN;
*/
public abstract class GridDistributedTxRemoteAdapter extends IgniteTxAdapter
implements IgniteTxRemoteEx {
- /** */
- private static final long serialVersionUID = 0L;
-
/** Commit allowed field updater. */
private static final AtomicIntegerFieldUpdater<GridDistributedTxRemoteAdapter> COMMIT_ALLOWED_UPD =
AtomicIntegerFieldUpdater.newUpdater(GridDistributedTxRemoteAdapter.class, "commitAllowed");
@@ -132,13 +128,6 @@ public abstract class GridDistributedTxRemoteAdapter extends IgniteTxAdapter
@Nullable private String txLbl;
/**
- * Empty constructor required for {@link Externalizable}.
- */
- public GridDistributedTxRemoteAdapter() {
- // No-op.
- }
-
- /**
* @param ctx Cache registry.
* @param nodeId Node ID.
* @param xidVer XID version.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
index c83681c..5b86c8c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.cache.distributed.dht;
-import java.io.Externalizable;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
@@ -69,9 +68,6 @@ import static org.apache.ignite.transactions.TransactionState.PREPARING;
*/
public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMappedVersion {
/** */
- private static final long serialVersionUID = 0L;
-
- /** */
private UUID nearNodeId;
/** Near future ID. */
@@ -101,13 +97,6 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
private @Nullable String lb;
/**
- * Empty constructor required for {@link Externalizable}.
- */
- public GridDhtTxLocal() {
- // No-op.
- }
-
- /**
* @param nearNodeId Near node ID that initiated transaction.
* @param nearXidVer Near transaction ID.
* @param nearFutId Near future ID.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
index 6c30c54..919071a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.cache.distributed.dht;
-import java.io.Externalizable;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -78,9 +77,6 @@ import static org.apache.ignite.transactions.TransactionState.UNKNOWN;
* Replicated user transaction.
*/
public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
- /** */
- private static final long serialVersionUID = 0L;
-
/** Asynchronous rollback marker for lock futures. */
public static final IgniteInternalFuture<Boolean> ROLLBACK_FUT = new GridFutureAdapter<>();
@@ -113,13 +109,6 @@ public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
@GridToStringExclude
protected volatile IgniteInternalFuture<?> lockFut;
- /**
- * Empty constructor required for {@link Externalizable}.
- */
- protected GridDhtTxLocalAdapter() {
- // No-op.
- }
-
/** Tracing span. */
private Span span = NoopSpan.INSTANCE;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxRemote.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxRemote.java
index 853a848..bb6a1db 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxRemote.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxRemote.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.cache.distributed.dht;
-import java.io.Externalizable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -53,9 +52,6 @@ import static org.apache.ignite.internal.processors.cache.GridCacheUtils.isNearE
* Transaction created by system implicitly on remote nodes.
*/
public class GridDhtTxRemote extends GridDistributedTxRemoteAdapter {
- /** */
- private static final long serialVersionUID = 0L;
-
/** Near node ID. */
private UUID nearNodeId;
@@ -69,13 +65,6 @@ public class GridDhtTxRemote extends GridDistributedTxRemoteAdapter {
private boolean storeWriteThrough;
/**
- * Empty constructor required for {@link Externalizable}.
- */
- public GridDhtTxRemote() {
- // No-op.
- }
-
- /**
* This constructor is meant for optimistic transactions.
*
* @param ctx Cache context.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index 6d9c0e7..67710e8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -124,6 +124,9 @@ import static org.apache.ignite.IgniteSystemProperties.IGNITE_ATOMIC_DEFERRED_AC
import static org.apache.ignite.IgniteSystemProperties.IGNITE_ATOMIC_DEFERRED_ACK_TIMEOUT;
import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_ASYNC;
import static org.apache.ignite.cache.CacheWriteSynchronizationMode.PRIMARY_SYNC;
+import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_PUT;
+import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_READ;
+import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_REMOVED;
import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_VALIDATE_CACHE_REQUESTS;
import static org.apache.ignite.internal.processors.cache.GridCacheOperation.DELETE;
import static org.apache.ignite.internal.processors.cache.GridCacheOperation.TRANSFORM;
@@ -698,6 +701,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
/** {@inheritDoc} */
@Override public IgniteInternalFuture<?> putAllConflictAsync(Map<KeyCacheObject, GridCacheDrInfo> conflictMap) {
ctx.dr().onReceiveCacheEntriesReceived(conflictMap.size());
+
if (map != null && keyCheck)
validateCacheKeys(conflictMap.keySet());
@@ -1816,6 +1820,12 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
IgniteCacheExpiryPolicy expiry = null;
+ boolean needTaskName = ctx.events().isRecordable(EVT_CACHE_OBJECT_READ) ||
+ ctx.events().isRecordable(EVT_CACHE_OBJECT_PUT) ||
+ ctx.events().isRecordable(EVT_CACHE_OBJECT_REMOVED);
+
+ String taskName = needTaskName ? ctx.kernalContext().task().resolveTaskName(req.taskNameHash()) : null;
+
ctx.shared().database().checkpointReadLock();
try {
@@ -1932,7 +1942,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
}
}
- update(node, locked, req, res, updDhtRes);
+ update(node, locked, req, res, updDhtRes, taskName);
dhtFut = updDhtRes.dhtFuture();
deleted = updDhtRes.deleted();
@@ -2052,6 +2062,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
* @param req Request.
* @param res Response.
* @param dhtUpdRes DHT update result
+ * @param taskName Task name.
* @return Operation result.
* @throws GridCacheEntryRemovedException If got obsolete entry.
*/
@@ -2060,13 +2071,13 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
List<GridDhtCacheEntry> locked,
GridNearAtomicAbstractUpdateRequest req,
GridNearAtomicUpdateResponse res,
- DhtAtomicUpdateResult dhtUpdRes)
+ DhtAtomicUpdateResult dhtUpdRes,
+ String taskName
+ )
throws GridCacheEntryRemovedException
{
GridDhtPartitionTopology top = topology();
- String taskName = ctx.kernalContext().task().resolveTaskName(req.taskNameHash());
-
boolean hasNear = req.nearCache();
// Assign next version for update inside entries lock.
@@ -3397,7 +3408,11 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
boolean intercept = req.forceTransformBackups() && ctx.config().getInterceptor() != null;
- String taskName = ctx.kernalContext().task().resolveTaskName(req.taskNameHash());
+ boolean needTaskName = ctx.events().isRecordable(EVT_CACHE_OBJECT_READ) ||
+ ctx.events().isRecordable(EVT_CACHE_OBJECT_PUT) ||
+ ctx.events().isRecordable(EVT_CACHE_OBJECT_REMOVED);
+
+ String taskName = needTaskName ? ctx.kernalContext().task().resolveTaskName(req.taskNameHash()) : null;
ctx.shared().database().checkpointReadLock();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
index 4212b87..1509c5e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
@@ -62,6 +62,9 @@ import org.apache.ignite.transactions.TransactionIsolation;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_ATOMIC_CACHE_DELETE_HISTORY_SIZE;
+import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_PUT;
+import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_READ;
+import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_REMOVED;
import static org.apache.ignite.internal.processors.cache.GridCacheOperation.DELETE;
import static org.apache.ignite.internal.processors.cache.GridCacheOperation.TRANSFORM;
import static org.apache.ignite.internal.processors.cache.GridCacheOperation.UPDATE;
@@ -148,7 +151,11 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
int nearValIdx = 0;
- String taskName = ctx.kernalContext().task().resolveTaskName(req.taskNameHash());
+ boolean needTaskName = ctx.events().isRecordable(EVT_CACHE_OBJECT_READ) ||
+ ctx.events().isRecordable(EVT_CACHE_OBJECT_PUT) ||
+ ctx.events().isRecordable(EVT_CACHE_OBJECT_REMOVED);
+
+ String taskName = needTaskName ? ctx.kernalContext().task().resolveTaskName(req.taskNameHash()) : null;
for (int i = 0; i < req.size(); i++) {
if (F.contains(skipped, i))
@@ -310,7 +317,11 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
boolean intercept = req.forceTransformBackups() && ctx.config().getInterceptor() != null;
- String taskName = ctx.kernalContext().task().resolveTaskName(req.taskNameHash());
+ boolean needTaskName = ctx.events().isRecordable(EVT_CACHE_OBJECT_READ) ||
+ ctx.events().isRecordable(EVT_CACHE_OBJECT_PUT) ||
+ ctx.events().isRecordable(EVT_CACHE_OBJECT_REMOVED);
+
+ String taskName = needTaskName ? ctx.kernalContext().task().resolveTaskName(req.taskNameHash()) : null;
List<KeyCacheObject> nearEvicted = null;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index 80c68c4..0525a72 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.cache.distributed.near;
-import java.io.Externalizable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
@@ -147,9 +146,6 @@ import static org.apache.ignite.transactions.TransactionState.UNKNOWN;
@SuppressWarnings("unchecked")
public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeoutObject, AutoCloseable, MvccCoordinatorChangeAware {
/** */
- private static final long serialVersionUID = 0L;
-
- /** */
private static final ThreadLocal<SimpleDateFormat> TIME_FORMAT =
ThreadLocal.withInitial(() -> new SimpleDateFormat("HH:mm:ss.SSS"));
@@ -256,13 +252,6 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou
private long crdVer;
/**
- * Empty constructor required for {@link Externalizable}.
- */
- public GridNearTxLocal() {
- // No-op.
- }
-
- /**
* @param ctx Cache registry.
* @param implicit Implicit flag.
* @param implicitSingle Implicit with one key flag.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxRemote.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxRemote.java
index 0da3edb..c8e442c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxRemote.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxRemote.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.cache.distributed.near;
-import java.io.Externalizable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -48,9 +47,6 @@ import org.jetbrains.annotations.Nullable;
* Transaction created by system implicitly on remote nodes.
*/
public class GridNearTxRemote extends GridDistributedTxRemoteAdapter {
- /** */
- private static final long serialVersionUID = 0L;
-
/** Evicted keys. */
private Collection<IgniteTxKey> evicted = new LinkedList<>();
@@ -64,13 +60,6 @@ public class GridNearTxRemote extends GridDistributedTxRemoteAdapter {
private Map<IgniteTxKey, GridCacheVersion> owned;
/**
- * Empty constructor required for {@link Externalizable}.
- */
- public GridNearTxRemote() {
- // No-op.
- }
-
- /**
* This constructor is meant for optimistic transactions.
*
* @param topVer Transaction topology version.
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 d7c0277..f4997f3 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
@@ -17,11 +17,6 @@
package org.apache.ignite.internal.processors.cache.transactions;
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.ObjectStreamException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -98,7 +93,9 @@ import org.apache.ignite.transactions.TransactionIsolation;
import org.apache.ignite.transactions.TransactionState;
import org.jetbrains.annotations.Nullable;
+import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_PUT;
import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_READ;
+import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_REMOVED;
import static org.apache.ignite.events.EventType.EVT_TX_COMMITTED;
import static org.apache.ignite.events.EventType.EVT_TX_RESUMED;
import static org.apache.ignite.events.EventType.EVT_TX_ROLLED_BACK;
@@ -127,10 +124,7 @@ import static org.apache.ignite.transactions.TransactionState.SUSPENDED;
/**
* Managed transaction adapter.
*/
-public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implements IgniteInternalTx, Externalizable {
- /** */
- private static final long serialVersionUID = 0L;
-
+public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implements IgniteInternalTx {
/** Static logger to avoid re-creation. */
private static final AtomicReference<IgniteLogger> logRef = new AtomicReference<>();
@@ -255,7 +249,7 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
protected int taskNameHash;
/** Task name. */
- protected String taskName;
+ protected final String taskName;
/** Store used flag. */
protected boolean storeEnabled = true;
@@ -283,13 +277,6 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
private GridNearTxLocal parentTx;
/**
- * Empty constructor required for {@link Externalizable}.
- */
- protected IgniteTxAdapter() {
- // No-op.
- }
-
- /**
* @param cctx Cache registry.
* @param xidVer Transaction ID.
* @param implicit Implicit flag.
@@ -345,6 +332,12 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
log = U.logger(cctx.kernalContext(), logRef, this);
consistentIdMapper = new ConsistentIdMapper(cctx.discovery());
+
+ boolean needTaskName = cctx.gridEvents().isRecordable(EVT_CACHE_OBJECT_READ) ||
+ cctx.gridEvents().isRecordable(EVT_CACHE_OBJECT_PUT) ||
+ cctx.gridEvents().isRecordable(EVT_CACHE_OBJECT_REMOVED);
+
+ taskName = needTaskName ? cctx.kernalContext().task().resolveTaskName(taskNameHash) : null;
}
/**
@@ -395,6 +388,12 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
log = U.logger(cctx.kernalContext(), logRef, this);
consistentIdMapper = new ConsistentIdMapper(cctx.discovery());
+
+ boolean needTaskName = cctx.gridEvents().isRecordable(EVT_CACHE_OBJECT_READ) ||
+ cctx.gridEvents().isRecordable(EVT_CACHE_OBJECT_PUT) ||
+ cctx.gridEvents().isRecordable(EVT_CACHE_OBJECT_REMOVED);
+
+ taskName = needTaskName ? cctx.kernalContext().task().resolveTaskName(taskNameHash) : null;
}
/**
@@ -1743,10 +1742,7 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
* @return Resolves task name.
*/
public String resolveTaskName() {
- if (taskName != null)
- return taskName;
-
- return (taskName = cctx.kernalContext().task().resolveTaskName(taskNameHash));
+ return taskName;
}
/**
@@ -1908,63 +1904,6 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
}
/** {@inheritDoc} */
- @Override public void writeExternal(ObjectOutput out) throws IOException {
- writeExternalMeta(out);
-
- out.writeObject(xidVer);
- out.writeBoolean(invalidate);
- out.writeLong(timeout);
- out.writeLong(threadId);
- out.writeLong(startTime);
-
- U.writeUuid(out, nodeId);
-
- out.write(isolation.ordinal());
- out.write(concurrency.ordinal());
- out.write(state().ordinal());
- }
-
- /** {@inheritDoc} */
- @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- readExternalMeta(in);
-
- xidVer = (GridCacheVersion)in.readObject();
- invalidate = in.readBoolean();
- timeout = in.readLong();
- threadId = in.readLong();
- startTime = in.readLong();
-
- nodeId = U.readUuid(in);
-
- isolation = TransactionIsolation.fromOrdinal(in.read());
- concurrency = TransactionConcurrency.fromOrdinal(in.read());
-
- state = TransactionState.fromOrdinal(in.read());
- }
-
- /**
- * Reconstructs object on unmarshalling.
- *
- * @return Reconstructed object.
- * @throws ObjectStreamException Thrown in case of unmarshalling error.
- */
- protected Object readResolve() throws ObjectStreamException {
- return new TxShadow(
- xidVer.asIgniteUuid(),
- nodeId,
- threadId,
- startTime,
- isolation,
- concurrency,
- invalidate,
- implicit,
- timeout,
- state(),
- isRollbackOnly()
- );
- }
-
- /** {@inheritDoc} */
@Override public boolean equals(Object o) {
return o == this || (o instanceof IgniteTxAdapter && xidVer.equals(((IgniteTxAdapter)o).xidVer));
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 18ccdea..8d3d8f0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.cache.transactions;
-import java.io.Externalizable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -110,9 +109,6 @@ import static org.apache.ignite.transactions.TransactionState.UNKNOWN;
* Transaction adapter for cache transactions.
*/
public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements IgniteTxLocalEx {
- /** */
- private static final long serialVersionUID = 0L;
-
/** Commit error updater. */
protected static final AtomicReferenceFieldUpdater<IgniteTxLocalAdapter, Throwable> COMMIT_ERR_UPD =
AtomicReferenceFieldUpdater.newUpdater(IgniteTxLocalAdapter.class, Throwable.class, "commitErr");
@@ -159,13 +155,6 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
protected volatile boolean qryEnlisted;
/**
- * Empty constructor required for {@link Externalizable}.
- */
- protected IgniteTxLocalAdapter() {
- // No-op.
- }
-
- /**
* @param cctx Cache registry.
* @param xidVer Transaction ID.
* @param implicit {@code True} if transaction was implicitly started by the system,
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
index 9252153..123ba0f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
@@ -70,6 +70,7 @@ import org.apache.ignite.internal.processors.metric.impl.LongAdderMetric;
import org.apache.ignite.internal.util.GridConcurrentFactory;
import org.apache.ignite.internal.util.GridSpinReadWriteLock;
import org.apache.ignite.internal.util.lang.GridPeerDeployAware;
+import org.apache.ignite.internal.util.lang.GridPlainRunnable;
import org.apache.ignite.internal.util.typedef.C1;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.X;
@@ -92,6 +93,7 @@ import static org.apache.ignite.internal.GridTopic.TOPIC_JOB_SIBLINGS;
import static org.apache.ignite.internal.GridTopic.TOPIC_TASK;
import static org.apache.ignite.internal.GridTopic.TOPIC_TASK_CANCEL;
import static org.apache.ignite.internal.managers.communication.GridIoPolicy.SYSTEM_POOL;
+import static org.apache.ignite.internal.processors.cache.GridCacheUtils.isPersistenceEnabled;
import static org.apache.ignite.internal.processors.metric.GridMetricManager.SYS_METRICS;
import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_SKIP_AUTH;
import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_SUBGRID;
@@ -151,6 +153,11 @@ public class GridTaskProcessor extends GridProcessorAdapter implements IgniteCha
private final CountDownLatch startLatch = new CountDownLatch(1);
/**
+ * {@code true} if local node has persistent region in configuration and is not a client.
+ */
+ private final boolean isPersistenceEnabled;
+
+ /**
* @param ctx Kernal context.
*/
public GridTaskProcessor(GridKernalContext ctx) {
@@ -168,6 +175,8 @@ public class GridTaskProcessor extends GridProcessorAdapter implements IgniteCha
new ComputeTaskViewWalker(),
tasks.entrySet(),
e -> new ComputeTaskView(e.getKey(), e.getValue()));
+
+ isPersistenceEnabled = !ctx.clientNode() && isPersistenceEnabled(ctx.config());
}
/** {@inheritDoc} */
@@ -510,6 +519,9 @@ public class GridTaskProcessor extends GridProcessorAdapter implements IgniteCha
* @return Task name or {@code null} if not found.
*/
public String resolveTaskName(int taskNameHash) {
+ assert !isPersistenceEnabled || !ctx.cache().context().database().checkpointLockIsHeldByThread() :
+ "Resolving a task name should not be executed under the checkpoint lock.";
+
if (taskNameHash == 0)
return null;
@@ -1388,7 +1400,7 @@ public class GridTaskProcessor extends GridProcessorAdapter implements IgniteCha
final UUID nodeId = ((DiscoveryEvent)evt).eventNode().id();
- ctx.closure().runLocalSafe(new Runnable() {
+ ctx.closure().runLocalSafe(new GridPlainRunnable() {
@Override public void run() {
if (!lock.tryReadLock())
return;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridMetadataAwareAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridMetadataAwareAdapter.java
index 58f8797..48fe4c5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridMetadataAwareAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridMetadataAwareAdapter.java
@@ -17,10 +17,6 @@
package org.apache.ignite.internal.util.lang;
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
import java.util.Arrays;
import java.util.concurrent.Callable;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
@@ -332,42 +328,6 @@ public class GridMetadataAwareAdapter {
}
}
- /**
- * Convenience way for super-classes which implement {@link Externalizable} to serialize metadata. Super-classes
- * must call this method explicitly from within {@link Externalizable#writeExternal(ObjectOutput)} methods
- * implementation.
- *
- * @param out Output to write to.
- * @throws IOException If I/O error occurred.
- */
- protected void writeExternalMeta(ObjectOutput out) throws IOException {
- Object[] cp;
-
- // Avoid code warning (suppressing is bad here, because we need this warning for other places).
- synchronized (this) {
- cp = Arrays.copyOf(this.data, this.data.length);
- }
-
- out.writeObject(cp);
- }
-
- /**
- * Convenience way for super-classes which implement {@link Externalizable} to serialize metadata. Super-classes
- * must call this method explicitly from within {@link Externalizable#readExternal(ObjectInput)} methods
- * implementation.
- *
- * @param in Input to read from.
- * @throws IOException If I/O error occurred.
- * @throws ClassNotFoundException If some class could not be found.
- */
- protected void readExternalMeta(ObjectInput in) throws IOException, ClassNotFoundException {
- Object[] cp = (Object[])in.readObject();
-
- synchronized (this) {
- this.data = cp;
- }
- }
-
/** {@inheritDoc} */
@Override public Object clone() {
try {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDataConsistencyOnCommitFailureTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDataConsistencyOnCommitFailureTest.java
index e2cb1e2..39055d6 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDataConsistencyOnCommitFailureTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDataConsistencyOnCommitFailureTest.java
@@ -202,10 +202,6 @@ public class TxDataConsistencyOnCommitFailureTest extends GridCommonAbstractTest
/** */
private static class MockGridNearTxLocal extends GridNearTxLocal {
- /** Empty constructor. */
- public MockGridNearTxLocal() {
- }
-
/**
* @param ctx Context.
* @param implicit Implicit.