[ 
https://issues.apache.org/jira/browse/HBASE-16520?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15449982#comment-15449982
 ] 

Ted Yu commented on HBASE-16520:
--------------------------------

Is there API for obtaining hbase module given class ?

What if new procedure is added to other module(s) ?

IMHO if a no-owner procedure is loaded and then aborted, the resulting master 
crash is something we should avoid.

Currently I am considering this change:
{code}
diff --git 
a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java
 
b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java
index f714260..12353b4 100644
--- 
a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java
+++ 
b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java
@@ -650,6 +650,7 @@ public class ProcedureExecutor<TEnvironment> {
     Preconditions.checkArgument(isRunning());
     Preconditions.checkArgument(lastProcId.get() >= 0);
     Preconditions.checkArgument(!proc.hasParent());
+    Preconditions.checkArgument(proc.getOwner() != null);

     // Initialize the Procedure ID
     long currentProcId = nextProcId();
{code}
I plan to log another JIRA since there're test procedures which owner should be 
set.

> TableBackupProcedure ctor should set procedure owner
> ----------------------------------------------------
>
>                 Key: HBASE-16520
>                 URL: https://issues.apache.org/jira/browse/HBASE-16520
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Ted Yu
>            Assignee: Ted Yu
>              Labels: backup
>         Attachments: 16520.HBASE-7912.v2.txt, 16520.HBASE-7912.v3.txt, 
> 16520.v1.txt
>
>
> I was trying to abort a procedure which led to master shutdown.
> Toward tail of the master log, I saw:
> {code}
> 2016-08-29 20:25:26,180 ERROR 
> [B.fifo.QRpcServer.handler=16,queue=1,port=20000] 
> coprocessor.CoprocessorHost: The coprocessor 
> org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor threw    
> java.lang.NullPointerException
> java.lang.NullPointerException
>         at 
> org.apache.hadoop.hbase.procedure2.ProcedureExecutor.isProcedureOwner(ProcedureExecutor.java:653)
>         at 
> org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preAbortProcedure(RangerAuthorizationCoprocessor.java:835)
>         at 
> org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preAbortProcedure(RangerAuthorizationCoprocessor.java:3107)
>         at 
> org.apache.hadoop.hbase.master.MasterCoprocessorHost$47.call(MasterCoprocessorHost.java:601)
>         at 
> org.apache.hadoop.hbase.master.MasterCoprocessorHost.execOperation(MasterCoprocessorHost.java:1146)
>         at 
> org.apache.hadoop.hbase.master.MasterCoprocessorHost.preAbortProcedure(MasterCoprocessorHost.java:597)
>         at 
> org.apache.hadoop.hbase.master.HMaster.abortProcedure(HMaster.java:2654)
>         at 
> org.apache.hadoop.hbase.master.MasterRpcServices.abortProcedure(MasterRpcServices.java:1070)
>         at 
> org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:57274)
>         at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2127)
> {code}
> Under /procedures.jsp (after restart), the procedure I tried to abort had 
> null as Owner.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to