If it's in trunk, then it may be a bug in that during
LocalBSPRunner.transfer(), BSPPeerImpl.sync() looks like at the same
time calling it.remove() which removes underlying BSPMessageBundle,
resulting in EOFException.
Any chance to comment out BSPPeerImpl.java at line 381 with code as below?
...
final BSPMessageBundle<M> bundle = entry.getValue();
// remove this message during runtime to save a bit of memory
// it.remove(); <-- comment out this line
try {
messenger.transfer(addr, bundle);
...
If that fixes the EOFException problem, then will need to create a
ticket for that.
On 3 May 2014 06:26, Attila Dóró <[email protected]> wrote:
> Hi,
>
> I try to write a graph algorithm, but I get EOFException and I can't find
> where is the mistake.
> I use the
> SSSP<https://github.com/apache/hama/blob/trunk/examples/src/main/java/org/apache/hama/examples/SSSP.java>
> example
> as a base. I tried this example and it worked well. I modified the compute
> function and some other lines in the SSSP, but I didn't modify the
> SSSPTextReader class, which extends the VertexInputReader. I know that the
> EOFException "signals that an end of file or end of stream has been reached
> unexpectedly during input", but I didn't modify any reader or input method,
> so I don't understand how can I get this exception.
>
> In the first superstep I get the proper output, but after the first
> superstep I get this exception:
>
> java.io.EOFException
> at java.io.DataInputStream.readFully(DataInputStream.java:180)
> at java.io.DataInputStream.readFully(DataInputStream.java:152)
> at
> org.apache.hama.bsp.BSPMessageBundle$1.next(BSPMessageBundle.java:157)
> at
> org.apache.hama.bsp.BSPMessageBundle$1.next(BSPMessageBundle.java:118)
> at
> org.apache.hama.bsp.LocalBSPRunner$LocalMessageManager.transfer(LocalBSPRunner.java:361)
> at org.apache.hama.bsp.BSPPeerImpl.sync(BSPPeerImpl.java:381)
> at org.apache.hama.graph.GraphJobRunner.bsp(GraphJobRunner.java:133)
> at
> org.apache.hama.bsp.LocalBSPRunner$BSPRunner.run(LocalBSPRunner.java:258)
> at
> org.apache.hama.bsp.LocalBSPRunner$BSPRunner.call(LocalBSPRunner.java:288)
> at
> org.apache.hama.bsp.LocalBSPRunner$BSPRunner.call(LocalBSPRunner.java:212)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
>
> I have no idea what is the problem, so if somebody could help me, I would
> really appreciate that.
>
> (Anyway, here <http://pastebin.com/3AHu8FnC> is my code, but I haven't used
> comment so I think it's totally incomprehensible for you)
>
> Thank you in advance for your help,
> Attila