This is an automated email from the ASF dual-hosted git repository. dlmarion pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/accumulo.git
commit c238ac3d005f24ac4d074f8aa521cae1498d860f Merge: d089b687a6 7ddcfdbc81 Author: Dave Marion <[email protected]> AuthorDate: Fri Sep 25 15:48:12 2026 +0000 Merge branch '2.1' .../accumulo/tserver/TabletClientHandler.java | 24 ++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --cc server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java index c571c66787,3176e45c08..d0bb90ed03 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java @@@ -920,19 -1106,36 +920,35 @@@ public class TabletClientHandler implem } @Override - public List<TabletStats> getTabletStats(TInfo tinfo, TCredentials credentials, String tableId) { + public List<TabletStats> getTabletStats(TInfo tinfo, TCredentials credentials, String tableId) + throws ThriftSecurityException { List<TabletStats> result = new ArrayList<>(); - TableId text = TableId.of(tableId); - KeyExtent start = new KeyExtent(text, new Text(), null); + TableId tid = TableId.of(tableId); + NamespaceId namespaceId = null; + try { + namespaceId = getNamespaceId(credentials, tid); + } catch (ThriftSecurityException e) { + if (e.getCode() == SecurityErrorCode.TABLE_DOESNT_EXIST) { + return result; + } + throw e; + } + if (!security.canScan(credentials, tid, namespaceId, Map.of(), List.of(), List.of(), Map.of(), + List.of())) { + throw new ThriftSecurityException(credentials.getPrincipal(), + SecurityErrorCode.PERMISSION_DENIED); + } + + KeyExtent start = new KeyExtent(tid, new Text(), null); for (Entry<KeyExtent,Tablet> entry : server.getOnlineTablets().tailMap(start).entrySet()) { KeyExtent ke = entry.getKey(); - if (ke.tableId().compareTo(text) == 0) { + if (ke.tableId().compareTo(tid) == 0) { Tablet tablet = entry.getValue(); TabletStats stats = tablet.getTabletStats(); - stats.extent = ke.toThrift(); - stats.ingestRate = tablet.ingestRate(); - stats.queryRate = tablet.queryRate(); - stats.splitCreationTime = tablet.getSplitCreationTime(); - stats.numEntries = tablet.getNumEntries(); + stats.setExtent(ke.toThrift()); + stats.setIngestRate(tablet.ingestRate()); + stats.setQueryRate(tablet.queryRate()); + stats.setNumEntries(tablet.getNumEntries()); result.add(stats); } }
