What are the types of messages, patch of your compute method, etc.
You will not receive messages that are not sent, but one thing that can happen is
-- message can have multiple parameters.
suppose message objects can have 2 parameters
m - a,b
say in m's write(out) you do not handle the case of b = null
m1 sets b
m2 has b=null
then because of incorrect code for m's write() m2 can show b = m1.b
that is because message objects will be re-used when receiving. This is a Giraph gotcha, because of
object reuse in most iterators.
> From: email@example.com > Date: Tue, 23 Sep 2014 10:10:48 -0400 > Subject: receiving messages that I didn't send > To: firstname.lastname@example.org > > Hi Folks. I am refactoring my compute() to use a set of ids as its > message type, and in my tests it is receiving a message that it > absolutely did not send. I've debugged it and am at a loss. > Interestingly, I encountered this once before and solved it by > creating a copy of a Writeable instead of re-using it, but I haven't > been able to solve it this time. In general, does this anomalous > behavior indicate a Giraph/Hadoop gotcha'? It's really confounding! > Thank very much -- matt > > -- > Matthew Cornell | email@example.com | 413-626-3621 | 34 > Dickinson Street, Amherst MA 01002 | matthewcornell.org