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 b074f4e7e63276ddfea040691046c1e4d4bd92fa 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).
