diff --git a/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/jobgen/JobGen.java b/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/jobgen/JobGen.java
index b7216c8..15981e7 100644
--- a/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/jobgen/JobGen.java
+++ b/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/jobgen/JobGen.java
@@ -131,7 +131,7 @@
     protected PregelixJob pregelixJob;
     protected IIndexLifecycleManagerProvider lcManagerProvider = IndexLifeCycleManagerProvider.INSTANCE;
     protected IStorageManagerInterface storageManagerInterface = StorageManagerInterface.INSTANCE;
-    protected String jobId = new UUID(System.currentTimeMillis(), System.nanoTime()).toString();
+    protected String jobId = UUID.randomUUID().toString();
     protected int frameSize = ClusterConfig.getFrameSize();
     protected int maxFrameNumber = (int) (((long) 32 * MB) / frameSize);
 
diff --git a/pregelix/pregelix-dataflow/src/main/java/edu/uci/ics/pregelix/dataflow/context/RuntimeContext.java b/pregelix/pregelix-dataflow/src/main/java/edu/uci/ics/pregelix/dataflow/context/RuntimeContext.java
index 5c44d65..e5f74f3 100644
--- a/pregelix/pregelix-dataflow/src/main/java/edu/uci/ics/pregelix/dataflow/context/RuntimeContext.java
+++ b/pregelix/pregelix-dataflow/src/main/java/edu/uci/ics/pregelix/dataflow/context/RuntimeContext.java
@@ -86,7 +86,7 @@
         resourceIdFactory = new ResourceIdFactory(0);
     }
 
-    public void close() throws HyracksDataException {
+    public synchronized void close() throws HyracksDataException {
         bufferCache.close();
         for (Entry<String, PJobContext> entry : activeJobs.entrySet()) {
             entry.getValue().close();
@@ -118,7 +118,7 @@
         return fileMapManager;
     }
 
-    public Map<TaskIterationID, IStateObject> getAppStateStore(String jobId) {
+    public synchronized Map<TaskIterationID, IStateObject> getAppStateStore(String jobId) {
         PJobContext activeJob = getActiveJob(jobId);
         return activeJob.getAppStateStore();
     }
@@ -144,7 +144,7 @@
         activeJob.endSuperStep(jobId);
     }
 
-    public void clearState(String jobId) throws HyracksDataException {
+    public synchronized void clearState(String jobId) throws HyracksDataException {
         PJobContext activeJob = getActiveJob(jobId);
         activeJob.clearState(jobId);
         activeJobs.remove(jobId);
