Patrick Hunt created MRUNIT-166: ----------------------------------- Summary: mapreduce reducers are passed mapred taskattemptid/taskid class instances Key: MRUNIT-166 URL: https://issues.apache.org/jira/browse/MRUNIT-166 Project: MRUnit Issue Type: Bug Affects Versions: 1.0.0 Reporter: Patrick Hunt
I have a mapreduce API based reducer. When my test runs the setup method is called with a mapred taskattemptid/taskid. You can see it in the following. I'm printing the classes of the passed context, taskattemptid, taskid. You can see that my reducer is getting called through mapreduce.Reduce.run(). {noformat} PDH setup context:class org.apache.hadoop.mapreduce.Reducer$Context$$EnhancerByMockitoWithCGLIB$$fc977043 PDH setup taskattemptid:class org.apache.hadoop.mapred.TaskAttemptID PDH setup taskid:class org.apache.hadoop.mapred.TaskID PDH setup stack: at foo.FooReducerTest$MyFooReducer.setup(FooReducerTest.java:75) at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:162) at org.apache.hadoop.mrunit.mapreduce.ReduceDriver.run(ReduceDriver.java:139) at foo.FooReducerTest.testReducer(FooReducerTest.java:120) {noformat} this causes my tests to fail due to later invocations of the test are also exercising a subclass of FileOutputFormat, specifically the method org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.getRecordWriter(TaskAttemptContext) getRecordWriter is called with a context that provides mapreduce based taskattemptid/taskid. The code is comparing the taskid of setup to getRecordWriter, which fails due to the classes being different (even though the data, taskid, itself is the same) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira