in encryption/src/main/java/org/apache/solr/encryption/EncryptionDirectory.java [300:328]
public List<SegmentCommitInfo> getSegmentsWithOldKeyId(SegmentInfos segmentInfos, String activeKeyId)
throws IOException {
List<SegmentCommitInfo> segmentsWithOldKeyId = null;
if (log.isDebugEnabled()) {
log.debug("Reading segments {} for key ids different from {}",
segmentInfos.asList().stream().map(i -> i.info.name).collect(Collectors.toList()),
activeKeyId);
}
for (SegmentCommitInfo segmentCommitInfo : segmentInfos) {
for (String fileName : segmentCommitInfo.files()) {
if (keySupplier.shouldEncrypt(fileName)) {
try (IndexInput fileInput = in.openInput(fileName, IOContext.READ)) {
String keyRef = getKeyRefForReading(fileInput);
String keyId = keyRef == null ? null : getKeyIdFromCommit(keyRef, segmentInfos.getUserData());
log.debug("Reading file {} of segment {} => keyId={}",
fileName, segmentCommitInfo.info.name, keyId);
if (!Objects.equals(keyId, activeKeyId)) {
if (segmentsWithOldKeyId == null) {
segmentsWithOldKeyId = new ArrayList<>();
}
segmentsWithOldKeyId.add(segmentCommitInfo);
}
}
break;
}
}
}
return segmentsWithOldKeyId == null ? Collections.emptyList() : segmentsWithOldKeyId;
}