PB implementations of all records should have getters, setters and getProto() properly synchronized ---------------------------------------------------------------------------------------------------
Key: MAPREDUCE-2967 URL: https://issues.apache.org/jira/browse/MAPREDUCE-2967 Project: Hadoop Map/Reduce Issue Type: Bug Components: mrv2 Affects Versions: 0.23.0 Reporter: Vinod Kumar Vavilapalli Assignee: Vinod Kumar Vavilapalli Fix For: 0.23.0 In the past, I've been bitten by multiple, very hard-to-debug race conditions with YARN+MR which all boiled down to locking bugs in PB implementation of various records. The main reason seems to be that while the _getProto()_ method in each record rebuilds the protocol object, if someone accesses a filed using a getter, it returns zero or a null object. Because of this, while _getProto()_ is in progress, _hashCode()_, _equals()_, _toString()_ etc are all affected, leading to hard-to-debug races. I corned this down after much logging in almost all the cases. Over time, we've fixed this for most of the ID records. This JIRA should fix it for *all* the records once and for all. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira