This is an automated email from the ASF dual-hosted git repository.

cshannon pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git

commit fc309ccd6de99e95520f0ffdfd445bc1b97fe261
Author: Dave Marion <dlmar...@apache.org>
AuthorDate: Mon May 20 14:18:55 2024 +0000

    Modified ScanServer to not allow scans on Fate table as well
    
    (cherry picked from commit 6afdc88f8e6ebfdd2a5b14c2837f1ff03c062a21)
    
    This now applies with Scan ref tables (#4690)
---
 .../main/java/org/apache/accumulo/core/dataImpl/KeyExtent.java |  4 ++++
 .../src/main/java/org/apache/accumulo/tserver/ScanServer.java  |  4 ++--
 .../test/java/org/apache/accumulo/tserver/ScanServerTest.java  | 10 +++++-----
 3 files changed, 11 insertions(+), 7 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/dataImpl/KeyExtent.java 
b/core/src/main/java/org/apache/accumulo/core/dataImpl/KeyExtent.java
index b5bdb1f744..1069a5e3bc 100644
--- a/core/src/main/java/org/apache/accumulo/core/dataImpl/KeyExtent.java
+++ b/core/src/main/java/org/apache/accumulo/core/dataImpl/KeyExtent.java
@@ -535,6 +535,10 @@ public class KeyExtent implements Comparable<KeyExtent> {
     return prevExtent.endRow().equals(prevEndRow());
   }
 
+  public boolean isSystemTable() {
+    return AccumuloTable.allTableIds().contains(tableId());
+  }
+
   public boolean isMeta() {
     return tableId().equals(AccumuloTable.METADATA.tableId()) || 
isRootTablet();
   }
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
index 3ba3a1c306..ae226db339 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
@@ -945,7 +945,7 @@ public class ScanServer extends AbstractServer
 
     KeyExtent extent = getKeyExtent(textent);
 
-    if (extent.isMeta() && !isSystemUser(credentials)) {
+    if (extent.isSystemTable() && !isSystemUser(credentials)) {
       throw new TException(
           "Only the system user can perform eventual consistency scans on the 
root and metadata tables");
     }
@@ -1012,7 +1012,7 @@ public class ScanServer extends AbstractServer
     for (Entry<TKeyExtent,List<TRange>> entry : tbatch.entrySet()) {
       KeyExtent extent = getKeyExtent(entry.getKey());
 
-      if (extent.isMeta() && 
!context.getSecurityOperation().isSystemUser(credentials)) {
+      if (extent.isSystemTable() && !isSystemUser(credentials)) {
         throw new TException(
             "Only the system user can perform eventual consistency scans on 
the root and metadata tables");
       }
diff --git 
a/server/tserver/src/test/java/org/apache/accumulo/tserver/ScanServerTest.java 
b/server/tserver/src/test/java/org/apache/accumulo/tserver/ScanServerTest.java
index f93f095a87..bbe8ffb3fc 100644
--- 
a/server/tserver/src/test/java/org/apache/accumulo/tserver/ScanServerTest.java
+++ 
b/server/tserver/src/test/java/org/apache/accumulo/tserver/ScanServerTest.java
@@ -190,7 +190,7 @@ public class ScanServerTest {
     Map<String,String> execHints = new HashMap<>();
     ScanReservation reservation = createMock(ScanReservation.class);
 
-    expect(extent.isMeta()).andReturn(false).anyTimes();
+    expect(extent.isSystemTable()).andReturn(false).anyTimes();
     expect(extent.toThrift()).andReturn(textent).anyTimes();
     expect(reservation.getFailures()).andReturn(Map.of(textent, ranges));
     reservation.close();
@@ -242,7 +242,7 @@ public class ScanServerTest {
     };
 
     TestScanServer ss = partialMockBuilder(TestScanServer.class).createMock();
-    expect(extent.isMeta()).andReturn(false).anyTimes();
+    expect(extent.isSystemTable()).andReturn(false).anyTimes();
     expect(reservation.newTablet(ss, extent)).andReturn(tablet);
     expect(reservation.getTabletMetadataExtents()).andReturn(Set.of(extent));
     expect(reservation.getFailures()).andReturn(Map.of());
@@ -305,7 +305,7 @@ public class ScanServerTest {
     };
 
     TestScanServer ss = partialMockBuilder(TestScanServer.class).createMock();
-    expect(extent.isMeta()).andReturn(false).anyTimes();
+    expect(extent.isSystemTable()).andReturn(false).anyTimes();
     expect(reservation.newTablet(ss, extent)).andReturn(tablet).anyTimes();
     expect(reservation.getTabletMetadataExtents()).andReturn(Set.of());
     expect(reservation.getFailures()).andReturn(Map.of(textent, 
ranges)).anyTimes();
@@ -395,7 +395,7 @@ public class ScanServerTest {
     TabletResolver resolver = createMock(TabletResolver.class);
 
     TestScanServer ss = partialMockBuilder(TestScanServer.class).createMock();
-    expect(sextent.isMeta()).andReturn(true).anyTimes();
+    expect(sextent.isSystemTable()).andReturn(true).anyTimes();
     expect(reservation.newTablet(ss, sextent)).andReturn(tablet);
     expect(reservation.getFailures()).andReturn(Map.of()).anyTimes();
     reservation.close();
@@ -444,7 +444,7 @@ public class ScanServerTest {
     TabletResolver resolver = createMock(TabletResolver.class);
 
     TestScanServer ss = partialMockBuilder(TestScanServer.class).createMock();
-    expect(sextent.isMeta()).andReturn(true).anyTimes();
+    expect(sextent.isSystemTable()).andReturn(true).anyTimes();
     expect(reservation.getFailures()).andReturn(Map.of()).anyTimes();
 
     replay(sextent, reservation, handler);

Reply via email to