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 2026/03/24 22:16:16 UTC
(couchdb) 01/01: commit purge seq update before returning
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 <rn...@apache.org>
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).