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";