summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahooinc.com>2022-07-08 13:19:47 +0200
committerBjørn Christian Seime <bjorncs@yahooinc.com>2022-07-08 13:19:47 +0200
commitf0b619abdb541a6bc448ec43406482b5b78c93b5 (patch)
treef5d85d69a61a655d30f7c871722ee75f4412ba80 /node-admin
parent97ff1f5f1e30dadb30b5e6631cd21dba9c2c361f (diff)
Try find pid for 'qrserver' if 'container' fails
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java21
1 files changed, 18 insertions, 3 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 93195a3c340..b526c573c05 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
@@ -194,13 +194,28 @@ public class VespaServiceDumperImpl implements VespaServiceDumper {
@Override
public int servicePid() {
if (pid == -1) {
- ContainerPath findPidBinary = nodeAgentCtx.paths().underVespaHome("libexec/vespa/find-pid");
- CommandResult findPidResult = executeCommandInNode(List.of(findPidBinary.pathInContainer(), serviceId()), true);
- this.pid = Integer.parseInt(findPidResult.getOutput());
+ try {
+ pid = findServicePid(serviceId());
+ } catch (RuntimeException e1) {
+ try {
+ // Workaround for Vespa 7 container clusters having service name 'qrserver'
+ if (serviceId().equals("container")) pid = findServicePid("qrserver");
+ else throw e1;
+ } catch (RuntimeException e2) {
+ e1.addSuppressed(e2);
+ throw e1;
+ }
+ }
}
return pid;
}
+ private int findServicePid(String serviceId) {
+ ContainerPath findPidBinary = nodeAgentCtx.paths().underVespaHome("libexec/vespa/find-pid");
+ CommandResult findPidResult = executeCommandInNode(List.of(findPidBinary.pathInContainer(), serviceId), true);
+ return Integer.parseInt(findPidResult.getOutput());
+ }
+
@Override
public CommandResult executeCommandInNode(List<String> command, boolean logOutput) {
CommandResult result = container.executeCommandInContainer(nodeAgentCtx, nodeAgentCtx.users().vespa(), command.toArray(new String[0]));