|
|
-
Redundant synchronization in ReduceTask.javaJim Twensky 2012-12-08, 20:58
Hi,
I have recently been reading Hadoop 1.1.0 source code to better understand the internals and learned a lot from it, so far. When I was looking at ReduceTask.java, I saw some synchronization attempts, some of which seem redundant to me. To be more specific, in MapOutputCopier's copyOutput method, before calling addToMapOutputFilesOnDisk, we synchronize on mapOutputFilesOnDisk but the actual addToMapOutputFilesOnDisk also synchronizes on it again. And this entire block in copyOutput is already synchronized on ReduceTask.this which seems a bit confusing to me. I'm not sure if this is the right place to ask this question, but I'd appreciate if someone points out why we need this sort of triple locking here. Regards, Jim |