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

        

Reply via email to