public List getSegmentsWithOldKeyId()

in encryption/src/main/java/org/apache/solr/encryption/EncryptionDirectory.java [315:342]


  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 (keyManager.isEncryptable(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;
  }