From 22ab8e771d855ca5cd24bac9a83d5fa072bae7d3 Mon Sep 17 00:00:00 2001 From: Jan Lolling Date: Wed, 19 Jun 2024 12:22:54 +0200 Subject: [PATCH] Solved problem with empty lines and wrong pattern --- pom.xml | 2 +- .../jobinstance/manage/JobInstanceHelper.java | 6 +++--- .../talendcomp/jobinstance/process/ProcessHelper.java | 11 +++++++---- .../jobinstance/test/TestProcessHelper.java | 4 ++-- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 6d14805..eb68365 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.cimt.talendcomp cimt-talendcomp-jobinstance - 8.10 + 8.11 cimt AG diff --git a/src/main/java/de/cimt/talendcomp/jobinstance/manage/JobInstanceHelper.java b/src/main/java/de/cimt/talendcomp/jobinstance/manage/JobInstanceHelper.java index b291af9..9f3d794 100644 --- a/src/main/java/de/cimt/talendcomp/jobinstance/manage/JobInstanceHelper.java +++ b/src/main/java/de/cimt/talendcomp/jobinstance/manage/JobInstanceHelper.java @@ -1,5 +1,5 @@ /** - * Copyright 2020 Jan Lolling jan.lolling@gmail.com + * Copyright 2024 Jan Lolling jan.lolling@gmail.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -1544,8 +1544,8 @@ public void setProcessInstanceId(Long processInstanceId) { private int countBrokenInstances = 0; private Date lastSystemStart = null; - private String unixCommand = "ps -eo pid"; - private String unixPidPattern = "[0-9]{1,8}"; + private String unixCommand = "ps -eo pid="; + private String unixPidPattern = "([0-9]{1,8})"; private String windowsCommand = "tasklist /fo list"; private String windowsPidPattern = "PID[:\\s]*([0-9]{1,6})"; diff --git a/src/main/java/de/cimt/talendcomp/jobinstance/process/ProcessHelper.java b/src/main/java/de/cimt/talendcomp/jobinstance/process/ProcessHelper.java index f8bf53b..e5be2db 100644 --- a/src/main/java/de/cimt/talendcomp/jobinstance/process/ProcessHelper.java +++ b/src/main/java/de/cimt/talendcomp/jobinstance/process/ProcessHelper.java @@ -30,10 +30,10 @@ public class ProcessHelper { private static Logger LOG = LogManager.getLogger(ProcessHelper.class); private boolean isUnix = false; private boolean isWindows = false; - private String unixCommand = "ps -eo pid"; - private String unixPidPattern = "([0-9]{2,9})"; + private String unixCommand = "ps -eo pid="; + private String unixPidPattern = "([0-9]{1,9})"; private String windowsCommand = "tasklist /fo list"; - private String windowsPidPattern = "PID[:\\s]*([0-9]{2,6})"; + private String windowsPidPattern = "PID[:\\s]*([0-9]{1,9})"; public ProcessHelper() {} @@ -106,10 +106,13 @@ public List retrieveProcessList(String command, String patternStr) thro line = line.trim(); psCommandResponse.append(line); psCommandResponse.append("\n"); + if (line.isEmpty()) { + continue; + } Matcher m = patternPid.matcher(line); if (m.find()) { if (m.groupCount() == 0) { - throw new Exception("The regex to find the PIDs must have at least one group (only the first group will be used). regex: " + patternStr); + throw new Exception("The regex to find the PIDs must have at least one group (only the first group will be used). regex: " + patternStr + " command: " + command + " current line: " + line); } if (m.start() < m.end()) { String pidStr = m.group(1); diff --git a/src/test/java/de/cimt/talendcomp/jobinstance/test/TestProcessHelper.java b/src/test/java/de/cimt/talendcomp/jobinstance/test/TestProcessHelper.java index 57efe39..ccd379d 100644 --- a/src/test/java/de/cimt/talendcomp/jobinstance/test/TestProcessHelper.java +++ b/src/test/java/de/cimt/talendcomp/jobinstance/test/TestProcessHelper.java @@ -24,10 +24,10 @@ public void testListProcessesUnixAltCommand() throws Exception { ProcessHelper ph = new ProcessHelper(); ph.init(); ph.setUnixCommand("ps -eo pid"); - ph.setUnixPidPattern("([0-9]{2,9})"); + ph.setUnixPidPattern("([0-9]{1,9})"); List pidList = ph.retrieveProcessList(); System.out.println("Found: " + pidList.size() + " processes"); - assertTrue("Empty list", pidList.size() == 1); + assertTrue("Empty list", pidList.size() > 0); } @Test