/* * 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.client; import alluxio.annotation.PublicApi; import javax.annotation.concurrent.ThreadSafe; /** * Write types for creating a file in Alluxio. */ @PublicApi @ThreadSafe public enum WriteType { /** * Write the file, guaranteeing the data is written to Alluxio storage or failing the operation. * The data will be written to the highest tier in a worker's storage. Data will not be * persisted to the under storage. */ MUST_CACHE(1), /** * Write the file and try to cache it. * * @deprecated This write type is deprecated as of v0.8 and not recommended for use. Use either * {@link #MUST_CACHE} or {@link #CACHE_THROUGH} depending on your data persistence * requirements. */ @Deprecated TRY_CACHE(2), /** * Write the file synchronously to the under fs, and also try to write to the highest tier in a * worker's Alluxio storage. */ CACHE_THROUGH(3), /** * Write the file synchronously to the under fs, skipping Alluxio storage. */ THROUGH(4), /** * [Experimental] Write the file asynchronously to the under fs. */ ASYNC_THROUGH(5), /** * Do not store the data in Alluxio or Under Storage. This write type should only be used for * testing. */ NONE(6), ; private final int mValue; WriteType(int value) { mValue = value; } /** * @return the {@link AlluxioStorageType} which is associated with this mode */ public AlluxioStorageType getAlluxioStorageType() { if (isCache()) { return AlluxioStorageType.STORE; } return AlluxioStorageType.NO_STORE; } /** * @return the {@link alluxio.client.UnderStorageType} which is associated with this mode */ public UnderStorageType getUnderStorageType() { if (isThrough()) { return UnderStorageType.SYNC_PERSIST; } else if (isAsync()) { return UnderStorageType.ASYNC_PERSIST; } return UnderStorageType.NO_PERSIST; } /** * @return the value of the write type */ public int getValue() { return mValue; } /** * @return true if by this write type data will be persisted <em>asynchronously</em> to under * storage (e.g., {@link #ASYNC_THROUGH}), false otherwise */ public boolean isAsync() { return mValue == ASYNC_THROUGH.mValue; } /** * @return true if by this write type data will be cached in Alluxio space (e.g., * {@link #MUST_CACHE}, {@link #CACHE_THROUGH}, {@link #TRY_CACHE}, or * {@link #ASYNC_THROUGH}), false otherwise */ public boolean isCache() { return (mValue == MUST_CACHE.mValue) || (mValue == CACHE_THROUGH.mValue) || (mValue == TRY_CACHE.mValue) || (mValue == ASYNC_THROUGH.mValue); } /** * @return true if by this write type data will be persisted <em>synchronously</em> to under * storage (e.g., {@link #CACHE_THROUGH} or {@link #THROUGH}), false otherwise */ public boolean isThrough() { return (mValue == CACHE_THROUGH.mValue) || (mValue == THROUGH.mValue); } }