[ https://issues.apache.org/jira/browse/HBASE-20771?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16539937#comment-16539937 ]
Hudson commented on HBASE-20771: -------------------------------- Results for branch branch-1 [build #377 on builds.a.o|https://builds.apache.org/job/HBase%20Nightly/job/branch-1/377/]: (x) *{color:red}-1 overall{color}* ---- details (if available): (x) {color:red}-1 general checks{color} -- For more information [see general report|https://builds.apache.org/job/HBase%20Nightly/job/branch-1/377//General_Nightly_Build_Report/] (x) {color:red}-1 jdk7 checks{color} -- For more information [see jdk7 report|https://builds.apache.org/job/HBase%20Nightly/job/branch-1/377//JDK7_Nightly_Build_Report/] (x) {color:red}-1 jdk8 hadoop2 checks{color} -- For more information [see jdk8 (hadoop2) report|https://builds.apache.org/job/HBase%20Nightly/job/branch-1/377//JDK8_Nightly_Build_Report_(Hadoop2)/] (x) {color:red}-1 source release artifact{color} -- See build output for details. > PUT operation fail with "No server address listed in hbase:meta for region > xxxxx" > --------------------------------------------------------------------------------- > > Key: HBASE-20771 > URL: https://issues.apache.org/jira/browse/HBASE-20771 > Project: HBase > Issue Type: Bug > Components: Client > Affects Versions: 1.5.0 > Reporter: Pankaj Kumar > Assignee: Pankaj Kumar > Priority: Major > Fix For: 1.5.0, 1.2.7, 1.3.3, 1.4.6 > > Attachments: HBASE-20771.branch-1.001.patch, > HBASE-20771.branch-1.002.patch > > > 1) Create a table with 1 region > 2) AM send RPC to RS to open the region, > {code} > // invoke assignment (async) > ArrayList<HRegionInfo> userRegionSet = new ArrayList<HRegionInfo>(regions); > for (Map.Entry<ServerName, List<HRegionInfo>> plan: bulkPlan.entrySet()) { > if (!assign(plan.getKey(), plan.getValue())) { > for (HRegionInfo region: plan.getValue()) { > if (!regionStates.isRegionOnline(region)) { > invokeAssign(region); > if (!region.getTable().isSystemTable()) { > userRegionSet.add(region); > } > } > } > } > } > {code} > In above code if assignment fails (due to some problem) then AM will sumbit > the assign request to the thread pool and wait for some duration (here it > will wait for 20sec, region count is 1). > 3) After 20sec, CreateTableProcedure will set table state as ENABLED in ZK > and finish the procedure. > {code} > // Mark the table as Enabling > assignmentManager.getTableStateManager().setTableState(tableName, > ZooKeeperProtos.Table.State.ENABLING); > // Trigger immediate assignment of the regions in round-robin fashion > ModifyRegionUtils.assignRegions(assignmentManager, regions); > // Enable table > assignmentManager.getTableStateManager() > .setTableState(tableName, ZooKeeperProtos.Table.State.ENABLED); > {code} > 4) At the client side, CreateTableFuture.waitProcedureResult(...) is waiting > for the procedure to finish, > {code} > // If the procedure is no longer running, we should have a result > if (response != null && response.getState() != > GetProcedureResultResponse.State.RUNNING) { > procResultFound = response.getState() != > GetProcedureResultResponse.State.NOT_FOUND; > return convertResult(response); > } > {code} > Here we wait for operation result only when procedure result not found, but > in this scenario it will be wrong because region assignment didnt complete, > {code} > // if we don't have a proc result, try the compatibility wait > if (!procResultFound) { > result = waitOperationResult(deadlineTs); > } > {code} > Since HBaseAdmin didn't wait for operation result (successful region > assignment), so client PUT operation will fail by the time region is > successfully opened because "info:server" entry wont be there in meta. -- This message was sent by Atlassian JIRA (v7.6.3#76005)