code: protected CompletableFuture<Long> configure(Collection<Member> members) {
      final long index;
      try (ConfigurationEntry entry = context.getLog().create(ConfigurationEntry.class)) {
        entry.setTerm(context.getTerm())
          .setTimestamp(System.currentTimeMillis())
          .setMembers(members);
        index = context.getLog().append(entry);
        LOGGER.trace("{} - Appended {}", context.getCluster().member().address(), entry);
  
        // Store the index of the configuration entry in order to prevent other configurations from
        // being logged and committed concurrently. This is an important safety property of Raft.
        configuring = index;
        context.getClusterState().configure(new Configuration(entry.getIndex(), entry.getTerm(), entry.getTimestamp(), entry.getMembers()));
      }
  
      return appender.appendEntries(index).whenComplete((commitIndex, commitError) -> {
        context.checkThread();
        if (isOpen()) {
          // Reset the configuration index to allow new configuration changes to be committed.
          configuring = 0;
        }
      });
    }
docs: Commits the given configuration.