浏览代码

AMBARI-19153. "Create Principals" fails intermittently (dlysnichenko)

Lisnichenko Dmitro 8 年之前
父节点
当前提交
51914fd935
共有 1 个文件被更改,包括 16 次插入12 次删除
  1. 16 12
      ambari-server/src/main/java/org/apache/ambari/server/utils/ShellCommandUtil.java

+ 16 - 12
ambari-server/src/main/java/org/apache/ambari/server/utils/ShellCommandUtil.java

@@ -436,23 +436,27 @@ public class ShellCommandUtil {
 
       interactiveHandler.start();
 
-      while (!interactiveHandler.done()) {
-        StringBuilder query = new StringBuilder();
+      try {
+        while (!interactiveHandler.done()) {
+          StringBuilder query = new StringBuilder();
 
-        while (reader.ready()) {
-          query.append((char) reader.read());
-        }
+          while (reader.ready()) {
+            query.append((char) reader.read());
+          }
 
-        String response = interactiveHandler.getResponse(query.toString());
+          String response = interactiveHandler.getResponse(query.toString());
 
-        if (response != null) {
-          writer.write(response);
-          writer.newLine();
-          writer.flush();
+            if (response != null) {
+              writer.write(response);
+              writer.newLine();
+              writer.flush();
+            }
         }
+      } catch (IOException ex){
+        // ignore exception as command possibly can be finished before writer.flush() or writer.write() called
+      } finally {
+        writer.close();
       }
-
-      writer.close();
     }
 
     //TODO: not sure whether output buffering will work properly