diff options
author | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2022-07-08 13:19:47 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2022-07-08 13:19:47 +0200 |
commit | f0b619abdb541a6bc448ec43406482b5b78c93b5 (patch) | |
tree | f5d85d69a61a655d30f7c871722ee75f4412ba80 /node-admin/src | |
parent | 97ff1f5f1e30dadb30b5e6631cd21dba9c2c361f (diff) |
Try find pid for 'qrserver' if 'container' fails
Diffstat (limited to 'node-admin/src')
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java | 21 |
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])); |