diff options
author | Tor Brede Vekterli <vekterli@yahooinc.com> | 2023-03-10 11:41:10 +0100 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahooinc.com> | 2023-03-10 11:41:10 +0100 |
commit | ec2d56866d70ac6625fb58aa2baa6f4014fd37d8 (patch) | |
tree | c05f0df037b0e91d6dc0ca38b85d7f14364d0a33 /vespaclient-container-plugin/src | |
parent | fea300fa4b789ce8e27676f8daf4a3fbb0266ef6 (diff) |
Expose from/to visitor timestamps in Document V1 API
Mirrors `vespa-visit` (and the underlying `VisitorParameters`) in
being in microseconds from UTC epoch.
Diffstat (limited to 'vespaclient-container-plugin/src')
2 files changed, 10 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 373928a3e22..1dd4765c28e 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 @@ -171,6 +171,8 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { private static final String SLICES = "slices"; private static final String SLICE_ID = "sliceId"; private static final String DRY_RUN = "dryRun"; + private static final String FROM_TIMESTAMP = "fromTimestamp"; + private static final String TO_TIMESTAMP = "toTimestamp"; private final Clock clock; private final Duration handlerTimeout; @@ -1227,6 +1229,9 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { getProperty(request, CONTINUATION).map(ProgressToken::fromSerializedString).ifPresent(parameters::setResumeToken); parameters.setPriority(DocumentProtocol.Priority.NORMAL_4); + getProperty(request, FROM_TIMESTAMP, unsignedLongParser).ifPresent(parameters::setFromTimestamp); + getProperty(request, TO_TIMESTAMP, unsignedLongParser).ifPresent(parameters::setToTimestamp); + StorageCluster storageCluster = resolveCluster(cluster, clusters); parameters.setRoute(storageCluster.name()); parameters.setBucketSpace(resolveBucket(storageCluster, diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java index b6ad7ba5570..7b554c2b0fe 100644 --- a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java +++ b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java @@ -223,6 +223,8 @@ public class DocumentV1ApiTest { assertEquals("(all the things)", parameters.getDocumentSelection()); assertEquals(6000, parameters.getSessionTimeoutMs()); assertEquals(9, parameters.getTraceLevel()); + assertEquals(1_000_000, parameters.getFromTimestamp()); + assertEquals(2_000_000, parameters.getToTimestamp()); // Put some documents in the response parameters.getLocalDataHandler().onMessage(new PutDocumentMessage(new DocumentPut(doc1)), tokens.get(0)); parameters.getLocalDataHandler().onMessage(new PutDocumentMessage(new DocumentPut(doc2)), tokens.get(1)); @@ -234,7 +236,7 @@ public class DocumentV1ApiTest { parameters.getControlHandler().onDone(VisitorControlHandler.CompletionCode.TIMEOUT, "timeout is OK"); }); response = driver.sendRequest("http://localhost/document/v1?cluster=content&bucketSpace=default&wantedDocumentCount=1025&concurrency=123" + - "&selection=all%20the%20things&fieldSet=[id]&timeout=6&tracelevel=9"); + "&selection=all%20the%20things&fieldSet=[id]&timeout=6&tracelevel=9&fromTimestamp=1000000&toTimestamp=2000000"); assertSameJson(""" { "pathId": "/document/v1", @@ -284,6 +286,8 @@ public class DocumentV1ApiTest { assertEquals(6000, parameters.getTimeoutMs()); assertEquals(4, parameters.getSlices()); assertEquals(1, parameters.getSliceId()); + assertEquals(0, parameters.getFromTimestamp()); // not set; 0 is default + assertEquals(0, parameters.getToTimestamp()); // not set; 0 is default // Put some documents in the response parameters.getLocalDataHandler().onMessage(new PutDocumentMessage(new DocumentPut(doc1)), tokens.get(0)); parameters.getLocalDataHandler().onMessage(new PutDocumentMessage(new DocumentPut(doc2)), tokens.get(1)); |