You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2015/03/04 05:10:18 UTC

svn commit: r1663854 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/ main/java/org/apache/jackrabbit/oak/plugins/document/ main/java/org/apache/jackrabbit/oak/plugins/document/memory/ main/java/org/a...

Author: chetanm
Date: Wed Mar  4 04:10:17 2015
New Revision: 1663854

URL: http://svn.apache.org/r1663854
Log:
OAK-2499 - Expose mongo and db versions for reporting purposes

Dropped the JSON representation and instead now the descriptio is published as a String[] of 'key=value' pairs. DocumentStore now provides a map of metadata which is converted to string[].

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FileDataStoreService.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/S3DataStoreService.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java Wed Mar  4 04:10:17 2015
@@ -62,7 +62,7 @@ public abstract class AbstractDataStoreS
         this.dataStore = new DataStoreBlobStore(ds, encodeLengthInId, cacheSizeInMB);
         PropertiesUtil.populate(dataStore, config, false);
 
-        Dictionary<String, String> props = new Hashtable<String, String>();
+        Dictionary<String, Object> props = new Hashtable<String, Object>();
         props.put(Constants.SERVICE_PID, ds.getClass().getName());
         props.put(DESCRIPTION, getDescription());
 
@@ -82,8 +82,8 @@ public abstract class AbstractDataStoreS
 
     protected abstract DataStore createDataStore(ComponentContext context, Map<String, Object> config);
 
-    protected String getDescription(){
-        return "{\"type\":\"unknown\"}";
+    protected String[] getDescription(){
+        return new String[] {"type=unknown"};
     }
 
     protected static String lookup(ComponentContext context, String property) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FileDataStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FileDataStoreService.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FileDataStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FileDataStoreService.java Wed Mar  4 04:10:17 2015
@@ -36,7 +36,7 @@ public class FileDataStoreService extend
     }
 
     @Override
-    protected String getDescription() {
-        return "{\"type\":\"filesystem\"}";
+    protected String[] getDescription() {
+        return new String[] {"type=filesystem"};
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/S3DataStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/S3DataStoreService.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/S3DataStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/S3DataStoreService.java Wed Mar  4 04:10:17 2015
@@ -44,7 +44,7 @@ public class S3DataStoreService extends
     }
 
     @Override
-    protected String getDescription() {
-        return "{\"type\":\"S3\"}";
+    protected String[] getDescription() {
+        return new String[] {"type=S3"};
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java Wed Mar  4 04:10:17 2015
@@ -32,6 +32,7 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Dictionary;
+import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
@@ -343,9 +344,9 @@ public class DocumentNodeStoreService {
 
         DocumentStore ds = mk.getDocumentStore();
 
-        Dictionary<String, String> props = new Hashtable<String, String>();
+        Dictionary<String, Object> props = new Hashtable<String, Object>();
         props.put(Constants.SERVICE_PID, DocumentNodeStore.class.getName());
-        props.put(DESCRIPTION, ds.getDescription());
+        props.put(DESCRIPTION, getMetadata(ds));
         reg = context.getBundleContext().registerService(NodeStore.class.getName(), store, props);
     }
 
@@ -534,4 +535,15 @@ public class DocumentNodeStoreService {
         //Fallback to one from config
         return context.getProperties().get(propName);
     }
+
+    private static String[] getMetadata(DocumentStore ds) {
+        Map<String, String> meta = new HashMap<String, String>(ds.getMetadata());
+        meta.put("nodeStoreType", "document");
+        String[] result = new String[meta.size()];
+        int i = 0;
+        for (Map.Entry<String, String> e : meta.entrySet()) {
+            result[i++] = e.getKey() + "=" + e.getValue();
+        }
+        return result;
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java Wed Mar  4 04:10:17 2015
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.oak.plugins.document;
 
 import java.util.List;
+import java.util.Map;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
@@ -255,5 +256,5 @@ public interface DocumentStore {
     /**
      * @return description of the underlying storage.
      */
-    String getDescription();
+    Map<String, String> getMetadata();
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java Wed Mar  4 04:10:17 2015
@@ -29,6 +29,7 @@ import java.util.concurrent.locks.Reentr
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
+import com.google.common.collect.ImmutableMap;
 import org.apache.jackrabbit.oak.cache.CacheStats;
 import org.apache.jackrabbit.oak.plugins.document.Collection;
 import org.apache.jackrabbit.oak.plugins.document.Document;
@@ -82,6 +83,14 @@ public class MemoryDocumentStore impleme
 
     private Object lastReadWriteMode;
 
+    private final Map<String, String> metadata;
+
+    public MemoryDocumentStore() {
+        metadata = ImmutableMap.<String,String>builder()
+                        .put("type", "memory")
+                        .build();
+    }
+
     @Override
     public <T extends Document> T find(Collection<T> collection, String key, int maxCacheAge) {
         return find(collection, key);
@@ -349,8 +358,8 @@ public class MemoryDocumentStore impleme
     }
 
     @Override
-    public String getDescription() {
-        return "{\"type\":\"memory\"}";
+    public Map<String, String> getMetadata() {
+        return metadata;
     }
 
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java Wed Mar  4 04:10:17 2015
@@ -37,6 +37,7 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import com.mongodb.MongoClientURI;
@@ -44,7 +45,6 @@ import com.mongodb.ReadPreference;
 
 import org.apache.jackrabbit.oak.cache.CacheStats;
 import org.apache.jackrabbit.oak.cache.CacheValue;
-import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
 import org.apache.jackrabbit.oak.plugins.document.CachedNodeDocument;
 import org.apache.jackrabbit.oak.plugins.document.Collection;
 import org.apache.jackrabbit.oak.plugins.document.Document;
@@ -154,11 +154,14 @@ public class MongoDocumentStore implemen
 
     private String lastReadWriteMode;
 
-    private final String dbDescription;
+    private final Map<String, String> metadata;
 
     public MongoDocumentStore(DB db, DocumentMK.Builder builder) {
         String version = checkVersion(db);
-        dbDescription = String.format("{\"type\":\"mongo\",\"version\":%s}", JsopBuilder.encode(version));
+        metadata = ImmutableMap.<String,String>builder()
+                .put("type", "mongo")
+                .put("version", version)
+                .build();
 
         nodes = db.getCollection(
                 Collection.NODES.toString());
@@ -930,8 +933,8 @@ public class MongoDocumentStore implemen
     }
 
     @Override
-    public String getDescription() {
-        return dbDescription;
+    public Map<String, String> getMetadata() {
+        return metadata;
     }
 
     long getMaxDeltaForModTimeIdxSecs() {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java Wed Mar  4 04:10:17 2015
@@ -17,7 +17,6 @@
 package org.apache.jackrabbit.oak.plugins.document.rdb;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.jackrabbit.oak.commons.json.JsopBuilder.encode;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -50,6 +49,7 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import javax.sql.DataSource;
 
+import com.google.common.collect.ImmutableMap;
 import org.apache.jackrabbit.oak.cache.CacheStats;
 import org.apache.jackrabbit.oak.cache.CacheValue;
 import org.apache.jackrabbit.oak.plugins.document.Collection;
@@ -335,8 +335,8 @@ public class RDBDocumentStore implements
     }
 
     @Override
-    public String getDescription() {
-        return dbDescription;
+    public Map<String, String> getMetadata() {
+        return metadata;
     }
 
     // implementation
@@ -567,7 +567,7 @@ public class RDBDocumentStore implements
     // DB-specific information
     private DB db;
 
-    private String dbDescription;
+    private Map<String, String> metadata;
 
     // set of supported indexed properties
     private static final Set<String> INDEXEDPROPERTIES = new HashSet<String>(Arrays.asList(new String[] { MODIFIED,
@@ -598,9 +598,11 @@ public class RDBDocumentStore implements
         String driverDesc = md.getDriverName() + " " + md.getDriverVersion();
 
         this.db = DB.getValue(md.getDatabaseProductName());
-        this.dbDescription = String.format("{\"type\":\"rdb\",\"db\":%s,\"version\":%s}",
-                encode(md.getDatabaseProductName()),
-                encode(md.getDatabaseProductVersion()));
+        this.metadata = ImmutableMap.<String,String>builder()
+                .put("type", "rdb")
+                .put("db", md.getDatabaseProductName())
+                .put("version", md.getDatabaseProductVersion())
+                .build();
 
         if (! "".equals(db.getInitializationStatement())) {
             Statement stmt = con.createStatement();

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java Wed Mar  4 04:10:17 2015
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.oak.plugins.document.util;
 
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.Callable;
 
 import javax.annotation.Nonnull;
@@ -297,8 +298,8 @@ public class LoggingDocumentStoreWrapper
     }
 
     @Override
-    public String getDescription() {
-        return store.getDescription();
+    public Map<String, String> getMetadata() {
+        return store.getMetadata();
     }
 
     private void logMethod(String methodName, Object... args) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java Wed Mar  4 04:10:17 2015
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.oak.plugins.document.util;
 
 import java.util.List;
+import java.util.Map;
 
 import javax.annotation.Nonnull;
 
@@ -127,7 +128,7 @@ public class SynchronizingDocumentStoreW
     }
 
     @Override
-    public String getDescription() {
-        return store.getDescription();
+    public Map<String, String> getMetadata() {
+        return store.getMetadata();
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java Wed Mar  4 04:10:17 2015
@@ -318,8 +318,8 @@ public class TimingDocumentStoreWrapper
     }
 
     @Override
-    public String getDescription() {
-        return base.getDescription();
+    public Map<String, String> getMetadata() {
+        return base.getMetadata();
     }
 
     private void logCommonCall(long start, String key) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java Wed Mar  4 04:10:17 2015
@@ -88,7 +88,7 @@ import org.slf4j.LoggerFactory;
  * An OSGi wrapper for the segment node store.
  */
 @Component(policy = ConfigurationPolicy.REQUIRE)
-@Property(name = "oak.nodestore.description", value = "{\"type\":\"segment\"}", propertyPrivate = true)
+@Property(name = "oak.nodestore.description", value = {"nodeStoreType=segment"}, propertyPrivate = true)
 public class SegmentNodeStoreService extends ProxyNodeStore
         implements Observable, SegmentStoreProvider {
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java?rev=1663854&r1=1663853&r2=1663854&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java Wed Mar  4 04:10:17 2015
@@ -37,8 +37,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
-import org.apache.jackrabbit.oak.commons.json.JsonObject;
-import org.apache.jackrabbit.oak.commons.json.JsopTokenizer;
 import org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore;
 import org.junit.Assume;
 import org.junit.Test;
@@ -960,11 +958,7 @@ public class BasicDocumentStoreTest exte
 
     @Test
     public void description() throws Exception{
-        String desc = ds.getDescription();
-        System.out.println(desc);
-        JsopTokenizer t = new JsopTokenizer(desc);
-        t.read('{');
-        JsonObject json = JsonObject.create(t);
-        assertNotNull(json.getProperties().get("type"));
+        Map<String, String> desc = ds.getMetadata();
+        assertNotNull(desc.get("type"));
     }
 }