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