This is an automated email from the ASF dual-hosted git repository.
kturner pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/main by this push:
new 69f226e9a5 improves bulk import error message (#5172)
69f226e9a5 is described below
commit 69f226e9a578a84bcf9771dc0465ceefab520796
Author: Keith Turner <[email protected]>
AuthorDate: Thu Dec 12 16:24:37 2024 -0500
improves bulk import error message (#5172)
For the case when a bulk import exceeds the configured files per tablet
limit improves the error message to include range info and the relevant
property name.
---
core/src/main/java/org/apache/accumulo/core/fate/Fate.java | 4 ++--
.../accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java | 6 +++---
.../java/org/apache/accumulo/test/functional/BulkNewIT.java | 11 +++++++++++
3 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/core/src/main/java/org/apache/accumulo/core/fate/Fate.java
b/core/src/main/java/org/apache/accumulo/core/fate/Fate.java
index fc405920d5..0be6b50eaa 100644
--- a/core/src/main/java/org/apache/accumulo/core/fate/Fate.java
+++ b/core/src/main/java/org/apache/accumulo/core/fate/Fate.java
@@ -263,8 +263,8 @@ public class Fate<T> {
// as a warning. They're a normal, handled failure condition.
if (e instanceof AcceptableException) {
var tableOpEx = (AcceptableThriftTableOperationException) e;
- log.debug(msg + " for {}({}) {}", tableOpEx.getTableName(),
tableOpEx.getTableId(),
- tableOpEx.getDescription());
+ log.info("{} for table:{}({}) saw acceptable exception: {}", msg,
tableOpEx.getTableName(),
+ tableOpEx.getTableId(), tableOpEx.getDescription());
} else {
log.warn(msg, e);
}
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java
index b2d3521735..c7a9d03540 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java
@@ -203,9 +203,9 @@ public class PrepBulkImport extends ManagerRepo {
if (maxFilesPerTablet > 0 && currRange.getValue().getSize() >
maxFilesPerTablet) {
throw new AcceptableThriftTableOperationException(tableId, null,
TableOperation.BULK_IMPORT,
TableOperationExceptionType.OTHER,
- "Attempted to import " + currRange.getValue().getSize()
- + " files into a single tablet which exceeds the configured max
of "
- + maxFilesPerTablet);
+ "Attempted to import " + currRange.getValue().getSize() + " files
into tablets in range "
+ + currRange.getKey() + " which exceeds the configured max files
per tablet of "
+ + maxFilesPerTablet + " from " +
Property.TABLE_BULK_MAX_TABLET_FILES.getKey());
}
}
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/BulkNewIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/BulkNewIT.java
index d2fa75ff26..f5896e1119 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/BulkNewIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/BulkNewIT.java
@@ -428,6 +428,8 @@ public class BulkNewIT extends SharedMiniClusterBase {
newTableConf.setProperties(props);
client.tableOperations().create(tableName, newTableConf);
+ var tableId = ((ClientContext) client).getTableId(tableName);
+
String dir = getDir("/testBulkFileMFP-");
for (int i = 4; i < 8; i++) {
@@ -450,6 +452,9 @@ public class BulkNewIT extends SharedMiniClusterBase {
// message should contain the limit of 5 and the number of files
attempted to import 6
assertTrue(msg.contains(" 5"), msg);
assertTrue(msg.contains(" 6"), msg);
+ // error should include range information
+ assertTrue(msg.contains(tableId + "<<"), msg);
+ assertTrue(msg.contains(" " +
Property.TABLE_BULK_MAX_TABLET_FILES.getKey()), msg);
// ensure no data was added to table
verifyData(client, tableName, 40, 79, false);
@@ -476,6 +481,8 @@ public class BulkNewIT extends SharedMiniClusterBase {
// message should contain the limit of 5 and the number of files
attempted to import 7
assertTrue(msg.contains(" 5"), msg);
assertTrue(msg.contains(" 7"), msg);
+ assertTrue(msg.contains(tableId + ";0100<"), msg);
+ assertTrue(msg.contains(" " +
Property.TABLE_BULK_MAX_TABLET_FILES.getKey()), msg);
verifyData(client, tableName, 40, 79, false);
// try the middle tablet
@@ -496,6 +503,8 @@ public class BulkNewIT extends SharedMiniClusterBase {
// message should contain the limit of 5 and the number of files
attempted to import 6
assertTrue(msg.contains(" 5"), msg);
assertTrue(msg.contains(" 6"), msg);
+ assertTrue(msg.contains(tableId + ";0200;0100"), msg);
+ assertTrue(msg.contains(" " +
Property.TABLE_BULK_MAX_TABLET_FILES.getKey()), msg);
verifyData(client, tableName, 40, 79, false);
// try the last tablet
@@ -516,6 +525,8 @@ public class BulkNewIT extends SharedMiniClusterBase {
// message should contain the limit of 5 and the number of files
attempted to import 7
assertTrue(msg.contains(" 5"), msg);
assertTrue(msg.contains(" 7"), msg);
+ assertTrue(msg.contains(tableId + "<;0200"), msg);
+ assertTrue(msg.contains(" " +
Property.TABLE_BULK_MAX_TABLET_FILES.getKey()), msg);
verifyData(client, tableName, 40, 79, false);
// test an import that has more files than the limit, but not in a
single tablet so it should