private void encryptAsync()

in encryption/src/main/java/org/apache/solr/encryption/EncryptionRequestHandler.java [307:329]


  private void encryptAsync(SolrQueryRequest req, long startTimeMs) {
    log.debug("submitting async encryption");
    executor.submit(() -> {
      try {
        log.debug("running async encryption");
        CommitUpdateCommand commitCmd = new CommitUpdateCommand(req, true);
        // Trigger EncryptionMergePolicy.findForcedMerges() to re-encrypt
        // each segment which is not encrypted with the latest active key id.
        // TODO: Set maxOptimizeSegments to Integer.MAX_VALUE to trigger EncryptionMergePolicy
        //  when EncryptionHeavyLoadTest passes with it.
        commitCmd.maxOptimizeSegments = 1;
        req.getCore().getUpdateHandler().commit(commitCmd);
        log.info("Successfully encrypted the index in " + elapsedTime(startTimeMs));
      } catch (IOException e) {
        log.error("Exception while encrypting the index after " + elapsedTime(startTimeMs), e);
      } finally {
        synchronized (pendingEncryptionLock) {
          pendingEncryptions.remove(req.getCore().getName());
        }
      }
      return null;
    });
  }