[ https://issues.apache.org/jira/browse/HBASE-9426?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13858220#comment-13858220 ]
Ted Yu commented on HBASE-9426: ------------------------------- Generated files should be included for QA to run test suite. Without them, I got: {code} [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project hbase-client: Compilation failure: Compilation failure: [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[95,61] cannot find symbol [ERROR] symbol : class ProcedureDescription [ERROR] location: class org.apache.hadoop.hbase.protobuf.generated.HBaseProtos [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[135,62] cannot find symbol [ERROR] symbol : class ExecProcedureRequest [ERROR] location: class org.apache.hadoop.hbase.protobuf.generated.MasterProtos [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[136,62] cannot find symbol [ERROR] symbol : class ExecProcedureResponse [ERROR] location: class org.apache.hadoop.hbase.protobuf.generated.MasterProtos [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[137,62] cannot find symbol [ERROR] symbol : class IsProcedureDoneRequest [ERROR] location: class org.apache.hadoop.hbase.protobuf.generated.MasterProtos [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[138,62] cannot find symbol [ERROR] symbol : class IsProcedureDoneResponse [ERROR] location: class org.apache.hadoop.hbase.protobuf.generated.MasterProtos [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java:[2053,38] cannot find symbol [ERROR] symbol: class ExecProcedureRequest [ERROR] RpcController controller, ExecProcedureRequest request) [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java:[2052,15] cannot find symbol [ERROR] symbol: class ExecProcedureResponse [ERROR] public ExecProcedureResponse execProcedure( [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java:[2060,12] cannot find symbol [ERROR] symbol: class IsProcedureDoneRequest [ERROR] IsProcedureDoneRequest request) throws ServiceException { [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java:[2059,15] cannot find symbol [ERROR] symbol: class IsProcedureDoneResponse [ERROR] public IsProcedureDoneResponse isProcedureDone(RpcController controller, [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java:[2051,8] method does not override or implement a method from a supertype [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java:[2058,8] method does not override or implement a method from a supertype [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3014,24] package ProcedureDescription does not exist [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3014,43] cannot find symbol [ERROR] symbol : variable ProcedureDescription [ERROR] location: class org.apache.hadoop.hbase.client.HBaseAdmin [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3022,10] cannot find symbol [ERROR] symbol : class ExecProcedureRequest [ERROR] location: class org.apache.hadoop.hbase.client.HBaseAdmin [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3022,41] cannot find symbol [ERROR] symbol : variable ExecProcedureRequest [ERROR] location: class org.apache.hadoop.hbase.client.HBaseAdmin [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3025,39] cannot find symbol [ERROR] symbol : class ExecProcedureResponse [ERROR] location: class org.apache.hadoop.hbase.client.HBaseAdmin [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3027,13] cannot find symbol [ERROR] symbol: class ExecProcedureResponse [ERROR] public ExecProcedureResponse call() throws ServiceException { [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3080,30] package ProcedureDescription does not exist [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3080,49] cannot find symbol [ERROR] symbol : variable ProcedureDescription [ERROR] location: class org.apache.hadoop.hbase.client.HBaseAdmin [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3087,10] cannot find symbol [ERROR] symbol : class ProcedureDescription [ERROR] location: class org.apache.hadoop.hbase.client.HBaseAdmin [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3089,27] cannot find symbol [ERROR] symbol : class IsProcedureDoneResponse [ERROR] location: class org.apache.hadoop.hbase.client.HBaseAdmin [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3091,17] cannot find symbol [ERROR] symbol: class IsProcedureDoneResponse [ERROR] public IsProcedureDoneResponse call() throws ServiceException { [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3092,48] cannot find symbol [ERROR] symbol: variable IsProcedureDoneRequest [ERROR] return master.isProcedureDone(null, IsProcedureDoneRequest [ERROR] /Users/tyu/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java:[3095,10] cannot find symbol [ERROR] symbol : method getDone() [ERROR] location: class java.lang.Object {code} The current patch can be uploaded onto review board if you choose hbase-git repository. > Make custom distributed barrier procedure pluggable > ---------------------------------------------------- > > Key: HBASE-9426 > URL: https://issues.apache.org/jira/browse/HBASE-9426 > Project: HBase > Issue Type: Improvement > Affects Versions: 0.95.2, 0.94.11 > Reporter: Richard Ding > Assignee: Richard Ding > Attachments: HBASE-9426.patch.1, HBASE-9426.patch.2, > HBASE-9426.patch.3 > > > Currently if one wants to implement a custom distributed barrier procedure > (e.g., distributed log roll or distributed table flush), the HBase core code > needs to be modified in order for the procedure to work. > Looking into the snapshot code (especially on region server side), most of > the code to enable the procedure are generic life-cycle management (i.e., > init, start, stop). We can make this part pluggable. > Here is the proposal. Following the coprocessor example, we define two > properties: > {code} > hbase.procedure.regionserver.classes > hbase.procedure.master.classes > {code} > The values for both are comma delimited list of classes. On region server > side, the classes implements the following interface: > {code} > public interface RegionServerProcedureManager { > public void initialize(RegionServerServices rss) throws KeeperException; > public void start(); > public void stop(boolean force) throws IOException; > public String getProcedureName(); > } > {code} > While on Master side, the classes implement the interface: > {code} > public interface MasterProcedureManager { > public void initialize(MasterServices master) throws KeeperException, > IOException, UnsupportedOperationException; > public void stop(String why); > public String getProcedureName(); > public void execProcedure(ProcedureDescription desc) throws IOException; > IOException; > } > {code} > Where the ProcedureDescription is defined as > {code} > message ProcedureDescription { > required string name = 1; > required string instance = 2; > optional int64 creationTime = 3 [default = 0]; > message Property { > required string tag = 1; > optional string value = 2; > } > repeated Property props = 4; > } > {code} > A generic API can be defined on HMaster to trigger a procedure: > {code} > public boolean execProcedure(ProcedureDescription desc) throws IOException; > {code} > _SnapshotManager_ and _RegionServerSnapshotManager_ are special examples of > _MasterProcedureManager_ and _RegionServerProcedureManager_. They will be > automatically included (users don't need to specify them in the conf file). -- This message was sent by Atlassian JIRA (v6.1.5#6160)