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