Peter Somogyi created HBASE-29361: ------------------------------------- Summary: Snapshot coprocessor hooks called inside SnapshotProcedure, Key: HBASE-29361 URL: https://issues.apache.org/jira/browse/HBASE-29361 Project: HBase Issue Type: Bug Components: Coprocessors, snapshots Affects Versions: 2.6.0 Reporter: Peter Somogyi Assignee: Peter Somogyi
Snapshot coprocessor hooks (e.g. preSnapshot) are called inside SnapshotProcedure, causing inconsistent behavior compared to CreateTableProcedure or other procedures. *Current Behavior:* In HBase 2.6, snapshot operations have been moved to the Procedure framework. However, the integration of coprocessors with snapshots differs from other procedures. Specifically, the preSnapshot coprocessor hook is called inside the SnapshotProcedure's SNAPSHOT_PRE_OPERATION step. If a coprocessor (e.g., Ranger) throws an AccessDeniedException during a snapshot create command, the SnapshotProcedure starts and rolls back during the SNAPSHOT_PRE_OPERATION step. This is different from CreateTableProcedure, where the preCreateTable hook is called before the procedure itself starts. When the CreateTableProcedure is denied it will create a FailedProcedure, however, the CreateSnapshot procedure will start a SnapshotProcedure. *Comparison* Original behavior using deny coprocessor for snapshot and table create {noformat} hbase:011:0> snapshot 'peter', 'denied1' ERROR: Snapshot is not allowed by coprocessor For usage try 'help "snapshot"' Took 0.1669 seconds hbase:012:0> create 'peter1-denied', 'f' ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Denied table create For usage try 'help "create"' Took 0.0510 seconds hbase:013:0> list_procedures PID Name State Submitted Last_Update Parameters 88 org.apache.hadoop.hbase.master.procedure.SnapshotProcedure ROLLEDBACK 2025-05-28 14:18:40 +0200 2025-05-28 14:18:40 +0200 [{}, {"snapshot"=>{"name"=>"denied1", "table"=>"peter", "creationTime"=>"1748434720667", "type"=>"FLUSH", "version"=>2, "ttl"=>"0"}}] 89 org.apache.hadoop.hbase.procedure2.FailedProcedure ROLLEDBACK 2025-05-28 14:18:55 +0200 2025-05-28 14:18:55 +0200 2 row(s) Took 0.0408 seconds hbase:014:0> {noformat} The new behavior when preSnapshot is called before the Procedure itself {noformat} hbase:001:0> snapshot 'peter', 'denied1' ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Snapshot is not allowed by coprocessor For usage try 'help "snapshot"' Took 5.3337 seconds hbase:002:0> create 'peter-denied', 'f' ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Denied table create For usage try 'help "create"' Took 0.0184 seconds hbase:003:0> list_procedures PID Name State Submitted Last_Update Parameters 102 org.apache.hadoop.hbase.procedure2.FailedProcedure ROLLEDBACK 2025-05-28 14:44:52 +0200 2025-05-28 14:44:52 +0200 103 org.apache.hadoop.hbase.procedure2.FailedProcedure ROLLEDBACK 2025-05-28 14:45:01 +0200 2025-05-28 14:45:01 +0200 2 row(s) Took 0.0472 seconds hbase:004:0> {noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)