diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-01 17:31:46 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-01 18:23:26 +0200 |
commit | 0f26d36c92a882827e3f78287428ee1ade092df0 (patch) | |
tree | 451799aa57e0001b1e9e75554073a1ad165e03bb /node-admin | |
parent | ea547bdcc12a9e499be4bc39e7aa0c1b7b42175d (diff) |
Add trailing '/' to ensure URI paths are resolved correctly
Diffstat (limited to 'node-admin')
2 files changed, 10 insertions, 7 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java index 6fe9641a81a..a0232e11d41 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java @@ -174,7 +174,7 @@ public class VespaServiceDumperImpl implements VespaServiceDumper { private static URI serviceDumpDestination(NodeSpec spec, String dumpId) { URI archiveUri = spec.archiveUri().get(); - String targetDirectory = "service-dump/" + dumpId; + String targetDirectory = "service-dump/" + dumpId + "/"; return archiveUri.resolve(targetDirectory); } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java index 2bd6844cb4a..397305eae70 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java @@ -77,12 +77,15 @@ class VespaServiceDumperImplTest { // Verify String expectedJson = "{\"createdMillis\":1600000000000,\"startedAt\":1600001000000,\"completedAt\":1600001000000," + - "\"location\":\"s3://uri-1/tenant1/service-dump/default-container-1-1600000000000\"," + + "\"location\":\"s3://uri-1/tenant1/service-dump/default-container-1-1600000000000/\"," + "\"configId\":\"default/container.1\"}"; assertReportEquals(nodeRepository, expectedJson); verify(operations).executeCommandInContainerAsRoot( context, "/opt/vespa/bin/vespa-jvm-dumper", "default/container.1", "/opt/vespa/tmp/vespa-service-dump"); - assertSyncedFiles(context, syncClient, List.of("heap.bin", "jstack")); + List<URI> expectedUris = List.of( + URI.create("s3://uri-1/tenant1/service-dump/default-container-1-1600000000000/heap.bin.zst"), + URI.create("s3://uri-1/tenant1/service-dump/default-container-1-1600000000000/jstack")); + assertSyncedFiles(context, syncClient, expectedUris); } @@ -94,15 +97,15 @@ class VespaServiceDumperImplTest { } @SuppressWarnings("unchecked") - private static void assertSyncedFiles(NodeAgentContextImpl context, SyncClient client, List<String> expectedFilenames) { + private static void assertSyncedFiles(NodeAgentContextImpl context, SyncClient client, List<URI> expectedDestinations) { ArgumentCaptor<List<SyncFileInfo>> filesCaptor = ArgumentCaptor.forClass(List.class); verify(client).sync(eq(context), filesCaptor.capture(), eq(Integer.MAX_VALUE)); List<SyncFileInfo> actualFiles = filesCaptor.getValue(); - List<String> actualFilenames = actualFiles.stream() - .map(f -> f.source().getFileName().toString()) + List<URI> actualFilenames = actualFiles.stream() + .map(SyncFileInfo::destination) .sorted() .collect(Collectors.toList()); - assertEquals(expectedFilenames, actualFilenames); + assertEquals(expectedDestinations, actualFilenames); } private static ContainerOperations createContainerMock(Path tmpDirectory) { |