Author: mreutegg
Date: Wed Aug 21 07:10:05 2019
New Revision: 1865601

URL: http://svn.apache.org/viewvc?rev=1865601&view=rev
Log:
OAK-8564: Add metric for MongoDB total and used disk space

Modified:
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetrics.java
    
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetricsTest.java

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetrics.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetrics.java?rev=1865601&r1=1865600&r2=1865601&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetrics.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetrics.java
 Wed Aug 21 07:10:05 2019
@@ -79,6 +79,9 @@ public final class MongoDocumentStoreMet
                 updateCounter(getCounter(c, "storageSize"), stats.storageSize);
                 updateCounter(getCounter(c, "totalIndexSize"), 
stats.totalIndexSize);
             }
+            DatabaseStats dbStats = getDBStats();
+            updateCounter(getDBCounter("fsUsedSize"), dbStats.fsUsedSize);
+            updateCounter(getDBCounter("fsTotalSize"), dbStats.fsTotalSize);
         } catch (MongoException e) {
             LOG.warn("Updating counters failed: {}", e.toString());
         }
@@ -99,16 +102,34 @@ public final class MongoDocumentStoreMet
         return stats;
     }
 
+    private DatabaseStats getDBStats() throws MongoException {
+        DatabaseStats stats = new DatabaseStats();
+        BasicDBObject result = new BasicDBObject(db.runCommand(new 
org.bson.Document("dbStats", 1)));
+        stats.fsUsedSize = result.getLong("fsUsedSize", 0);
+        stats.fsTotalSize = result.getLong("fsTotalSize", 0);
+        return stats;
+    }
+
     private CounterStats getCounter(Collection<? extends Document> c,
                                     String name) {
         String counterName = "MongoDB." + c.toString() + "." + name;
         return statsProvider.getCounterStats(counterName, METRICS_ONLY);
     }
 
+    private CounterStats getDBCounter(String name) {
+        String counterName = "MongoDB." + name;
+        return statsProvider.getCounterStats(counterName, METRICS_ONLY);
+    }
+
     private static final class CollectionStats {
         long count;
         long size;
         long storageSize;
         long totalIndexSize;
     }
+
+    private static final class DatabaseStats {
+        long fsUsedSize;
+        long fsTotalSize;
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetricsTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetricsTest.java?rev=1865601&r1=1865600&r2=1865601&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetricsTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetricsTest.java
 Wed Aug 21 07:10:05 2019
@@ -33,7 +33,9 @@ import org.junit.Test;
 
 import static 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder;
 import static org.apache.jackrabbit.oak.stats.StatsOptions.METRICS_ONLY;
+import static org.hamcrest.Matchers.greaterThan;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeNotNull;
 
@@ -58,7 +60,13 @@ public class MongoDocumentStoreMetricsTe
                 newMongoDocumentNodeStoreBuilder());
         try {
             MongoDocumentStoreMetrics metrics = new 
MongoDocumentStoreMetrics(store, statsProvider);
+            assertEquals(0, getCount("MongoDB.fsUsedSize"));
+            assertEquals(0, getCount("MongoDB.fsTotalSize"));
+
             metrics.run();
+            assertThat(getCount("MongoDB.fsUsedSize"), greaterThan(0L));
+            assertThat(getCount("MongoDB.fsTotalSize"), greaterThan(0L));
+
             // document for root node
             assertEquals(1, getCount("MongoDB.nodes.count"));
             // one cluster node


Reply via email to