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);
        }
      }

Reply via email to