use set state=DELETE instead of deleteVertexId() because deleteVertexId() causes exception
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/client/Client.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/client/Client.java
index 108d130..60342a7 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/client/Client.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/client/Client.java
@@ -10,7 +10,6 @@
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
-import edu.uci.ics.genomix.pregelix.format.NaiveAlgorithmForPathMergeInputFormat;
import edu.uci.ics.genomix.pregelix.operator.LogAlgorithmForPathMergeVertex;
import edu.uci.ics.genomix.pregelix.operator.NaiveAlgorithmForPathMergeVertex;
import edu.uci.ics.pregelix.api.job.PregelixJob;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForPathMergeOutputFormat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForPathMergeOutputFormat.java
index 12c638e..29c5ccb 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForPathMergeOutputFormat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForPathMergeOutputFormat.java
@@ -41,7 +41,8 @@
if(vertex.getVertexValue().getState() != State.FINAL_DELETE
&& vertex.getVertexValue().getState() != State.END_VERTEX
&& vertex.getVertexValue().getState() != State.TODELETE
- && vertex.getVertexValue().getState() != State.KILL_SELF)
+ && vertex.getVertexValue().getState() != State.KILL_SELF
+ && vertex.getVertexValue().getState() != State.NON_EXIST)
getRecordWriter().write(vertex.getVertexId(),vertex.getVertexValue());
}
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeOutputFormat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeOutputFormat.java
index 983112b..482014e 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeOutputFormat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeOutputFormat.java
@@ -8,6 +8,7 @@
import edu.uci.ics.genomix.pregelix.api.io.binary.BinaryVertexOutputFormat;
import edu.uci.ics.genomix.pregelix.io.ValueStateWritable;
+import edu.uci.ics.genomix.pregelix.type.State;
import edu.uci.ics.genomix.type.KmerBytesWritable;
import edu.uci.ics.pregelix.api.graph.Vertex;
import edu.uci.ics.pregelix.api.io.VertexWriter;
@@ -35,7 +36,8 @@
@Override
public void writeVertex(Vertex<KmerBytesWritable, ValueStateWritable, NullWritable, ?> vertex) throws IOException,
InterruptedException {
- getRecordWriter().write(vertex.getVertexId(),vertex.getVertexValue());
+ if(vertex.getVertexValue().getState() != State.NON_EXIST)
+ getRecordWriter().write(vertex.getVertexId(),vertex.getVertexValue());
}
}
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java
index 60f40dc..4a57657 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java
@@ -301,10 +301,10 @@
else{
if(getVertexValue().getState() != State.START_VERTEX
&& getVertexValue().getState() != State.END_VERTEX && getVertexValue().getState() != State.FINAL_DELETE){
- //vertexVal.setState(State.KILL_SELF);
- //setVertexValue(vertexVal);
- //voteToHalt();
- deleteVertex(getVertexId());//killSelf because it doesn't receive any message
+ vertexVal.setState(State.KILL_SELF);
+ setVertexValue(vertexVal);
+ voteToHalt();
+ //deleteVertex(getVertexId());//killSelf because it doesn't receive any message
}
}
}
@@ -328,22 +328,26 @@
@Override
public void compute(Iterator<LogAlgorithmMessageWritable> msgIterator) {
initVertex();
- if (getSuperstep() == 1)
- startSendMsg();
- else if(getSuperstep() == 2)
- initState(msgIterator);
- else if(getSuperstep()%3 == 0 && getSuperstep() <= maxIteration){
- sendMsgToPathVertex(msgIterator);
- }
- else if(getSuperstep()%3 == 1 && getSuperstep() <= maxIteration){
- responseMsgToHeadVertex(msgIterator);
- }
- else if(getSuperstep()%3 == 2 && getSuperstep() <= maxIteration){
- if(vertexVal.getState() == State.TODELETE){ //|| vertexVal.getState() == State.KILL_SELF)
- deleteVertex(getVertexId()); //killSelf voteToHalt()
+ if(vertexVal.getState() != State.NON_EXIST && vertexVal.getState() != State.KILL_SELF){
+ if (getSuperstep() == 1)
+ startSendMsg();
+ else if(getSuperstep() == 2)
+ initState(msgIterator);
+ else if(getSuperstep()%3 == 0 && getSuperstep() <= maxIteration){
+ sendMsgToPathVertex(msgIterator);
}
- else{
- mergeChainVertex(msgIterator);
+ else if(getSuperstep()%3 == 1 && getSuperstep() <= maxIteration){
+ responseMsgToHeadVertex(msgIterator);
+ }
+ else if(getSuperstep()%3 == 2 && getSuperstep() <= maxIteration){
+ if(vertexVal.getState() == State.TODELETE){ //|| vertexVal.getState() == State.KILL_SELF)
+ vertexVal.setState(State.NON_EXIST);
+ setVertexValue(vertexVal);
+ voteToHalt(); //killSelf deleteVertex(getVertexId());
+ }
+ else{
+ mergeChainVertex(msgIterator);
+ }
}
}
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
index 9d6c9ff..f2e8688 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
@@ -138,7 +138,8 @@
if(GraphVertexOperation.isPathVertex(vertexVal.getAdjMap())){
chainVertexId = kmerFactory.mergeKmerWithNextCode(msg.getChainVertexId(),
vertexId.getGeneCodeAtPosition(kmerSize - 1));
- deleteVertex(getVertexId());
+ vertexVal.setState(State.NON_EXIST); //deleteVertex(getVertexId());
+ setVertexValue(vertexVal);
msg.set(vertexId, chainVertexId, msg.getHeadVertexId(), vertexVal.getAdjMap(), false);
sendMsg(destVertexId,msg);
}
@@ -159,30 +160,32 @@
@Override
public void compute(Iterator<NaiveAlgorithmMessageWritable> msgIterator) {
initVertex();
- if (getSuperstep() == 1) {
- if(GraphVertexOperation.isHeadVertex(vertexVal.getAdjMap())){
- msg.set(vertexId, chainVertexId, vertexId, (byte)0, false);
- sendMsgToAllNextNodes(vertexId, vertexVal.getAdjMap());
+ if(vertexVal.getState() != State.NON_EXIST){
+ if (getSuperstep() == 1) {
+ if(GraphVertexOperation.isHeadVertex(vertexVal.getAdjMap())){
+ msg.set(vertexId, chainVertexId, vertexId, (byte)0, false);
+ sendMsgToAllNextNodes(vertexId, vertexVal.getAdjMap());
+ }
}
- }
- else if(getSuperstep() == 2){
- if(msgIterator.hasNext()){
- msg = msgIterator.next();
- initChainVertex();
+ else if(getSuperstep() == 2){
+ if(msgIterator.hasNext()){
+ msg = msgIterator.next();
+ initChainVertex();
+ }
}
- }
- //head node sends message to path node
- else if(getSuperstep()%2 == 1 && getSuperstep() <= maxIteration){
- while (msgIterator.hasNext()){
- msg = msgIterator.next();
- sendMsgToPathVertex();
+ //head node sends message to path node
+ else if(getSuperstep()%2 == 1 && getSuperstep() <= maxIteration){
+ while (msgIterator.hasNext()){
+ msg = msgIterator.next();
+ sendMsgToPathVertex();
+ }
}
- }
- //path node sends message back to head node
- else if(getSuperstep()%2 == 0 && getSuperstep() > 2 && getSuperstep() <= maxIteration){
- while(msgIterator.hasNext()){
- msg = msgIterator.next();
- responseMsgToHeadVertex();
+ //path node sends message back to head node
+ else if(getSuperstep()%2 == 0 && getSuperstep() > 2 && getSuperstep() <= maxIteration){
+ while(msgIterator.hasNext()){
+ msg = msgIterator.next();
+ responseMsgToHeadVertex();
+ }
}
}
voteToHalt();
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/GenerateSmallFile.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/GenerateSmallFile.java
index 555cf66..d97a2fd 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/GenerateSmallFile.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/GenerateSmallFile.java
@@ -5,7 +5,6 @@
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.SequenceFile.CompressionType;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java
index 61bcb0c..ae3c621 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java
@@ -9,6 +9,7 @@
public static final int FINAL_VERTEX = 5;
public static final int FINAL_DELETE = 6;
public static final int KILL_SELF = 7;
+ public static final int NON_EXIST = 8;
public final static class STATE_CONTENT{
@@ -39,6 +40,9 @@
case KILL_SELF:
r = "KILL_SELF";
break;
+ case NON_EXIST:
+ r = "NON_EXIST";
+ break;
}
return r;
}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java
index 45d8185..fd0749a 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java
@@ -40,7 +40,7 @@
private static final String PATH_TO_ONLY = "src/test/resources/only.txt";
private static final String FILE_EXTENSION_OF_RESULTS = "result";
- private static final String DATA_PATH = "data/sequencefile/TreePath";
+ private static final String DATA_PATH = "data/sequencefile/LongPath";
private static final String HDFS_PATH = "/webmap/";
private static final String HYRACKS_APP_NAME = "pregelix";