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/29 22:56:25 UTC
[ignite] branch master updated: IGNITE-13906 Fixed possible
deadlock in GridEncryptionManager. Fixes #8608
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 7fb6e07 IGNITE-13906 Fixed possible deadlock in GridEncryptionManager. Fixes #8608
7fb6e07 is described below
commit 7fb6e0723df7c0a05d42c44764319f48ee1efc7c
Author: Mirza Aliev <al...@gmail.com>
AuthorDate: Wed Dec 30 01:50:41 2020 +0300
IGNITE-13906 Fixed possible deadlock in GridEncryptionManager. Fixes #8608
Signed-off-by: Slava Koptilin <sl...@gmail.com>
---
.../managers/encryption/GridEncryptionManager.java | 47 +++++++++++++---------
1 file changed, 28 insertions(+), 19 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GridEncryptionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GridEncryptionManager.java
index 592af7e..321638a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GridEncryptionManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GridEncryptionManager.java
@@ -799,7 +799,7 @@ public class GridEncryptionManager extends GridManagerAdapter<EncryptionSpi> imp
reencryptGroups.put(grpId, pageScanner.pagesCount(grp));
if (log.isInfoEnabled())
- log.info("New encryption key for group was added [grpId=" + grpId + ", keyId=" + newKeyId + "]");
+ log.info("New encryption key for group was added [grpId=" + grpId + ", keyId=" + newKeyId + ']');
}
startReencryption(encryptionStatus.keySet());
@@ -959,7 +959,7 @@ public class GridEncryptionManager extends GridManagerAdapter<EncryptionSpi> imp
if (log.isInfoEnabled()) {
log.info("Previous encryption keys have been removed [grpId=" + grpId +
- ", keyIds=" + keyIds + "]");
+ ", keyIds=" + keyIds + ']');
}
}
}
@@ -980,7 +980,8 @@ public class GridEncryptionManager extends GridManagerAdapter<EncryptionSpi> imp
String masterKeyName = (String)metastorage.read(MASTER_KEY_NAME_PREFIX);
if (masterKeyName != null) {
- log.info("Master key name loaded from metastrore [masterKeyName=" + masterKeyName + ']');
+ if (log.isInfoEnabled())
+ log.info("Master key name loaded from metastrore [masterKeyName=" + masterKeyName + ']');
getSpi().setMasterKeyName(masterKeyName);
}
@@ -1025,18 +1026,22 @@ public class GridEncryptionManager extends GridManagerAdapter<EncryptionSpi> imp
if (newMasterKeyName != null) {
if (newMasterKeyName.equals(getSpi().getMasterKeyName())) {
- log.info("Restored master key name equals to name from system property " +
- IGNITE_MASTER_KEY_NAME_TO_CHANGE_BEFORE_STARTUP + ". This system property will be ignored and " +
- "recommended to remove [masterKeyName=" + newMasterKeyName + ']');
+ if (log.isInfoEnabled()) {
+ log.info("Restored master key name equals to name from system property " +
+ IGNITE_MASTER_KEY_NAME_TO_CHANGE_BEFORE_STARTUP + ". This system property will be ignored and " +
+ "recommended to remove [masterKeyName=" + newMasterKeyName + ']');
+ }
return;
}
recoveryMasterKeyName = true;
- log.info("System property " + IGNITE_MASTER_KEY_NAME_TO_CHANGE_BEFORE_STARTUP + " is set. Master key " +
- "will be changed locally and group keys will be re-encrypted before join to cluster. Result will " +
- "be saved to MetaStore on activation process. [masterKeyName=" + newMasterKeyName + ']');
+ if (log.isInfoEnabled()) {
+ log.info("System property " + IGNITE_MASTER_KEY_NAME_TO_CHANGE_BEFORE_STARTUP + " is set. " +
+ "Master key will be changed locally and group keys will be re-encrypted before join to cluster. " +
+ "Result will be saved to MetaStore on activation process. [masterKeyName=" + newMasterKeyName + ']');
+ }
getSpi().setMasterKeyName(newMasterKeyName);
}
@@ -1259,7 +1264,7 @@ public class GridEncryptionManager extends GridManagerAdapter<EncryptionSpi> imp
writeGroupKeysToMetaStore(grpId, grpKeys.getAll(grpId));
if (log.isInfoEnabled())
- log.info("Previous encryption keys were removed [grpId=" + grpId + ", keyIds=" + rmvKeyIds + "]");
+ log.info("Previous encryption keys were removed [grpId=" + grpId + ", keyIds=" + rmvKeyIds + ']');
}
/**
@@ -1395,28 +1400,31 @@ public class GridEncryptionManager extends GridManagerAdapter<EncryptionSpi> imp
* @param name New master key name.
*/
private void doChangeMasterKey(String name) {
- log.info("Start master key change [masterKeyName=" + name + ']');
+ if (log.isInfoEnabled())
+ log.info("Start master key change [masterKeyName=" + name + ']');
masterKeyChangeLock.writeLock().lock();
try {
getSpi().setMasterKeyName(name);
- ctx.cache().context().database().checkpointReadLock();
+ synchronized (metaStorageMux) {
+ ctx.cache().context().database().checkpointReadLock();
- try {
- writeKeysToWal();
+ try {
+ writeKeysToWal();
- synchronized (metaStorageMux) {
assert writeToMetaStoreEnabled;
writeKeysToMetaStore(true);
}
- } finally {
- ctx.cache().context().database().checkpointReadUnlock();
+ finally {
+ ctx.cache().context().database().checkpointReadUnlock();
+ }
}
- log.info("Master key successfully changed [masterKeyName=" + name + ']');
+ if (log.isInfoEnabled())
+ log.info("Master key successfully changed [masterKeyName=" + name + ']');
}
catch (Exception e) {
U.error(log, "Unable to change master key locally.", e);
@@ -1453,7 +1461,8 @@ public class GridEncryptionManager extends GridManagerAdapter<EncryptionSpi> imp
public void applyKeys(MasterKeyChangeRecordV2 rec) {
assert !writeToMetaStoreEnabled && !ctx.state().clusterState().active();
- log.info("Master key name loaded from WAL [masterKeyName=" + rec.getMasterKeyName() + ']');
+ if (log.isInfoEnabled())
+ log.info("Master key name loaded from WAL [masterKeyName=" + rec.getMasterKeyName() + ']');
try {
getSpi().setMasterKeyName(rec.getMasterKeyName());