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 <[email protected]>
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 <[email protected]>
---
.../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} */