Author: mreutegg
Date: Tue Dec 5 11:32:36 2017
New Revision: 1817176
URL: http://svn.apache.org/viewvc?rev=1817176&view=rev
Log:
OAK-7028: MongoDocumentStore.getStats() implementation
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreTest.java
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java?rev=1817176&r1=1817175&r2=1817176&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
Tue Dec 5 11:32:36 2017
@@ -40,6 +40,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.google.common.base.Stopwatch;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Iterators;
@@ -1347,7 +1348,7 @@ public class MongoDocumentStore implemen
*
* @return db level ReadPreference
*/
- ReadPreference getConfiguredReadPreference(Collection collection){
+ <T extends Document> ReadPreference
getConfiguredReadPreference(Collection<T> collection){
return getDBCollection(collection).getReadPreference();
}
@@ -1432,8 +1433,10 @@ public class MongoDocumentStore implemen
@Nonnull
@Override
public Map<String, String> getStats() {
- // TODO: OAK-7028
- return Collections.emptyMap();
+ ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
+ List<DBCollection> all = ImmutableList.of(nodes, clusterNodes,
settings, journal);
+ all.forEach(c -> toMapBuilder(builder, c.getStats(), c.getName()));
+ return builder.build();
}
long getMaxDeltaForModTimeIdxSecs() {
@@ -1708,6 +1711,22 @@ public class MongoDocumentStore implemen
return handleException(ex, collection, Collections.singleton(id));
}
+ private static void toMapBuilder(ImmutableMap.Builder<String, String>
builder,
+ BasicDBObject stats,
+ String prefix) {
+ stats.forEach((k, v) -> {
+ // exclude some verbose internals and status
+ if (!k.equals("wiredTiger") && !k.equals("indexDetails") &&
!k.equals("ok")) {
+ String key = prefix + "." + k;
+ if (v instanceof BasicDBObject) {
+ toMapBuilder(builder, (BasicDBObject) v, key);
+ } else {
+ builder.put(key, String.valueOf(v));
+ }
+ }
+ });
+ }
+
private static class BulkUpdateResult {
private final Set<String> failedUpdates;
Modified:
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreTest.java?rev=1817176&r1=1817175&r2=1817176&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreTest.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreTest.java
Tue Dec 5 11:32:36 2017
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.oak.plugins.document.mongo;
+import java.util.Map;
+
import com.mongodb.DB;
import org.apache.jackrabbit.oak.plugins.document.AbstractMongoConnectionTest;
@@ -29,8 +31,10 @@ import org.apache.jackrabbit.oak.plugins
import org.junit.Test;
import static
org.apache.jackrabbit.oak.plugins.document.mongo.MongoUtils.hasIndex;
+import static org.hamcrest.Matchers.hasItem;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
/**
@@ -79,6 +83,15 @@ public class MongoDocumentStoreTest exte
}
}
+ @Test
+ public void getStats() throws Exception {
+ Map<String, String> info =
mk.getNodeStore().getDocumentStore().getStats();
+ assertThat(info.keySet(), hasItem("nodes.count"));
+ assertThat(info.keySet(), hasItem("clusterNodes.count"));
+ assertThat(info.keySet(), hasItem("journal.count"));
+ assertThat(info.keySet(), hasItem("settings.count"));
+ }
+
static final class TestStore extends MongoDocumentStore {
TestStore(DB db, DocumentMK.Builder builder) {
super(db, builder);