You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2025/08/08 14:36:41 UTC
(couchdb) 02/04: indicate whether upgrade is required in _nouveau_info
This is an automated email from the ASF dual-hosted git repository.
rnewson pushed a commit to branch lucene-10
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 09339a41eaf3b5bab4a2bbd21777d48e0a586a4d
Author: Robert Newson <rn...@apache.org>
AuthorDate: Thu Aug 7 11:36:35 2025 +0100
indicate whether upgrade is required in _nouveau_info
---
.../main/java/org/apache/couchdb/nouveau/api/IndexInfo.java | 12 ++++++++++--
.../src/main/java/org/apache/couchdb/nouveau/core/Index.java | 6 ++++--
.../java/org/apache/couchdb/nouveau/core/IndexManager.java | 3 ++-
.../java/org/apache/couchdb/nouveau/lucene/LuceneIndex.java | 3 ++-
src/nouveau/src/nouveau_fabric_info.erl | 2 ++
5 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java
index 9958c7780..1b34bbbcf 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java
@@ -33,15 +33,23 @@ public final class IndexInfo {
@PositiveOrZero
private final long diskSize;
+ private final boolean upgradeRequired;
+
public IndexInfo(
@JsonProperty("update_seq") final long updateSeq,
@JsonProperty("purge_seq") final long purgeSeq,
@JsonProperty("num_docs") final int numDocs,
- @JsonProperty("disk_size") final long diskSize) {
+ @JsonProperty("disk_size") final long diskSize,
+ @JsonProperty("upgrade_required") final boolean upgradeRequired) {
this.updateSeq = updateSeq;
this.purgeSeq = purgeSeq;
this.numDocs = numDocs;
this.diskSize = diskSize;
+ this.upgradeRequired = upgradeRequired;
+ }
+
+ public boolean getUpgradeRequired() {
+ return upgradeRequired;
}
public int getNumDocs() {
@@ -63,6 +71,6 @@ public final class IndexInfo {
@Override
public String toString() {
return "IndexInfo [updateSeq=" + updateSeq + ", purgeSeq=" + purgeSeq + ", numDocs=" + numDocs + ", diskSize="
- + diskSize + "]";
+ + diskSize + ", upgradeRequired=" + upgradeRequired + "]";
}
}
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java
index 35013bf8d..b8a03e1d1 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java
@@ -37,17 +37,19 @@ public abstract class Index implements Closeable {
private long updateSeq;
private long purgeSeq;
+ private boolean upgradeRequired;
private boolean deleteOnClose = false;
- protected Index(final long updateSeq, final long purgeSeq) {
+ protected Index(final long updateSeq, final long purgeSeq, final boolean upgradeRequired) {
this.updateSeq = updateSeq;
this.purgeSeq = purgeSeq;
+ this.upgradeRequired = upgradeRequired;
}
public final IndexInfo info() throws IOException {
final int numDocs = doNumDocs();
final long diskSize = doDiskSize();
- return new IndexInfo(updateSeq, purgeSeq, numDocs, diskSize);
+ return new IndexInfo(updateSeq, purgeSeq, numDocs, diskSize, upgradeRequired);
}
protected abstract int doNumDocs() throws IOException;
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java
index 2848e89ca..7180deb52 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java
@@ -383,6 +383,7 @@ public final class IndexManager implements Managed {
final IndexDefinition indexDefinition = loadIndexDefinition(name);
final Analyzer analyzer = LuceneAnalyzerFactory.fromDefinition(indexDefinition);
final int version = getIndexVersion(path);
+ final boolean upgradeRequired = version < Version.LATEST.major;
final Path indexPath = path.resolve(Integer.toString(version));
final Directory dir = new DirectIODirectory(FSDirectory.open(indexPath));
final IndexWriterConfig config = new IndexWriterConfig(analyzer);
@@ -391,7 +392,7 @@ public final class IndexManager implements Managed {
final long updateSeq = getSeq(writer, "update_seq");
final long purgeSeq = getSeq(writer, "purge_seq");
final SearcherManager searcherManager = new SearcherManager(writer, searcherFactory);
- return new LuceneIndex(analyzer, writer, updateSeq, purgeSeq, searcherManager);
+ return new LuceneIndex(analyzer, writer, updateSeq, purgeSeq, upgradeRequired, searcherManager);
}
/**
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene/LuceneIndex.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene/LuceneIndex.java
index e62ffdb5a..9709cd930 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene/LuceneIndex.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene/LuceneIndex.java
@@ -113,8 +113,9 @@ public class LuceneIndex extends Index {
final IndexWriter writer,
final long updateSeq,
final long purgeSeq,
+ final boolean upgradeRequired,
final SearcherManager searcherManager) {
- super(updateSeq, purgeSeq);
+ super(updateSeq, purgeSeq, upgradeRequired);
this.analyzer = Objects.requireNonNull(analyzer);
this.writer = Objects.requireNonNull(writer);
this.searcherManager = Objects.requireNonNull(searcherManager);
diff --git a/src/nouveau/src/nouveau_fabric_info.erl b/src/nouveau/src/nouveau_fabric_info.erl
index 0fe41af5a..45bdf177e 100644
--- a/src/nouveau/src/nouveau_fabric_info.erl
+++ b/src/nouveau/src/nouveau_fabric_info.erl
@@ -104,5 +104,7 @@ handle_message({'EXIT', _}, Worker, {Counters, Acc}) ->
merge_info(signature, Val, Val) ->
Val;
+merge_info(<<"upgrade_required">>, Val1, Val2) when is_boolean(Val1), is_boolean(Val2) ->
+ Val1 orelse Val2;
merge_info(_Key, Val1, Val2) ->
Val1 + Val2.