in encryption/src/main/java/org/apache/solr/encryption/EncryptionUpdateLog.java [96:118]
public synchronized boolean encryptLogs() throws IOException {
Map<String, String> latestCommitData;
String activeKeyRef;
EncryptionDirectory directory = directorySupplier.get();
try {
directory.forceReadCommitUserData();
latestCommitData = directory.getLatestCommitData().data;
activeKeyRef = getActiveKeyRefFromCommit(latestCommitData);
for (TransactionLog log : logs) {
EncryptionTransactionLog encLog = (EncryptionTransactionLog) log;
if (encLog.refCount() <= 1) {
// The log is only owned by this update log. We can encrypt it.
encryptLog(encLog, activeKeyRef, directory);
}
}
} finally {
directorySupplier.release(directory);
}
String keyId = activeKeyRef == null ? null : getKeyIdFromCommit(activeKeyRef, latestCommitData);
boolean allLogsEncrypted = areAllLogsEncryptedWithKeyId(keyId, latestCommitData);
shouldEncryptOldLogs = !allLogsEncrypted;
return allLogsEncrypted;
}