From 1ad9a14658cf874bd5dce6a8219988c3b1fcf56c Mon Sep 17 00:00:00 2001 From: jialinsun Date: Thu, 31 Jul 2014 09:53:55 +0800 Subject: [PATCH] fix cat-agent bug of runing process open too many files --- .../cat/agent/monitor/CommandUtils.java | 31 ++++++++++++------- .../cat/agent/monitor/paas/DataBuilder.java | 6 ++-- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/cat-agent/src/main/java/com/dianping/cat/agent/monitor/CommandUtils.java b/cat-agent/src/main/java/com/dianping/cat/agent/monitor/CommandUtils.java index 3f5a3a10d..173e6d8a3 100644 --- a/cat-agent/src/main/java/com/dianping/cat/agent/monitor/CommandUtils.java +++ b/cat-agent/src/main/java/com/dianping/cat/agent/monitor/CommandUtils.java @@ -1,7 +1,6 @@ package com.dianping.cat.agent.monitor; import java.io.BufferedReader; -import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.List; @@ -12,26 +11,34 @@ public class CommandUtils { public List runShell(String cmd) throws Exception { List result = new LinkedList(); - BufferedReader reader = null; + InputStreamReader sReader = null; + BufferedReader bReader = null; + Process process = null; try { - Process process = Runtime.getRuntime().exec(new String[] { "/bin/sh", "-c", cmd }); - reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + process = Runtime.getRuntime().exec(new String[] { "/bin/sh", "-c", cmd }); + sReader = new InputStreamReader(process.getInputStream()); + bReader = new BufferedReader(sReader); String line = null; - while ((line = reader.readLine()) != null && StringUtils.isNotEmpty(line)) { + while ((line = bReader.readLine()) != null && StringUtils.isNotEmpty(line)) { result.add(line); } - } catch (Exception e) { - throw new Exception(e); + throw e; } finally { - if (reader != null) { - try { - reader.close(); - } catch (IOException e) { - throw new Exception(e); + try { + if (sReader != null) { + sReader.close(); + } + if (bReader != null) { + bReader.close(); + } + if (process != null) { + process.destroy(); } + } catch (Exception e) { + throw e; } } return result; diff --git a/cat-agent/src/main/java/com/dianping/cat/agent/monitor/paas/DataBuilder.java b/cat-agent/src/main/java/com/dianping/cat/agent/monitor/paas/DataBuilder.java index 14546274f..a4264e3d1 100644 --- a/cat-agent/src/main/java/com/dianping/cat/agent/monitor/paas/DataBuilder.java +++ b/cat-agent/src/main/java/com/dianping/cat/agent/monitor/paas/DataBuilder.java @@ -152,11 +152,11 @@ public class DataBuilder { try { outputs = m_commandUtils.runShell(cmd); + + return convert2DataEntities(outputs); } catch (Exception e) { Cat.logError(e); } - List dataEntities = convert2DataEntities(outputs); - - return dataEntities; + return new ArrayList(); } } -- GitLab