Skip to content
This repository has been archived by the owner on May 10, 2022. It is now read-only.

Commit

Permalink
feat: add more exception info on synchronous APIs
Browse files Browse the repository at this point in the history
  • Loading branch information
neverchanje committed Nov 1, 2019
1 parent cce3f89 commit 93b1590
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ public enum error_types {

// ERROR_CODE defined by client
ERR_SESSION_RESET,
ERR_THREAD_INTERRUPTED,
};

public error_types errno;
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/com/xiaomi/infra/pegasus/client/PException.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
// can be found in the LICENSE file in the root directory of this source tree.
package com.xiaomi.infra.pegasus.client;

import com.xiaomi.infra.pegasus.base.error_code;
import com.xiaomi.infra.pegasus.rpc.ReplicationException;

/**
* The generic type of exception thrown by all of the Pegasus APIs.
*
Expand All @@ -27,4 +30,19 @@ public PException(String message) {
public PException(Throwable cause) {
super(cause);
}

static PException threadInterrupted(String tableName) {
return new PException(
new ReplicationException(
error_code.error_types.ERR_THREAD_INTERRUPTED,
String.format("[table=%s] Thread is interrupted!", tableName)));
}

static PException timeout(String tableName, int timeout) {
return new PException(
new ReplicationException(
error_code.error_types.ERR_TIMEOUT,
String.format(
"[table=%s, timeout=%dms] Timeout on Future await!", tableName, timeout)));
}
}
84 changes: 42 additions & 42 deletions src/main/java/com/xiaomi/infra/pegasus/client/PegasusTable.java
Original file line number Diff line number Diff line change
Expand Up @@ -862,9 +862,9 @@ public boolean exist(byte[] hashKey, byte[] sortKey, int timeout) throws PExcept
try {
return asyncExist(hashKey, sortKey, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -876,9 +876,9 @@ public long sortKeyCount(byte[] hashKey, int timeout) throws PException {
try {
return asyncSortKeyCount(hashKey, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -890,9 +890,9 @@ public byte[] get(byte[] hashKey, byte[] sortKey, int timeout) throws PException
try {
return asyncGet(hashKey, sortKey, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand Down Expand Up @@ -969,9 +969,9 @@ public MultiGetResult multiGet(
return asyncMultiGet(hashKey, sortKeys, maxFetchCount, maxFetchSize, timeout)
.get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -984,9 +984,9 @@ public MultiGetResult multiGet(byte[] hashKey, List<byte[]> sortKeys, int timeou
try {
return asyncMultiGet(hashKey, sortKeys, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -1008,9 +1008,9 @@ public MultiGetResult multiGet(
hashKey, startSortKey, stopSortKey, options, maxFetchCount, maxFetchSize, timeout)
.get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -1029,9 +1029,9 @@ public MultiGetResult multiGet(
return asyncMultiGet(hashKey, startSortKey, stopSortKey, options, timeout)
.get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand Down Expand Up @@ -1112,9 +1112,9 @@ public MultiGetSortKeysResult multiGetSortKeys(
return asyncMultiGetSortKeys(hashKey, maxFetchCount, maxFetchSize, timeout)
.get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -1126,9 +1126,9 @@ public MultiGetSortKeysResult multiGetSortKeys(byte[] hashKey, int timeout) thro
try {
return asyncMultiGetSortKeys(hashKey, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -1141,9 +1141,9 @@ public void set(byte[] hashKey, byte[] sortKey, byte[] value, int ttlSeconds, in
try {
asyncSet(hashKey, sortKey, value, ttlSeconds, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -1155,9 +1155,9 @@ public void set(byte[] hashKey, byte[] sortKey, byte[] value, int timeout) throw
try {
asyncSet(hashKey, sortKey, value, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand Down Expand Up @@ -1215,9 +1215,9 @@ public void multiSet(
try {
asyncMultiSet(hashKey, values, ttlSeconds, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -1230,9 +1230,9 @@ public void multiSet(byte[] hashKey, List<Pair<byte[], byte[]>> values, int time
try {
asyncMultiSet(hashKey, values, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand Down Expand Up @@ -1298,9 +1298,9 @@ public void del(byte[] hashKey, byte[] sortKey, int timeout) throws PException {
try {
asyncDel(hashKey, sortKey, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand Down Expand Up @@ -1362,9 +1362,9 @@ public void multiDel(byte[] hashKey, List<byte[]> sortKeys, int timeout) throws
try {
asyncMultiDel(hashKey, sortKeys, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand Down Expand Up @@ -1517,9 +1517,9 @@ public long incr(byte[] hashKey, byte[] sortKey, long increment, int ttlSeconds,
return asyncIncr(hashKey, sortKey, increment, ttlSeconds, timeout)
.get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -1531,9 +1531,9 @@ public long incr(byte[] hashKey, byte[] sortKey, long increment, int timeout) th
try {
return asyncIncr(hashKey, sortKey, increment, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand Down Expand Up @@ -1563,9 +1563,9 @@ public CheckAndSetResult checkAndSet(
timeout)
.get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -1587,9 +1587,9 @@ public CheckAndMutateResult checkAndMutate(
hashKey, checkSortKey, checkType, checkOperand, mutations, options, timeout)
.get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -1610,9 +1610,9 @@ public CompareExchangeResult compareExchange(
hashKey, sortKey, expectedValue, desiredValue, ttlSeconds, timeout)
.get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand All @@ -1624,9 +1624,9 @@ public int ttl(byte[] hashKey, byte[] sortKey, int timeout) throws PException {
try {
return asyncTTL(hashKey, sortKey, timeout).get(timeout, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.threadInterrupted(table.getTableName());
} catch (TimeoutException e) {
throw new PException(new ReplicationException(error_code.error_types.ERR_TIMEOUT));
throw PException.timeout(table.getTableName(), timeout);
} catch (ExecutionException e) {
throw new PException(e);
}
Expand Down

0 comments on commit 93b1590

Please sign in to comment.