Author: challngr
Date: Thu Jul 11 13:52:08 2013
New Revision: 1502227

URL: http://svn.apache.org/r1502227
Log:
UIMA-3070 Write service startup failures to user log.

Modified:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java?rev=1502227&r1=1502226&r2=1502227&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
 Thu Jul 11 13:52:08 2013
@@ -26,7 +26,9 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -1226,6 +1228,76 @@ public class ServiceSet
 //        return answer;
 //    }
 
+
+    void log_text(String logdir, String text)
+    {
+       String methodName = "log_text";
+        String[] args = {
+            System.getProperty("ducc.agent.launcher.ducc_spawn_path"),
+            "-u",
+            user,
+            "-f",
+            logdir + "/service.err.log",
+            "-a",
+            "--",
+            text
+        };
+
+        ProcessBuilder pb = new ProcessBuilder(args);
+        try {
+            Process p = pb.start();
+            int rc = p.waitFor();
+            logger.debug(methodName, null, "Log start errors returns with rc", 
rc);
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (InterruptedException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+
+    }
+
+    void log_errors(List<String> outlines, List<String> errlines)
+    {
+
+        Date date= new Date();
+        String ts = (new Timestamp(date.getTime())).toString();
+
+        String logdir = job_props.getProperty(UiOption.LogDirectory.pname());
+
+        StringBuffer buf = new StringBuffer();
+
+        // header
+        buf.append("==========");
+        buf.append(" Instance Startup Failure (stdout) ");
+        buf.append(ts);
+        buf.append(" ========================================\n");
+
+        // stdout
+        for ( String s : outlines ) {
+            buf.append(s);
+            buf.append("\n");
+        }
+        log_text(logdir, buf.toString());
+        
+        buf = new StringBuffer();
+        buf.append("----------");
+        buf.append("(stderr) ");
+        buf.append(ts);
+        buf.append(" ----------------------------------------\n");
+        for ( String s : errlines ) {
+            buf.append(s);
+            buf.append("\n");
+        }
+        buf.append("==========");
+        buf.append(" End Startup Failure ");
+        buf.append(ts);
+        buf.append(" ========================================\n");
+        log_text(logdir, buf.toString());
+    }
+
+
     /**
      * This assumes the caller has already verified that I'm a registered 
service.
      */
@@ -1352,6 +1424,7 @@ public class ServiceSet
             logger.warn(methodName, null, "Request to start service " + 
id.toString() + " failed.");
             meta_props.put("submit_error", submit_buffer.toString());
             setAutostart(false);
+            log_errors(stdout_lines, stderr_lines);
         } else {
             meta_props.remove("submit_error");
             setServiceState(ServiceState.Initializing);


Reply via email to