diff options
author | Robert Newson <rnewson@apache.org> | 2023-03-30 12:05:22 +0100 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2023-03-30 12:05:22 +0100 |
commit | 3a4f74b1856d19f2ac5e13895e440a5a06ba778b (patch) | |
tree | 08cc5e38bc4de845745dc586d55a610768142d2f | |
parent | 3fc0d1afa13ef5f09014912925a23f15fd5d1d3d (diff) | |
download | couchdb-3a4f74b1856d19f2ac5e13895e440a5a06ba778b.tar.gz |
include index disk size
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); |