aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-09-01 17:31:46 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-09-01 18:23:26 +0200
commit0f26d36c92a882827e3f78287428ee1ade092df0 (patch)
tree451799aa57e0001b1e9e75554073a1ad165e03bb /node-admin
parentea547bdcc12a9e499be4bc39e7aa0c1b7b42175d (diff)
Add trailing '/' to ensure URI paths are resolved correctly
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java15
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) {