kevinrr888 commented on code in PR #4556:
URL: https://github.com/apache/accumulo/pull/4556#discussion_r1606788938
##########
core/src/main/java/org/apache/accumulo/core/fate/AdminUtil.java:
##########
@@ -341,37 +341,52 @@ private FateStatus getTransactionStatus(ReadOnlyTStore<T>
zs, Set<Long> filterTx
List<TransactionStatus> statuses = new ArrayList<>(transactions.size());
for (Long tid : transactions) {
+ try {
+ zs.reserve(tid);
- zs.reserve(tid);
-
- String txName = (String) zs.getTransactionInfo(tid, Fate.TxInfo.TX_NAME);
+ String txName = (String) zs.getTransactionInfo(tid,
Fate.TxInfo.TX_NAME);
- List<String> hlocks = heldLocks.remove(tid);
+ List<String> hlocks = heldLocks.remove(tid);
- if (hlocks == null) {
- hlocks = Collections.emptyList();
- }
+ if (hlocks == null) {
+ hlocks = Collections.emptyList();
+ }
- List<String> wlocks = waitingLocks.remove(tid);
+ List<String> wlocks = waitingLocks.remove(tid);
- if (wlocks == null) {
- wlocks = Collections.emptyList();
- }
+ if (wlocks == null) {
+ wlocks = Collections.emptyList();
+ }
- String top = null;
- ReadOnlyRepo<T> repo = zs.top(tid);
- if (repo != null) {
- top = repo.getName();
- }
+ String top = null;
+ ReadOnlyRepo<T> repo = zs.top(tid);
+ if (repo != null) {
+ top = repo.getName();
+ }
- TStatus status = zs.getStatus(tid);
+ TStatus status = zs.getStatus(tid);
- long timeCreated = zs.timeCreated(tid);
+ long timeCreated = zs.timeCreated(tid);
- zs.unreserve(tid, 0, TimeUnit.MILLISECONDS);
+ zs.unreserve(tid, 0, TimeUnit.MILLISECONDS);
- if (includeByStatus(status, filterStatus) && includeByTxid(tid,
filterTxid)) {
- statuses.add(new TransactionStatus(tid, status, txName, hlocks,
wlocks, top, timeCreated));
+ if (includeByStatus(status, filterStatus) && includeByTxid(tid,
filterTxid)) {
+ statuses
+ .add(new TransactionStatus(tid, status, txName, hlocks, wlocks,
top, timeCreated));
+ }
+ } catch (Exception e) {
+ // If the cause of the Exception is a NoNodeException, it should be
ignored as this
+ // indicates the transaction has completed between the time the list
of transactions was
+ // acquired and the time the transaction was probed for info.
+ Throwable cause = e;
+ while (cause != null && !(cause instanceof
KeeperException.NoNodeException)) {
+ cause = cause.getCause();
+ }
+ if (cause == null) {
Review Comment:
Thank you, I overlooked that. Fixed
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]