Search in sources :

Example 6 with AlluxioTException

use of alluxio.thrift.AlluxioTException in project alluxio by Alluxio.

the class AlluxioExceptionTest method unknownException.

@Test
public void unknownException() {
    final String testMessage = "testMessage";
    AlluxioTException tException = new AlluxioTException("testType", testMessage, "testClass");
    AlluxioException exception = AlluxioException.fromThrift(tException);
    Assert.assertEquals(testMessage, exception.getMessage());
}
Also used : AlluxioTException(alluxio.thrift.AlluxioTException) Test(org.junit.Test)

Example 7 with AlluxioTException

use of alluxio.thrift.AlluxioTException in project alluxio by Alluxio.

the class AbstractThriftClient method retryRPC.

/**
   * Similar to {@link #retryRPC(RpcCallable)} except that the RPC call may throw
   * {@link AlluxioTException} and once it is thrown, it will be transformed into
   * {@link AlluxioException} and be thrown.
   *
   * @param rpc the RPC call to be executed
   * @param <V> type of return value of the RPC call
   * @return the return value of the RPC call
   * @throws AlluxioException when {@link AlluxioTException} is thrown by the RPC call
   * @throws IOException when retries exceeds {@link #RPC_MAX_NUM_RETRY} or some server
   *         side IOException occurred.
   */
protected <V> V retryRPC(RpcCallableThrowsAlluxioTException<V, C> rpc) throws AlluxioException, IOException {
    TException exception = null;
    RetryPolicy retryPolicy = new ExponentialBackoffRetry(BASE_SLEEP_MS, MAX_SLEEP_MS, RPC_MAX_NUM_RETRY);
    do {
        C client = acquireClient();
        try {
            return rpc.call(client);
        } catch (AlluxioTException e) {
            AlluxioException ae = AlluxioException.fromThrift(e);
            processException(client, ae);
            exception = new TException(ae);
        } catch (ThriftIOException e) {
            throw new IOException(e);
        } catch (TException e) {
            LOG.error(e.getMessage(), e);
            closeClient(client);
            exception = e;
        } finally {
            releaseClient(client);
        }
    } while (retryPolicy.attemptRetry());
    LOG.error("Failed after " + retryPolicy.getRetryCount() + " retries.");
    Preconditions.checkNotNull(exception);
    throw new IOException(exception);
}
Also used : AlluxioTException(alluxio.thrift.AlluxioTException) TException(org.apache.thrift.TException) AlluxioTException(alluxio.thrift.AlluxioTException) ThriftIOException(alluxio.thrift.ThriftIOException) ExponentialBackoffRetry(alluxio.retry.ExponentialBackoffRetry) ThriftIOException(alluxio.thrift.ThriftIOException) IOException(java.io.IOException) RetryPolicy(alluxio.retry.RetryPolicy) AlluxioException(alluxio.exception.AlluxioException)

Example 8 with AlluxioTException

use of alluxio.thrift.AlluxioTException in project alluxio by Alluxio.

the class AbstractThriftClient method retryRPC.

/**
   * Tries to execute an RPC defined as a {@link RpcCallable}.
   *
   * @param rpc the RPC call to be executed
   * @param <V> type of return value of the RPC call
   * @return the return value of the RPC call
   * @throws IOException when retries exceeds {@link #RPC_MAX_NUM_RETRY} or some server
   *         side IOException occurred.
   */
protected <V> V retryRPC(RpcCallable<V, C> rpc) throws IOException {
    TException exception;
    RetryPolicy retryPolicy = new ExponentialBackoffRetry(BASE_SLEEP_MS, MAX_SLEEP_MS, RPC_MAX_NUM_RETRY);
    do {
        C client = acquireClient();
        try {
            return rpc.call(client);
        } catch (ThriftIOException e) {
            throw new IOException(e);
        } catch (AlluxioTException e) {
            AlluxioException ae = AlluxioException.fromThrift(e);
            try {
                processException(client, ae);
            } catch (AlluxioException ee) {
                throw new IOException(ee);
            }
            exception = new TException(ae);
        } catch (TException e) {
            LOG.warn(e.getMessage());
            closeClient(client);
            exception = e;
        } finally {
            releaseClient(client);
        }
    } while (retryPolicy.attemptRetry());
    LOG.error("Failed after " + retryPolicy.getRetryCount() + " retries.");
    Preconditions.checkNotNull(exception);
    throw new IOException(exception);
}
Also used : AlluxioTException(alluxio.thrift.AlluxioTException) TException(org.apache.thrift.TException) AlluxioTException(alluxio.thrift.AlluxioTException) ThriftIOException(alluxio.thrift.ThriftIOException) ExponentialBackoffRetry(alluxio.retry.ExponentialBackoffRetry) ThriftIOException(alluxio.thrift.ThriftIOException) IOException(java.io.IOException) RetryPolicy(alluxio.retry.RetryPolicy) AlluxioException(alluxio.exception.AlluxioException)

Aggregations

AlluxioTException (alluxio.thrift.AlluxioTException)8 IOException (java.io.IOException)7 TException (org.apache.thrift.TException)6 ThriftIOException (alluxio.thrift.ThriftIOException)4 AlluxioException (alluxio.exception.AlluxioException)3 Test (org.junit.Test)3 InvalidPathException (alluxio.exception.InvalidPathException)2 ExponentialBackoffRetry (alluxio.retry.ExponentialBackoffRetry)2 RetryPolicy (alluxio.retry.RetryPolicy)2 AlluxioURI (alluxio.AlluxioURI)1 URIStatus (alluxio.client.file.URIStatus)1 BlockAlreadyExistsException (alluxio.exception.BlockAlreadyExistsException)1 ConnectionFailedException (alluxio.exception.ConnectionFailedException)1 BlockWorkerClientService (alluxio.thrift.BlockWorkerClientService)1 FileSystemWorkerClientService (alluxio.thrift.FileSystemWorkerClientService)1 LockBlockTOptions (alluxio.thrift.LockBlockTOptions)1 BlockMeta (alluxio.worker.block.meta.BlockMeta)1 TempBlockMeta (alluxio.worker.block.meta.TempBlockMeta)1