docs: @Override
      public RelationIndexStatusReport call() throws InterruptedException {
          Preconditions.checkNotNull(g, "Graph instance must not be null");
          Preconditions.checkNotNull(relationIndexName, "Index name must not be null");
          Preconditions.checkNotNull(status, "Target status must not be null");
  
          RelationTypeIndex idx;
  
          Timer t = new Timer(TimestampProviders.MILLI).start();
          boolean timedOut;
          while (true) {
              SchemaStatus actualStatus = null;
              TitanManagement mgmt = null;
              try {
                  mgmt = g.openManagement();
                  idx = mgmt.getRelationIndex(mgmt.getRelationType(relationTypeName), relationIndexName);
                  actualStatus = idx.getIndexStatus();
                  LOGGER.info("Index {} (relation type {}) has status {}", relationIndexName, relationTypeName, actualStatus);
                  if (status.equals(actualStatus)) {
                      return new RelationIndexStatusReport(true, relationIndexName, relationTypeName, actualStatus, status, t.elapsed());
                  }
              } finally {
                  if (null != mgmt)
                      mgmt.rollback(); // Let an exception here propagate up the stack
              }
  
              timedOut = null != timeout && 0 < t.elapsed().compareTo(timeout);
  
              if (timedOut) {
                  LOGGER.info("Timed out ({}) while waiting for index {} (relation type {}) to reach status {}",
                          timeout, relationIndexName, relationTypeName, status);
                  return new RelationIndexStatusReport(false, relationIndexName, relationTypeName, actualStatus, status, t.elapsed());
              }
  
              Thread.sleep(poll.toMillis());
          }
      }