chengshiwen commented on a change in pull request #5074:
URL: 
https://github.com/apache/incubator-dolphinscheduler/pull/5074#discussion_r604180926



##########
File path: 
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/AbstractCommandExecutor.java
##########
@@ -349,28 +352,40 @@ private void clear() {
      */
     private void parseProcessOutput(Process process) {
         String threadLoggerInfoName = 
String.format(LoggerUtils.TASK_LOGGER_THREAD_NAME + "-%s", 
taskExecutionContext.getTaskAppId());
-        ExecutorService parseProcessOutputExecutorService = 
ThreadUtils.newDaemonSingleThreadExecutor(threadLoggerInfoName);
-        parseProcessOutputExecutorService.submit(new Runnable(){
-            @Override
-            public void run() {
-                BufferedReader inReader = null;
-
-                try {
-                    inReader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
-                    String line;
-
-                    long lastFlushTime = System.currentTimeMillis();
-
-                    while ((line = inReader.readLine()) != null) {
+        ExecutorService getOutputLogService = 
ThreadUtils.newDaemonSingleThreadExecutor(threadLoggerInfoName + "-" + 
"getOutputLogService");
+        getOutputLogService.submit(() -> {
+            BufferedReader inReader = null;
+            try {
+                inReader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
+                String line;
+                logBuffer.add("welcome to use bigdata scheduling system...");
+                while ((line = inReader.readLine()) != null) {
                         logBuffer.add(line);

Review comment:
       The indent problem

##########
File path: 
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/AbstractCommandExecutor.java
##########
@@ -349,28 +352,40 @@ private void clear() {
      */
     private void parseProcessOutput(Process process) {
         String threadLoggerInfoName = 
String.format(LoggerUtils.TASK_LOGGER_THREAD_NAME + "-%s", 
taskExecutionContext.getTaskAppId());
-        ExecutorService parseProcessOutputExecutorService = 
ThreadUtils.newDaemonSingleThreadExecutor(threadLoggerInfoName);
-        parseProcessOutputExecutorService.submit(new Runnable(){
-            @Override
-            public void run() {
-                BufferedReader inReader = null;
-
-                try {
-                    inReader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
-                    String line;
-
-                    long lastFlushTime = System.currentTimeMillis();
-
-                    while ((line = inReader.readLine()) != null) {
+        ExecutorService getOutputLogService = 
ThreadUtils.newDaemonSingleThreadExecutor(threadLoggerInfoName + "-" + 
"getOutputLogService");
+        getOutputLogService.submit(() -> {
+            BufferedReader inReader = null;
+            try {
+                inReader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
+                String line;
+                logBuffer.add("welcome to use bigdata scheduling system...");

Review comment:
       I think this line should be removed

##########
File path: 
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/AbstractCommandExecutor.java
##########
@@ -349,28 +352,40 @@ private void clear() {
      */
     private void parseProcessOutput(Process process) {
         String threadLoggerInfoName = 
String.format(LoggerUtils.TASK_LOGGER_THREAD_NAME + "-%s", 
taskExecutionContext.getTaskAppId());
-        ExecutorService parseProcessOutputExecutorService = 
ThreadUtils.newDaemonSingleThreadExecutor(threadLoggerInfoName);
-        parseProcessOutputExecutorService.submit(new Runnable(){
-            @Override
-            public void run() {
-                BufferedReader inReader = null;
-
-                try {
-                    inReader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
-                    String line;
-
-                    long lastFlushTime = System.currentTimeMillis();
-
-                    while ((line = inReader.readLine()) != null) {
+        ExecutorService getOutputLogService = 
ThreadUtils.newDaemonSingleThreadExecutor(threadLoggerInfoName + "-" + 
"getOutputLogService");
+        getOutputLogService.submit(() -> {
+            BufferedReader inReader = null;
+            try {
+                inReader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
+                String line;
+                logBuffer.add("welcome to use bigdata scheduling system...");
+                while ((line = inReader.readLine()) != null) {
                         logBuffer.add(line);
+                }
+            } catch (Exception e) {
+                logger.error(e.getMessage(), e);
+            } finally {
+                logOutputIsSuccess = true;
+                close(inReader);
+            }
+        });
+        getOutputLogService.shutdown();
+        ExecutorService parseProcessOutputExecutorService = 
ThreadUtils.newDaemonSingleThreadExecutor(threadLoggerInfoName);
+        parseProcessOutputExecutorService.submit(() -> {
+            try {
+                long lastFlushTime = System.currentTimeMillis();
+                while (logBuffer.size() > 0 || !logOutputIsSuccess) {
+                    if (logBuffer.size() > 0) {
                         lastFlushTime = flush(lastFlushTime);
+                    } else {
+                        Thread.sleep(Constants.DEFAULT_LOG_FLUSH_INTERVAL);
+

Review comment:
       The empty line




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to