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