DRILL-1071: Update local pstore provider to hold data when running in write 
disabled mode.  Allows use of web guy for profile viewing while debugging.


Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/0dfeac8f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/0dfeac8f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/0dfeac8f

Branch: refs/heads/master
Commit: 0dfeac8f8e8ad9cde3741b3a246d88bd11f0593e
Parents: bfb422e
Author: Jacques Nadeau <[email protected]>
Authored: Sat Jun 21 11:26:25 2014 -0700
Committer: Jacques Nadeau <[email protected]>
Committed: Wed Jun 25 09:09:30 2014 -0700

----------------------------------------------------------------------
 .../drill/exec/store/sys/local/LocalPStoreProvider.java | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/0dfeac8f/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/local/LocalPStoreProvider.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/local/LocalPStoreProvider.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/local/LocalPStoreProvider.java
index 16fd875..5d97b1b 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/local/LocalPStoreProvider.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/local/LocalPStoreProvider.java
@@ -19,6 +19,7 @@ package org.apache.drill.exec.store.sys.local;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.concurrent.ConcurrentMap;
 
 import org.apache.drill.common.config.DrillConfig;
 import org.apache.drill.exec.ExecConstants;
@@ -27,6 +28,8 @@ import org.apache.drill.exec.store.sys.PStoreConfig;
 import org.apache.drill.exec.store.sys.PStoreProvider;
 import org.apache.drill.exec.store.sys.PStoreRegistry;
 
+import com.google.common.collect.Maps;
+
 /**
  * A really simple provider that stores data in the local file system, one 
value per file.
  */
@@ -35,10 +38,14 @@ public class LocalPStoreProvider implements PStoreProvider{
 
   private File path;
   private final boolean enableWrite;
+  private ConcurrentMap<PStoreConfig<?>, PStore<?>> pstores;
 
   public LocalPStoreProvider(DrillConfig config) {
     path = new 
File(config.getString(ExecConstants.SYS_STORE_PROVIDER_LOCAL_PATH));
     enableWrite = 
config.getBoolean(ExecConstants.SYS_STORE_PROVIDER_LOCAL_ENABLE_WRITE);
+    if(!enableWrite){
+      pstores = Maps.newConcurrentMap();
+    }
   }
 
   public LocalPStoreProvider(PStoreRegistry registry) {
@@ -54,7 +61,10 @@ public class LocalPStoreProvider implements PStoreProvider{
     if(enableWrite){
       return new LocalPStore<V>(path, storeConfig);
     }else{
-      return new NoWriteLocalPStore<V>();
+      PStore<V> p = new NoWriteLocalPStore<V>();
+      PStore<?> p2 = pstores.putIfAbsent(storeConfig, p);
+      if(p2 != null) return (PStore<V>) p2;
+      return p;
     }
   }
 

Reply via email to