IGNITE-9996: Performance drop final fix.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/475a0a71 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/475a0a71 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/475a0a71 Branch: refs/heads/ignite-9720 Commit: 475a0a71500dc4f638100f3ec0c7f8029db42f4a Parents: 5c01c41 Author: Nikolay Izhikov <[email protected]> Authored: Fri Nov 23 21:22:12 2018 +0300 Committer: Nikolay Izhikov <[email protected]> Committed: Fri Nov 23 21:31:02 2018 +0300 ---------------------------------------------------------------------- .../cache/persistence/pagemem/PageMemoryImpl.java | 6 +++--- .../wal/serializer/RecordDataV1Serializer.java | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/475a0a71/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java index 6f7d2c5..b64b294 100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java @@ -228,7 +228,7 @@ public class PageMemoryImpl implements PageMemoryEx { private final GridEncryptionManager encMgr; /** */ - private final EncryptionSpi encSpi; + private final boolean encryptionDisabled; /** */ private final IgniteLogger log; @@ -324,7 +324,7 @@ public class PageMemoryImpl implements PageMemoryEx { storeMgr = ctx.pageStore(); walMgr = ctx.wal(); encMgr = ctx.kernalContext().encryption(); - encSpi = ctx.gridConfig().getEncryptionSpi(); + encryptionDisabled = ctx.gridConfig().getEncryptionSpi() instanceof NoopEncryptionSpi; assert storeMgr != null; assert walMgr != null; @@ -973,7 +973,7 @@ public class PageMemoryImpl implements PageMemoryEx { /** {@inheritDoc} */ @Override public int realPageSize(int grpId) { - if ((encSpi instanceof NoopEncryptionSpi) || encMgr.groupKey(grpId) == null) + if (encryptionDisabled || encMgr.groupKey(grpId) == null) return pageSize(); return encPageSize; http://git-wip-us.apache.org/repos/asf/ignite/blob/475a0a71/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordDataV1Serializer.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordDataV1Serializer.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordDataV1Serializer.java index ab35f46..84c4074 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordDataV1Serializer.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordDataV1Serializer.java @@ -146,6 +146,9 @@ public class RecordDataV1Serializer implements RecordDataSerializer { private final GridEncryptionManager encMgr; /** */ + private final boolean encryptionDisabled; + + /** */ private static final byte ENCRYPTED = 1; /** */ @@ -162,6 +165,8 @@ public class RecordDataV1Serializer implements RecordDataSerializer { this.encSpi = cctx.gridConfig().getEncryptionSpi(); this.encMgr = cctx.kernalContext().encryption(); + encryptionDisabled = encSpi instanceof NoopEncryptionSpi; + //This happen on offline WAL iteration(we don't have encryption keys available). if (encSpi != null) this.realPageSize = CU.encryptedPageSize(pageSize, encSpi); @@ -227,7 +232,7 @@ public class RecordDataV1Serializer implements RecordDataSerializer { * @return {@code True} if this record should be encrypted. */ private boolean needEncryption(WALRecord rec) { - if (encSpi instanceof NoopEncryptionSpi) + if (encryptionDisabled) return false; if (!(rec instanceof WalRecordCacheGroupAware)) @@ -241,7 +246,7 @@ public class RecordDataV1Serializer implements RecordDataSerializer { * @return {@code True} if this record should be encrypted. */ private boolean needEncryption(int grpId) { - if (encSpi instanceof NoopEncryptionSpi) + if (encryptionDisabled) return false; GridEncryptionManager encMgr = cctx.kernalContext().encryption(); @@ -1923,6 +1928,9 @@ public class RecordDataV1Serializer implements RecordDataSerializer { * @return Real record type. */ RecordType recordType(WALRecord rec) { + if (encryptionDisabled) + return rec.type(); + if (needEncryption(rec)) return ENCRYPTED_RECORD; @@ -1937,6 +1945,9 @@ public class RecordDataV1Serializer implements RecordDataSerializer { * @return {@code True} if this data record should be encrypted. */ boolean isDataRecordEncrypted(DataRecord rec) { + if (encryptionDisabled) + return false; + for (DataEntry e : rec.writeEntries()) { if (cctx.cacheContext(e.cacheId()) != null && needEncryption(cctx.cacheContext(e.cacheId()).groupId())) return true; @@ -2014,7 +2025,7 @@ public class RecordDataV1Serializer implements RecordDataSerializer { for (DataEntry entry : dataRec.writeEntries()) { int clSz = entrySize(entry); - if (needEncryption(cctx.cacheContext(entry.cacheId()).groupId())) + if (!encryptionDisabled && needEncryption(cctx.cacheContext(entry.cacheId()).groupId())) sz += encSpi.encryptedSize(clSz) + 1 /* encrypted flag */ + 4 /* groupId */ + 4 /* data size */; else { sz += clSz;
