summaryrefslogtreecommitdiffstats
path: root/vespaclient-container-plugin
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-10-13 17:24:53 +0200
committerJon Marius Venstad <venstad@gmail.com>2020-10-13 17:24:53 +0200
commit2931da13cbf55cb62ebc384d568914673f387bdf (patch)
tree6b0556d23a7f6567bd7599bcb8304a4f2c3f58fd /vespaclient-container-plugin
parent2d1f722b835e2f844058bfffbca66f258129bff1 (diff)
Support conditional removals in AsyncSession
Diffstat (limited to 'vespaclient-container-plugin')
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
index 445f2d68961..03546e02d61 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
@@ -13,6 +13,7 @@ import com.yahoo.document.Document;
import com.yahoo.document.DocumentId;
import com.yahoo.document.DocumentOperation;
import com.yahoo.document.DocumentPut;
+import com.yahoo.document.DocumentRemove;
import com.yahoo.document.DocumentTypeManager;
import com.yahoo.document.DocumentUpdate;
import com.yahoo.document.FixedBucketSpaces;
@@ -360,10 +361,12 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
private ContentChannel deleteDocument(HttpRequest request, DocumentPath path, ResponseHandler rawHandler) {
ResponseHandler handler = new MeasuringResponseHandler(rawHandler, com.yahoo.documentapi.metrics.DocumentOperationType.REMOVE, clock.instant());
enqueueAndDispatch(request, handler, () -> {
+ DocumentRemove remove = new DocumentRemove(path.id());
+ getProperty(request, CONDITION).map(TestAndSetCondition::new).ifPresent(remove::setCondition);
DocumentOperationParameters rawParameters = getProperty(request, ROUTE).map(parameters()::withRoute)
.orElse(parameters());
DocumentOperationParameters parameters = rawParameters.withResponseHandler(response -> handle(path, handler, response));
- return () -> dispatchOperation(request, handler, () -> asyncSession.remove(path.id(), parameters));
+ return () -> dispatchOperation(request, handler, () -> asyncSession.remove(remove, parameters));
});
return ignoredContent;
}