summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2023-03-30 12:05:22 +0100
committerRobert Newson <rnewson@apache.org>2023-03-30 12:05:22 +0100
commit3a4f74b1856d19f2ac5e13895e440a5a06ba778b (patch)
tree08cc5e38bc4de845745dc586d55a610768142d2f
parent3fc0d1afa13ef5f09014912925a23f15fd5d1d3d (diff)
downloadcouchdb-3a4f74b1856d19f2ac5e13895e440a5a06ba778b.tar.gz
include index disk size
-rw-r--r--nouveau/base/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java12
-rw-r--r--nouveau/base/src/main/java/org/apache/couchdb/nouveau/core/Index.java5
-rw-r--r--nouveau/lucene4/src/main/java/org/apache/couchdb/nouveau/lucene4/core/Lucene4Index.java11
-rw-r--r--nouveau/lucene9/src/main/java/org/apache/couchdb/nouveau/lucene9/core/Lucene9Index.java11
4 files changed, 36 insertions, 3 deletions
diff --git a/nouveau/base/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java b/nouveau/base/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java
index 55e7174ec..66aa18730 100644
--- a/nouveau/base/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java
+++ b/nouveau/base/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java
@@ -24,12 +24,15 @@ public class IndexInfo {
private int numDocs;
+ private long diskSize;
+
public IndexInfo() {
}
- public IndexInfo(final long updateSeq, final int numDocs) {
+ public IndexInfo(final long updateSeq, final int numDocs, final long diskSize) {
this.updateSeq = updateSeq;
this.numDocs = numDocs;
+ this.diskSize = diskSize;
}
@JsonProperty
@@ -38,13 +41,18 @@ public class IndexInfo {
}
@JsonProperty
+ public long getDiskSize() {
+ return diskSize;
+ }
+
+ @JsonProperty
public long getUpdateSeq() {
return updateSeq;
}
@Override
public String toString() {
- return "IndexInfo [numDocs=" + numDocs + ", updateSeq=" + updateSeq + "]";
+ return "IndexInfo [updateSeq=" + updateSeq + ", numDocs=" + numDocs + ", diskSize=" + diskSize + "]";
}
}
diff --git a/nouveau/base/src/main/java/org/apache/couchdb/nouveau/core/Index.java b/nouveau/base/src/main/java/org/apache/couchdb/nouveau/core/Index.java
index 5362b94ab..be1ea0699 100644
--- a/nouveau/base/src/main/java/org/apache/couchdb/nouveau/core/Index.java
+++ b/nouveau/base/src/main/java/org/apache/couchdb/nouveau/core/Index.java
@@ -47,11 +47,14 @@ public abstract class Index<T> implements Closeable {
public final IndexInfo info() throws IOException {
final int numDocs = doNumDocs();
- return new IndexInfo(updateSeq, numDocs);
+ final long diskSize = doDiskSize();
+ return new IndexInfo(updateSeq, numDocs, diskSize);
}
protected abstract int doNumDocs() throws IOException;
+ protected abstract long doDiskSize() throws IOException;
+
public final synchronized void update(final String docId, final DocumentUpdateRequest<T> request)
throws IOException {
assertUpdateSeqIsLower(request.getSeq());
diff --git a/nouveau/lucene4/src/main/java/org/apache/couchdb/nouveau/lucene4/core/Lucene4Index.java b/nouveau/lucene4/src/main/java/org/apache/couchdb/nouveau/lucene4/core/Lucene4Index.java
index 9d2f0e1cf..266727e1c 100644
--- a/nouveau/lucene4/src/main/java/org/apache/couchdb/nouveau/lucene4/core/Lucene4Index.java
+++ b/nouveau/lucene4/src/main/java/org/apache/couchdb/nouveau/lucene4/core/Lucene4Index.java
@@ -68,6 +68,7 @@ import org.apache.lucene.search.SortField;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.TopFieldCollector;
+import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
public class Lucene4Index extends Index<IndexableField> {
@@ -94,6 +95,16 @@ public class Lucene4Index extends Index<IndexableField> {
}
@Override
+ public long doDiskSize() throws IOException {
+ final Directory dir = writer.getDirectory();
+ long result = 0;
+ for (final String name : dir.listAll()) {
+ result += dir.fileLength(name);
+ }
+ return result;
+ }
+
+ @Override
public void doUpdate(final String docId, final DocumentUpdateRequest<IndexableField> request) throws IOException {
final Term docIdTerm = docIdTerm(docId);
final Document doc = toDocument(docId, request);
diff --git a/nouveau/lucene9/src/main/java/org/apache/couchdb/nouveau/lucene9/core/Lucene9Index.java b/nouveau/lucene9/src/main/java/org/apache/couchdb/nouveau/lucene9/core/Lucene9Index.java
index 7229547ab..299ec271a 100644
--- a/nouveau/lucene9/src/main/java/org/apache/couchdb/nouveau/lucene9/core/Lucene9Index.java
+++ b/nouveau/lucene9/src/main/java/org/apache/couchdb/nouveau/lucene9/core/Lucene9Index.java
@@ -67,6 +67,7 @@ import org.apache.lucene.search.SortField;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.TopFieldCollector;
+import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
public class Lucene9Index extends Index<IndexableField> {
@@ -93,6 +94,16 @@ public class Lucene9Index extends Index<IndexableField> {
}
@Override
+ public long doDiskSize() throws IOException {
+ final Directory dir = writer.getDirectory();
+ long result = 0;
+ for (final String name : dir.listAll()) {
+ result += dir.fileLength(name);
+ }
+ return result;
+ }
+
+ @Override
public void doUpdate(final String docId, final DocumentUpdateRequest<IndexableField> request) throws IOException {
final Term docIdTerm = docIdTerm(docId);
final Document doc = toDocument(docId, request);