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/12/28 17:18:30 UTC
[ignite] branch master updated: IGNITE-13175 Fixed
NullPointerException caused by a race between stopping tx cache and
committing transaction. Fixes #8075
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 415a532 IGNITE-13175 Fixed NullPointerException caused by a race between stopping tx cache and committing transaction. Fixes #8075
415a532 is described below
commit 415a53232e248e4d2515eeb34e5434da282dbf99
Author: Makedonskaya <m....@gmail.com>
AuthorDate: Mon Dec 28 20:17:52 2020 +0300
IGNITE-13175 Fixed NullPointerException caused by a race between stopping tx cache and committing transaction. Fixes #8075
Signed-off-by: Slava Koptilin <sl...@gmail.com>
---
.../processors/cache/transactions/IgniteTxEntry.java | 16 ++++++++++------
.../cache/transactions/TxEntryValueHolder.java | 5 +++--
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java
index 02ee036..ff23050 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java
@@ -938,8 +938,12 @@ public class IgniteTxEntry implements GridPeerDeployAware, Message {
* @param clsLdr Class loader.
* @throws IgniteCheckedException If un-marshalling failed.
*/
- public void unmarshal(GridCacheSharedContext<?, ?> ctx, boolean near,
- ClassLoader clsLdr) throws IgniteCheckedException {
+ public void unmarshal(
+ GridCacheSharedContext<?, ?> ctx,
+ boolean near,
+ ClassLoader clsLdr
+ ) throws IgniteCheckedException {
+
if (this.ctx == null) {
GridCacheContext<?, ?> cacheCtx = ctx.cacheContext(cacheId);
@@ -959,7 +963,7 @@ public class IgniteTxEntry implements GridPeerDeployAware, Message {
if (coctx == null)
throw new CacheInvalidStateException(
- "Failed to perform cache operation (cache is stopped), cacheId=" + cacheId);
+ "Failed to perform cache operation (cache is stopped), cacheId=" + cacheId);
// Unmarshal transform closure anyway if it exists.
if (transformClosBytes != null && entryProcessorsCol == null)
@@ -970,13 +974,13 @@ public class IgniteTxEntry implements GridPeerDeployAware, Message {
else {
for (CacheEntryPredicate p : filters) {
if (p != null)
- p.finishUnmarshal(ctx.cacheContext(cacheId), clsLdr);
+ p.finishUnmarshal(this.ctx, clsLdr);
}
}
- key.finishUnmarshal(context().cacheObjectContext(), clsLdr);
+ key.finishUnmarshal(coctx, clsLdr);
- val.unmarshal(this.ctx, clsLdr);
+ val.unmarshal(coctx, clsLdr);
if (expiryPlcBytes != null && expiryPlc == null)
expiryPlc = U.unmarshal(ctx, expiryPlcBytes, U.resolveClassLoader(clsLdr, ctx.gridConfig()));
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxEntryValueHolder.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxEntryValueHolder.java
index 051a11ca..fc5b780 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxEntryValueHolder.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxEntryValueHolder.java
@@ -22,6 +22,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.GridDirectTransient;
import org.apache.ignite.internal.IgniteCodeGeneratingFail;
import org.apache.ignite.internal.processors.cache.CacheObject;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheOperation;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
@@ -150,9 +151,9 @@ public class TxEntryValueHolder implements Message {
* @param ldr Class loader.
* @throws org.apache.ignite.IgniteCheckedException If unmarshalling failed.
*/
- public void unmarshal(GridCacheContext<?, ?> ctx, ClassLoader ldr) throws IgniteCheckedException {
+ public void unmarshal(CacheObjectValueContext ctx, ClassLoader ldr) throws IgniteCheckedException {
if (hasWriteVal && val != null)
- val.finishUnmarshal(ctx.cacheObjectContext(), ldr);
+ val.finishUnmarshal(ctx, ldr);
}
/** {@inheritDoc} */