alluxio-master-2.x/core/common/src/main/java/alluxio/file/options/DirectoryLoadType.java
/*
 * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
 * (the "License"). You may not use this work except in compliance with the License, which is
 * available at www.apache.org/licenses/LICENSE-2.0
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied, as more fully set forth in the License.
 *
 * See the NOTICE file distributed with this work for information regarding copyright ownership.
 */

package alluxio.file.options;

/**
 * Defines how directories will be listed on the UFS when performing
 * metadata synchronization. Only effects recursive listings.
 */
public enum DirectoryLoadType {
  /**
   * Load the path recursively by running a single command which returns results
   * in batches if supported by the UFS. For example on an object store, this
   * will perform a ListBucket operation with no delimiter. This will create
   * less load on the UFS than {@link DirectoryLoadType#BFS} and {@link DirectoryLoadType#DFS}
   * but will be more impacted by latency between Alluxio and the UFS as there
   * is only a single listing running.
   * This should only be used with S3 UFS types as currently only this UFS
   * type uses batch listing, otherwise all items will be loaded into memory
   * before processing.
   */
  SINGLE_LISTING,
  /**
   * Load the path recursively by loading each nested directory in a separate
   * load command in a breadth first manner. Each directory will be listed in batches
   * if supported by the UFS. Listings of different directories will run concurrently.
   * Note that this is only an approximate BFS, as batches are processed and loaded
   * concurrently and may be loaded in different orders.
   */
  BFS,
  /**
   * Load the path recursively by loading each nested directory in a separate
   * load command in a depth first manner. Each directory will be listed in batches
   * if supported by the UFS. Listings of different directories will run concurrently.
   * Note that this is only an approximate DFS, as batches are processed and loaded
   * concurrently and may be loaded in different orders.
   */
  DFS
}
