huaxiangsun commented on a change in pull request #62:
URL: 
https://github.com/apache/hbase-operator-tools/pull/62#discussion_r437045746



##########
File path: hbase-hbck2/README.md
##########
@@ -124,17 +124,20 @@ Command:
    SEE ALSO: reportMissingRegionsInMeta
    SEE ALSO: fixMeta
 
- assigns [OPTIONS] <ENCODED_REGIONNAME>...
+ assigns [OPTIONS] <ENCODED_REGIONNAME/INPUTFILES_FOR_REGIONNAMES>...
    Options:
     -o,--override  override ownership by another procedure
+    -i,--inputFiles  take one or more encoded region names
    A 'raw' assign that can be used even during Master initialization (if
    the -skip flag is specified). Skirts Coprocessors. Pass one or more
    encoded region names. 1588230740 is the hard-coded name for the
    hbase:meta region and de00010733901a05f5a2a3a382e27dd4 is an example of
    what a user-space encoded region name looks like. For example:
-     $ HBCK2 assign 1588230740 de00010733901a05f5a2a3a382e27dd4
+     $ HBCK2 assigns 1588230740 de00010733901a05f5a2a3a382e27dd4
    Returns the pid(s) of the created AssignProcedure(s) or -1 if none.
-
+   If -i or --inputFiles is specified, pass one or more input file names.

Review comment:
       Are multiple input file too much? Maybe one file is good enough.

##########
File path: hbase-hbck2/README.md
##########
@@ -124,17 +124,20 @@ Command:
    SEE ALSO: reportMissingRegionsInMeta
    SEE ALSO: fixMeta
 
- assigns [OPTIONS] <ENCODED_REGIONNAME>...
+ assigns [OPTIONS] <ENCODED_REGIONNAME/INPUTFILES_FOR_REGIONNAMES>...
    Options:
     -o,--override  override ownership by another procedure
+    -i,--inputFiles  take one or more encoded region names
    A 'raw' assign that can be used even during Master initialization (if
    the -skip flag is specified). Skirts Coprocessors. Pass one or more
    encoded region names. 1588230740 is the hard-coded name for the
    hbase:meta region and de00010733901a05f5a2a3a382e27dd4 is an example of
    what a user-space encoded region name looks like. For example:
-     $ HBCK2 assign 1588230740 de00010733901a05f5a2a3a382e27dd4
+     $ HBCK2 assigns 1588230740 de00010733901a05f5a2a3a382e27dd4
    Returns the pid(s) of the created AssignProcedure(s) or -1 if none.
-
+   If -i or --inputFiles is specified, pass one or more input file names.

Review comment:
       Read again, the code only handles one input file, we can clean up the 
comments/help message accordingly.

##########
File path: hbase-hbck2/src/test/java/org/apache/hbase/TestHBCK2.java
##########
@@ -147,6 +149,27 @@ public void testAssigns() throws IOException {
           LOG.info("RS: {}", rs.toString());
           assertTrue(rs.toString(), rs.isOpened());
         }
+        // test input files

Review comment:
       Can we have test similar to the following? That will really go through 
the option processing path.
   The output will have a set of pids and we wait for pids to check the regions 
are opened.
   ```
     private String testFormatExtraRegionsInMeta(String[] args) throws 
IOException {
       HBCK2 hbck = new HBCK2(TEST_UTIL.getConfiguration());
       final StringBuilder builder = new StringBuilder();
       PrintStream originalOS = System.out;
       OutputStream testOS = new OutputStream() {
         @Override public void write(int b) throws IOException {
           builder.append((char)b);
         }
       };
       System.setOut(new PrintStream(testOS));
       hbck.run(args);
       System.setOut(originalOS);
       return builder.toString();
   ```

##########
File path: hbase-hbck2/src/main/java/org/apache/hbase/HBCK2.java
##########
@@ -294,7 +299,29 @@ int setRegionState(ClusterConnection connection, String 
region,
       return null;
     }
     boolean overrideFlag = commandLine.hasOption(override.getOpt());
-    return hbck.assigns(commandLine.getArgList(), overrideFlag);
+
+    List<String> argList = commandLine.getArgList();
+    if (!commandLine.hasOption(inputFile.getOpt())) {
+      return hbck.assigns(argList, overrideFlag);
+    } else {
+      List<String> assignmentList = new ArrayList<>();
+      for (String filePath : argList) {

Review comment:
       Got it, thanks.

##########
File path: hbase-hbck2/README.md
##########
@@ -124,17 +124,20 @@ Command:
    SEE ALSO: reportMissingRegionsInMeta
    SEE ALSO: fixMeta
 
- assigns [OPTIONS] <ENCODED_REGIONNAME>...
+ assigns [OPTIONS] <ENCODED_REGIONNAME/INPUTFILES_FOR_REGIONNAMES>...
    Options:
     -o,--override  override ownership by another procedure
+    -i,--inputFiles  take one or more encoded region names
    A 'raw' assign that can be used even during Master initialization (if
    the -skip flag is specified). Skirts Coprocessors. Pass one or more
    encoded region names. 1588230740 is the hard-coded name for the
    hbase:meta region and de00010733901a05f5a2a3a382e27dd4 is an example of
    what a user-space encoded region name looks like. For example:
-     $ HBCK2 assign 1588230740 de00010733901a05f5a2a3a382e27dd4
+     $ HBCK2 assigns 1588230740 de00010733901a05f5a2a3a382e27dd4
    Returns the pid(s) of the created AssignProcedure(s) or -1 if none.
-
+   If -i or --inputFiles is specified, pass one or more input file names.

Review comment:
       Good.

##########
File path: hbase-hbck2/src/test/java/org/apache/hbase/TestHBCK2.java
##########
@@ -152,17 +152,11 @@ public void testAssigns() throws IOException {
         // test input files
         String testFile = "inputForAssignsTest";
         FileOutputStream output = new FileOutputStream(testFile, false);
-        LOG.info("writing to: {}", testFile);

Review comment:
       Regions in regionStrsArray has been assigned already. These regions need 
to be unassigned first before testing assigns with file option.
   
   ```
   List<Long> pids = this.hbck2.unassigns(hbck, regionStrsArray);
           waitOnPids(pids);
   ```
   The only missing part from testRunWithArgs is to get pid output from console 
and then wait on them. 
   Another way is to wait until the active procedure count to 0.
   ```
   MasterServices services = TEST_UTIL.getHBaseCluster().getMaster();
   
   while (!services.getMasterProcedureExecutor().getActiveProcIds().isEmpty()) {
      sleep (200);
   }
   ```

##########
File path: hbase-hbck2/src/test/java/org/apache/hbase/TestHBCK2.java
##########
@@ -152,17 +152,11 @@ public void testAssigns() throws IOException {
         // test input files
         String testFile = "inputForAssignsTest";
         FileOutputStream output = new FileOutputStream(testFile, false);
-        LOG.info("writing to: {}", testFile);

Review comment:
       Regions in regionStrsArray has been assigned already. These regions need 
to be unassigned first before testing assigns with file option.
   
   ```
   List<Long> pids = this.hbck2.unassigns(hbck, regionStrsArray);
           waitOnPids(pids);
   ```
   The only missing part from testRunWithArgs is to get pid output from console 
and then wait on them. 
   




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to