diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-14 16:28:50 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-15 12:49:45 +0200 |
commit | b5a6ae665afb0c7790ba842f37d6d4b2d886536c (patch) | |
tree | 9ff83aa38cd6d7a35464c15ee19bdd66fe320c8b /node-admin | |
parent | 9fb7c0d06d3fe37521c910b1ea3121e7682df4c1 (diff) |
Add method to get duration from options
Diffstat (limited to 'node-admin')
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"); |