Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
0.98.21
-
None
-
None
Description
we found that when RS with meta crash, client will retry the same request, but it still use the original meta location in cache, so all request retried will failed.
Notice the code in HConnectionMananger#locateRegionInMeta, the "useCache" passed in is not used when try to found the meta region.
private HRegionLocation locateRegionInMeta(final TableName parentTable, final TableName tableName, final byte [] row, boolean useCache, Object regionLockObject, boolean retry) throws IOException { ...... for (int tries = 0; true; tries++) { ..... HRegionLocation metaLocation = null; try { // locate the meta region metaLocation = locateRegion(parentTable, metaKey, true, false); //NOTICE: we should honor the "useCache" passed in when locate the meta region. .... } }