You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by do...@apache.org on 2025/06/06 20:59:02 UTC
(accumulo) branch main updated: Misc. minor improvements to TableOpsImpl (#5622)
This is an automated email from the ASF dual-hosted git repository.
domgarguilo 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 5b17ba534b Misc. minor improvements to TableOpsImpl (#5622)
5b17ba534b is described below
commit 5b17ba534b40e503d89a2591374948dad84c9ac8
Author: Dom G. <do...@apache.org>
AuthorDate: Fri Jun 6 16:58:57 2025 -0400
Misc. minor improvements to TableOpsImpl (#5622)
---
.../core/clientImpl/TableOperationsImpl.java | 58 +++++++++-------------
.../server/util/FindCompactionTmpFiles.java | 3 +-
.../shell/commands/GetAvailabilityCommand.java | 8 +--
3 files changed, 30 insertions(+), 39 deletions(-)
diff --git a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
index 617db4c708..0fd16d8374 100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
@@ -117,8 +117,10 @@ import org.apache.accumulo.core.clientImpl.ClientTabletCache.CachedTablet;
import org.apache.accumulo.core.clientImpl.ClientTabletCache.LocationNeed;
import org.apache.accumulo.core.clientImpl.bulk.BulkImport;
import org.apache.accumulo.core.clientImpl.thrift.ClientService.Client;
+import org.apache.accumulo.core.clientImpl.thrift.SecurityErrorCode;
import org.apache.accumulo.core.clientImpl.thrift.TDiskUsage;
import org.apache.accumulo.core.clientImpl.thrift.TVersionedProperties;
+import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType;
import org.apache.accumulo.core.clientImpl.thrift.ThriftNotActiveServiceException;
import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
import org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException;
@@ -290,8 +292,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
}
}
- private TFateId beginFateOperation(TFateInstanceType type)
- throws ThriftSecurityException, TException {
+ private TFateId beginFateOperation(TFateInstanceType type) throws TException {
while (true) {
FateService.Client client = null;
try {
@@ -313,8 +314,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
// This method is for retrying in the case of network failures;
// anything else it passes to the caller to deal with
private void executeFateOperation(TFateId opid, TFateOperation op, List<ByteBuffer> args,
- Map<String,String> opts, boolean autoCleanUp)
- throws ThriftSecurityException, TException, ThriftTableOperationException {
+ Map<String,String> opts, boolean autoCleanUp) throws TException {
while (true) {
FateService.Client client = null;
try {
@@ -335,8 +335,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
}
}
- private String waitForFateOperation(TFateId opid)
- throws ThriftSecurityException, TException, ThriftTableOperationException {
+ private String waitForFateOperation(TFateId opid) throws TException {
while (true) {
FateService.Client client = null;
try {
@@ -355,7 +354,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
}
}
- private void finishFateOperation(TFateId opid) throws ThriftSecurityException, TException {
+ private void finishFateOperation(TFateId opid) throws TException {
while (true) {
FateService.Client client = null;
try {
@@ -483,7 +482,6 @@ public class TableOperationsImpl extends TableOperationsHelper {
public static final String SPLIT_SUCCESS_MSG = "SPLIT_SUCCEEDED";
@Override
- @SuppressWarnings("unchecked")
public void addSplits(String tableName, SortedSet<Text> splits)
throws AccumuloException, TableNotFoundException, AccumuloSecurityException {
putSplits(tableName, TabletMergeabilityUtil.userDefaultSplits(splits));
@@ -640,9 +638,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
Map<KeyExtent,List<Pair<Text,TabletMergeability>>> newSplits = new HashMap<>();
Map<KeyExtent,TabletMergeability> existingSplits = new HashMap<>();
- var iterator = splitsTodo.entrySet().iterator();
- while (iterator.hasNext()) {
- var splitEntry = iterator.next();
+ for (Entry<Text,TabletMergeability> splitEntry : splitsTodo.entrySet()) {
var split = splitEntry.getKey();
try {
@@ -735,8 +731,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
return _listSplits(tableName);
}
- private List<Text> _listSplits(String tableName)
- throws TableNotFoundException, AccumuloSecurityException {
+ private List<Text> _listSplits(String tableName) throws TableNotFoundException {
TableId tableId = context.getTableId(tableName);
@@ -1024,20 +1019,16 @@ public class TableOperationsImpl extends TableOperationsHelper {
}
}
} catch (ThriftSecurityException e) {
- switch (e.getCode()) {
- case TABLE_DOESNT_EXIST:
- throw new TableNotFoundException(tableId.canonical(), null, e.getMessage(), e);
- default:
- log.debug("flush security exception on table id {}", tableId);
- throw new AccumuloSecurityException(e.user, e.code, e);
+ if (requireNonNull(e.getCode()) == SecurityErrorCode.TABLE_DOESNT_EXIST) {
+ throw new TableNotFoundException(tableId.canonical(), null, e.getMessage(), e);
}
+ log.debug("flush security exception on table id {}", tableId);
+ throw new AccumuloSecurityException(e.user, e.code, e);
} catch (ThriftTableOperationException e) {
- switch (e.getType()) {
- case NOTFOUND:
- throw new TableNotFoundException(e);
- default:
- throw new AccumuloException(e.description, e);
+ if (requireNonNull(e.getType()) == TableOperationExceptionType.NOTFOUND) {
+ throw new TableNotFoundException(e);
}
+ throw new AccumuloException(e.description, e);
} catch (Exception e) {
throw new AccumuloException(e);
}
@@ -1147,18 +1138,15 @@ public class TableOperationsImpl extends TableOperationsHelper {
}
void checkLocalityGroups(String tableName, String propChanged)
- throws AccumuloException, AccumuloSecurityException, TableNotFoundException {
+ throws AccumuloException, TableNotFoundException {
if (LocalityGroupUtil.isLocalityGroupProperty(propChanged)) {
Map<String,String> allProps = getConfiguration(tableName);
try {
LocalityGroupUtil.checkLocalityGroups(allProps);
} catch (LocalityGroupConfigurationError | RuntimeException e) {
- LoggerFactory.getLogger(this.getClass()).warn("Changing '" + propChanged + "' for table '"
- + tableName
- + "' resulted in bad locality group config. This may be a transient situation since "
- + "the config spreads over multiple properties. Setting properties in a different "
- + "order may help. Even though this warning was displayed, the property was updated. "
- + "Please check your config to ensure consistency.", e);
+ LoggerFactory.getLogger(this.getClass()).warn(
+ "Changing '{}' for table '{}' resulted in bad locality group config. This may be a transient situation since the config spreads over multiple properties. Setting properties in a different order may help. Even though this warning was displayed, the property was updated. Please check your config to ensure consistency.",
+ propChanged, tableName, e);
}
}
}
@@ -1349,7 +1337,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
}
private Path checkPath(String dir, String kind, String type)
- throws IOException, AccumuloException, AccumuloSecurityException {
+ throws IOException, AccumuloException {
FileSystem fs = VolumeConfiguration.fileSystemForPath(dir, context.getHadoopConf());
Path ret = dir.contains(":") ? new Path(dir) : fs.makeQualified(new Path(dir));
@@ -1530,7 +1518,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
throw new IllegalArgumentException(newState + " is not handled.");
}
- /**
+ /*
* ACCUMULO-4574 Don't submit a fate operation to change the table state to newState if it's
* already in that state.
*/
@@ -1671,7 +1659,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
if (exportFiles.size() > 1) {
String fileList = Arrays.toString(exportFiles.toArray());
- log.warn("Found multiple export metadata files: " + fileList);
+ log.warn("Found multiple export metadata files: {}", fileList);
throw new AccumuloException("Found multiple export metadata files: " + fileList);
} else if (exportFiles.isEmpty()) {
log.warn("Unable to locate export metadata");
@@ -2299,7 +2287,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
}
});
- return tabletsMetadata.stream().peek(tm -> {
+ return tabletsMetadata.stream().onClose(tabletsMetadata::close).peek(tm -> {
if (scanRangeStart != null && tm.getEndRow() != null
&& tm.getEndRow().compareTo(scanRangeStart) < 0) {
log.debug("tablet {} is before scan start range: {}", tm.getExtent(), scanRangeStart);
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/FindCompactionTmpFiles.java b/server/base/src/main/java/org/apache/accumulo/server/util/FindCompactionTmpFiles.java
index eacfac6691..53857b20e8 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/FindCompactionTmpFiles.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/FindCompactionTmpFiles.java
@@ -188,10 +188,11 @@ public class FindCompactionTmpFiles {
ServerContext context = opts.getServerContext();
String[] tables = opts.tables.split(",");
+ final var stringStringMap = context.tableOperations().tableIdMap();
for (String table : tables) {
table = table.trim();
- String tableId = context.tableOperations().tableIdMap().get(table);
+ String tableId = stringStringMap.get(table);
if (tableId == null || tableId.isEmpty()) {
LOG.warn("TableId for table: {} does not exist, maybe the table was deleted?", table);
continue;
diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/GetAvailabilityCommand.java b/shell/src/main/java/org/apache/accumulo/shell/commands/GetAvailabilityCommand.java
index 9a6eb529c7..3be57ba7f8 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/GetAvailabilityCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/GetAvailabilityCommand.java
@@ -46,9 +46,11 @@ public class GetAvailabilityCommand extends TableOperation {
protected void doTableOp(Shell shellState, String tableName) throws Exception {
shellState.getWriter().println("TABLE: " + tableName);
shellState.getWriter().println("TABLET ID AVAILABILITY");
- shellState.getAccumuloClient().tableOperations().getTabletInformation(tableName, range)
- .forEach(p -> shellState.getWriter()
- .println(String.format("%-10s %s", p.getTabletId(), p.getTabletAvailability())));
+ try (var tabletInformation =
+ shellState.getAccumuloClient().tableOperations().getTabletInformation(tableName, range)) {
+ tabletInformation.forEach(p -> shellState.getWriter()
+ .println(String.format("%-10s %s", p.getTabletId(), p.getTabletAvailability())));
+ }
}
@Override