#ignite-51: IgniteTxEntry implements Message: revert filterBytes to IgniteTxEntry, working version.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/362d073d Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/362d073d Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/362d073d Branch: refs/heads/ignite-user-req Commit: 362d073d42336f1d30e6f0e671d266ea62bf188c Parents: 52be74a Author: ivasilinets <ivasilin...@gridgain.com> Authored: Wed Mar 4 13:28:08 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Wed Mar 4 13:28:08 2015 +0300 ---------------------------------------------------------------------- .../cache/transactions/IgniteTxEntry.java | 31 +++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/362d073d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxEntry.java ---------------------------------------------------------------------- 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 0d0503f..3c02341 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 @@ -100,8 +100,12 @@ public class IgniteTxEntry implements GridPeerDeployAware, Message { /** Put filters. */ @GridToStringInclude + @GridDirectTransient private CacheEntryPredicate[] filters; + /** Filter bytes. */ + private byte[] filterBytes; + /** Flag indicating whether filters passed. Used for fast-commit transactions. */ @GridDirectTransient private boolean filtersPassed; @@ -647,6 +651,8 @@ public class IgniteTxEntry implements GridPeerDeployAware, Message { * @param filters Put filters. */ public void filters(CacheEntryPredicate[] filters) { + filterBytes = null; + this.filters = filters; } @@ -695,6 +701,11 @@ public class IgniteTxEntry implements GridPeerDeployAware, Message { if (transformClosBytes == null && entryProcessorsCol != null) transformClosBytes = CU.marshal(ctx, entryProcessorsCol); + if (F.isEmptyOrNulls(filters)) + filterBytes = null; + else if (filterBytes == null) + filterBytes = CU.marshal(ctx, filters); + if (transferExpiry) transferExpiryPlc = expiryPlc != null && expiryPlc != this.ctx.expiry(); @@ -729,12 +740,16 @@ public class IgniteTxEntry implements GridPeerDeployAware, Message { if (transformClosBytes != null && entryProcessorsCol == null) entryProcessorsCol = ctx.marshaller().unmarshal(transformClosBytes, clsLdr); - if (filters == null) - filters = CU.empty0(); - else { - for (CacheEntryPredicate p : filters) { - if (p != null) - p.finishUnmarshal(ctx.cacheContext(cacheId), clsLdr); + if (filters == null && filterBytes != null) { + filters = ctx.marshaller().unmarshal(filterBytes, clsLdr); + + if (filters == null) + filters = CU.empty0(); + else { + for (CacheEntryPredicate p : filters) { + if (p != null) + p.finishUnmarshal(ctx.cacheContext(cacheId), clsLdr); + } } } @@ -803,7 +818,7 @@ public class IgniteTxEntry implements GridPeerDeployAware, Message { writer.incrementState(); case 5: - if (!writer.writeObjectArray("filters", filters, MessageCollectionItemType.MSG)) + if (!writer.writeByteArray("filterBytes", filterBytes)) return false; writer.incrementState(); @@ -892,7 +907,7 @@ public class IgniteTxEntry implements GridPeerDeployAware, Message { reader.incrementState(); case 5: - filters = reader.readObjectArray("filters", MessageCollectionItemType.MSG, CacheEntryPredicate.class); + filterBytes = reader.readByteArray("filterBytes"); if (!reader.isLastRead()) return false;