This is an automated email from the ASF dual-hosted git repository.
dlmarion pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/2.1 by this push:
new fe22a33b23 Better handling for runtime exception in Tablet.commit
(#5213)
fe22a33b23 is described below
commit fe22a33b23fe7a36b7febc8068deeaedcdd793d2
Author: Dave Marion <[email protected]>
AuthorDate: Tue Jan 7 15:18:14 2025 -0500
Better handling for runtime exception in Tablet.commit (#5213)
Wrapped call to getTabletMemory().mutate() in try/finally
so that a RuntimeException does not short circuit the
code in the method that decrements the writes. Added
logging in TabletClientHandler to note which client
was causing the failure.
Closes #5208
Co-authored-by: Keith Turner <[email protected]>
---
.../accumulo/tserver/TabletClientHandler.java | 7 ++++++
.../org/apache/accumulo/tserver/tablet/Tablet.java | 27 +++++++++++-----------
2 files changed, 20 insertions(+), 14 deletions(-)
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
index 4086a8a963..087c733e6f 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
@@ -469,6 +469,7 @@ public class TabletClientHandler implements
TabletClientService.Iface {
}
} catch (Exception e) {
TraceUtil.setException(span2, e, true);
+ log.error("Error logging mutations sent from {}",
TServerUtils.clientAddress.get(), e);
throw e;
} finally {
span2.end();
@@ -496,6 +497,10 @@ public class TabletClientHandler implements
TabletClientService.Iface {
us.commitTimes.addStat(t2 - t1);
updateAvgCommitTime(t2 - t1, sendables.size());
+ } catch (Exception e) {
+ TraceUtil.setException(span3, e, true);
+ log.error("Error committing mutations sent from {}",
TServerUtils.clientAddress.get(), e);
+ throw e;
} finally {
span3.end();
}
@@ -675,6 +680,7 @@ public class TabletClientHandler implements
TabletClientService.Iface {
session.commit(mutations);
} catch (Exception e) {
TraceUtil.setException(span3, e, true);
+ log.error("Error committing mutations sent from {}",
TServerUtils.clientAddress.get(), e);
throw e;
} finally {
span3.end();
@@ -831,6 +837,7 @@ public class TabletClientHandler implements
TabletClientService.Iface {
updateAvgCommitTime(t2 - t1, sendables.size());
} catch (Exception e) {
TraceUtil.setException(span3, e, true);
+ log.error("Error committing mutations sent from {}",
TServerUtils.clientAddress.get(), e);
throw e;
} finally {
span3.end();
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
index 70c200bb7f..acacfb7322 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
@@ -877,22 +877,21 @@ public class Tablet extends TabletBase {
totalBytes += mutation.numBytes();
}
- getTabletMemory().mutate(commitSession, mutations, totalCount);
-
- synchronized (this) {
- if (isCloseComplete()) {
- throw new IllegalStateException(
- "Tablet " + extent + " closed with outstanding messages to the
logger");
+ try {
+ getTabletMemory().mutate(commitSession, mutations, totalCount);
+ synchronized (this) {
+ getTabletMemory().updateMemoryUsageStats();
+ if (isCloseComplete()) {
+ throw new IllegalStateException(
+ "Tablet " + extent + " closed with outstanding messages to the
logger");
+ }
+ numEntries += totalCount;
+ numEntriesInMemory += totalCount;
+ ingestCount += totalCount;
+ ingestBytes += totalBytes;
}
- // decrement here in case an exception is thrown below
+ } finally {
decrementWritesInProgress(commitSession);
-
- getTabletMemory().updateMemoryUsageStats();
-
- numEntries += totalCount;
- numEntriesInMemory += totalCount;
- ingestCount += totalCount;
- ingestBytes += totalBytes;
}
}