Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.1.0, 1.2.0, 2.0.0
-
None
Description
from the comment and the expected behavior AssignmentManager.assign() should be sync
/** Assigns specified regions round robin, if any. * This is a synchronous call and will return once every region has been public void assign(List<HRegionInfo> regions)
but the code has two path. 1 sync and the async
if (servers == 1 || (regions < bulkAssignThresholdRegions && servers < bulkAssignThresholdServers)) { for (HRegionInfo region: plan.getValue()) { ... invokeAssign(region); // <-- this is async threadPool.submit(assign) ... } } else { BulkAssigner ba = new GeneralBulkAssigner(...); ba.bulkAssign(); // <-- this is sync, calls BulkAssign.waitUntilDone() }
https://builds.apache.org/job/HBase-1.1/452/ TestCreateTableProcedure is flaky because of this async behavior