This is an automated email from the ASF dual-hosted git repository.

rnewson pushed a commit to branch nouveau-update-bundle
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 08b44537f96059f90f204ecd088206e49369cf0b
Author: Robert Newson <[email protected]>
AuthorDate: Tue Mar 24 21:34:23 2026 +0000

    commit purge seq update before returning
---
 .../java/org/apache/couchdb/nouveau/api/IndexInfoRequest.java  | 10 +++++++++-
 .../org/apache/couchdb/nouveau/resources/IndexResource.java    |  6 ++++++
 src/nouveau/src/nouveau_api.erl                                |  3 ++-
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git 
a/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfoRequest.java
 
b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfoRequest.java
index bc2f016f8..f23113a09 100644
--- 
a/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfoRequest.java
+++ 
b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfoRequest.java
@@ -15,7 +15,9 @@ package org.apache.couchdb.nouveau.api;
 
 import com.fasterxml.jackson.databind.PropertyNamingStrategies;
 import com.fasterxml.jackson.databind.annotation.JsonNaming;
+import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.PositiveOrZero;
+import java.util.Optional;
 import java.util.OptionalLong;
 
 @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@@ -23,4 +25,10 @@ public record IndexInfoRequest(
         @PositiveOrZero OptionalLong matchUpdateSeq,
         @PositiveOrZero OptionalLong updateSeq,
         @PositiveOrZero OptionalLong matchPurgeSeq,
-        @PositiveOrZero OptionalLong purgeSeq) {}
+        @PositiveOrZero OptionalLong purgeSeq,
+        @NotNull Optional<Boolean> commit) {
+
+    public boolean shouldCommit() {
+        return commit.orElse(false);
+    }
+}
diff --git 
a/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/IndexResource.java
 
b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/IndexResource.java
index 18539fbed..182152a5d 100644
--- 
a/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/IndexResource.java
+++ 
b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/IndexResource.java
@@ -99,14 +99,20 @@ public final class IndexResource {
     @POST
     public Ok setIndexInfo(@PathParam("name") String name, @NotNull @Valid 
IndexInfoRequest request) throws Exception {
         return indexManager.with(name, (index) -> {
+            var shouldCommit = false;
             if (request.matchUpdateSeq().isPresent() && 
request.updateSeq().isPresent()) {
                 index.setUpdateSeq(
                         request.matchUpdateSeq().getAsLong(),
                         request.updateSeq().getAsLong());
+                shouldCommit = true;
             }
             if (request.matchPurgeSeq().isPresent() && 
request.purgeSeq().isPresent()) {
                 index.setPurgeSeq(
                         request.matchPurgeSeq().getAsLong(), 
request.purgeSeq().getAsLong());
+                shouldCommit = true;
+            }
+            if (shouldCommit && request.shouldCommit()) {
+                index.commit();
             }
             return Ok.INSTANCE;
         });
diff --git a/src/nouveau/src/nouveau_api.erl b/src/nouveau/src/nouveau_api.erl
index 8c85ec910..2e8b1c37d 100644
--- a/src/nouveau/src/nouveau_api.erl
+++ b/src/nouveau/src/nouveau_api.erl
@@ -284,7 +284,8 @@ set_update_seq(#index{} = Index, MatchSeq, UpdateSeq) ->
 set_purge_seq(#index{} = Index, MatchSeq, PurgeSeq) ->
     ReqBody = #{
         match_purge_seq => MatchSeq,
-        purge_seq => PurgeSeq
+        purge_seq => PurgeSeq,
+        commit => true
     },
     set_seq(Index, ReqBody).
 

Reply via email to