aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-09-14 16:28:50 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-09-15 12:49:45 +0200
commitb5a6ae665afb0c7790ba842f37d6d4b2d886536c (patch)
tree9ff83aa38cd6d7a35464c15ee19bdd66fe320c8b /node-admin
parent9fb7c0d06d3fe37521c910b1ea3121e7682df4c1 (diff)
Add method to get duration from options
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/AbstractProducer.java13
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/PerfReportProducer.java3
2 files changed, 14 insertions, 2 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/AbstractProducer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/AbstractProducer.java
index eabf38d5f64..6bcf41b89c2 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/AbstractProducer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/AbstractProducer.java
@@ -8,6 +8,7 @@ import com.yahoo.vespa.hosted.node.admin.task.util.process.CommandResult;
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
+import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -52,4 +53,16 @@ abstract class AbstractProducer implements ArtifactProducer {
return Integer.parseInt(findPidResult.getOutput());
}
+ protected double duration(NodeAgentContext ctx, ServiceDumpReport.DumpOptions options, double defaultValue) {
+ double duration = options != null && options.duration() != null && options.duration() > 0
+ ? options.duration() : defaultValue;
+ double maxDuration = 300;
+ if (duration > maxDuration) {
+ ctx.log(log, Level.WARNING,
+ String.format("Specified duration %.3fs longer than max allowed (%.3fs)", duration, maxDuration));
+ return maxDuration;
+ }
+ return duration;
+ }
+
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/PerfReportProducer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/PerfReportProducer.java
index 1407153f50f..1370f09acac 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/PerfReportProducer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/PerfReportProducer.java
@@ -24,8 +24,7 @@ class PerfReportProducer extends AbstractProducer {
public void produceArtifact(NodeAgentContext context, String configId, ServiceDumpReport.DumpOptions options,
UnixPath resultDirectoryInNode) throws IOException {
int pid = findVespaServicePid(context, configId);
- int duration = options != null && options.duration() != null && options.duration() > 0
- ? options.duration().intValue() : 30;
+ int duration = (int) duration(context, options, 30.0);
List<String> perfRecordCommand = new ArrayList<>(List.of("perf", "record"));
if (options != null && Boolean.TRUE.equals(options.callGraphRecording())) {
perfRecordCommand.add("-g");