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