Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
Reviewed
Description
ShuffleHandler passes wrong base parameter to getMapOutputInfo if mapId is not in the cache.
getMapOutputInfo expected the base parameter is getBaseLocation(jobId, user) + mapId
When it is called inside populateHeaders, the base parameter is set correctly
String base = outputBaseStr + mapId;
MapOutputInfo outputInfo = getMapOutputInfo(base, mapId, reduce, user);
When it is called outside populateHeaders, the base parameter is set wrongly to outputBasePathStr after number of mapId cached exceeds mapOutputMetaInfoCacheSize.
String outputBasePathStr = getBaseLocation(jobId, user); MapOutputInfo info = mapOutputInfoMap.get(mapId); if (info == null) { info = getMapOutputInfo(outputBasePathStr, mapId, reduceId, user); }