I think you need to have your message value class as TextArrayListMessage
instead of ArrayListWritable<Text>. That might require you to move
TextArrayListMessage outside of ArrayListTextBug.


On Wed, Oct 16, 2013 at 10:01 AM, Simon McGloin <[email protected]>wrote:

> Hey Guys,
>
> I've only been using Giraph a few days so am very new to it. I'm currently 
> using Giraph 1.0.0. I'm getting the error below when I try to send an 
> ArrayListWritable<Text> message. The error happens between supersteps. If you 
> run the sample code I've included "Superstep 1" never gets printed as the job 
> fails after Superstep 0. Is this a bug or am I doing something wrong. In my 
> full code I need to be able to send a list of Text based vertex ids between 
> supersteps. Should I not be using org.apache.hadoop.io.Text and implement my 
> own writable object?
>
> Any help is appreciated.
>
> Regards,
>
> Simon
>
>
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.IllegalArgumentException: createMessageValue: Failed to instantiate
>       at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:232)
>       at java.util.concurrent.FutureTask.get(FutureTask.java:91)
>       at 
> org.apache.giraph.utils.ProgressableUtils$FutureWaitable.waitFor(ProgressableUtils.java:271)
>       at 
> org.apache.giraph.utils.ProgressableUtils.waitFor(ProgressableUtils.java:143)
>       ... 13 more
> Caused by: java.lang.IllegalArgumentException: createMessageValue: Failed to 
> instantiate
>       at 
> org.apache.giraph.conf.ImmutableClassesGiraphConfiguration.createMessageValue(ImmutableClassesGiraphConfiguration.java:581)
>       at 
> org.apache.giraph.utils.ByteArrayVertexIdMessages.createData(ByteArrayVertexIdMessages.java:66)
>       at 
> org.apache.giraph.utils.ByteArrayVertexIdMessages.createData(ByteArrayVertexIdMessages.java:34)
>       at 
> org.apache.giraph.utils.ByteArrayVertexIdData$VertexIdDataIterator.next(ByteArrayVertexIdData.java:205)
>       at 
> org.apache.giraph.comm.messages.ByteArrayMessagesPerVertexStore.addPartitionMessages(ByteArrayMessagesPerVertexStore.java:116)
>       at 
> org.apache.giraph.comm.requests.SendWorkerMessagesRequest.doRequest(SendWorkerMessagesRequest.java:72)
>       at 
> org.apache.giraph.comm.netty.NettyWorkerClientRequestProcessor.doRequest(NettyWorkerClientRequestProcessor.java:470)
>       at 
> org.apache.giraph.comm.netty.NettyWorkerClientRequestProcessor.flush(NettyWorkerClientRequestProcessor.java:419)
>       at 
> org.apache.giraph.graph.ComputeCallable.call(ComputeCallable.java:193)
>       at org.apache.giraph.graph.ComputeCallable.call(ComputeCallable.java:70)
>       at 
> org.apache.giraph.utils.LogStacktraceCallable.call(LogStacktraceCallable.java:51)
>       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)
>
>
>
>
> package com.adaptivemobile.tarantula.batchlayer.giraph.run;
>
> import java.io.IOException;
>
> import org.apache.giraph.graph.Vertex;
> import org.apache.giraph.utils.ArrayListWritable;
> import org.apache.hadoop.io.NullWritable;
> import org.apache.hadoop.io.Text;
>
> public class ArrayListTextBug extends Vertex<Text, NullWritable, 
> NullWritable, ArrayListWritable<Text>>{
>
>       @Override
>       public void compute(Iterable<ArrayListWritable<Text>> messages) throws 
> IOException {
>               
>               if (getSuperstep() == 0) {
>                       System.out.println("\nSUPERSTEP 0 - " + getId() + 
> "\n------------------------------");
>                       TextArrayListMessage initialMessage = new 
> TextArrayListMessage();
>                       initialMessage.add(getId());
>                       this.sendMessageToAllEdges(initialMessage);     
>                   System.out.println("Vertex " + getId() + " sends 
> TextArrayListMessage to " + getNumEdges() + " edges");
>           }
>               if (getSuperstep() == 1) {
>                       System.out.println("\nSUPERSTEP 1 - " + getId() + 
> "\n------------------------------");
>               }
>       }
>               
>       public class TextArrayListMessage extends ArrayListWritable<Text>{
>                       
>               /**
>                *
>                */
>               private static final long serialVersionUID = 1L;
>
>               public TextArrayListMessage() {
>                       super();
>               }
>
>               @Override
>               public void setClass() {
>                       this.setClass(Text.class);
>               }
>
>       }
>
> }
>
>
>

Reply via email to