Author: degenaro Date: Tue Jun 13 13:04:38 2017 New Revision: 1798596 URL: http://svn.apache.org/viewvc?rev=1798596&view=rev Log: UIMA-5451 DUCC WebServer (WS) ducc_disk_info runs too often
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/helper/DiagnosticsHelper.java uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/helper/DiagnosticsHelper.java URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/helper/DiagnosticsHelper.java?rev=1798596&r1=1798595&r2=1798596&view=diff ============================================================================== --- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/helper/DiagnosticsHelper.java (original) +++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/helper/DiagnosticsHelper.java Tue Jun 13 13:04:38 2017 @@ -22,64 +22,85 @@ import java.io.BufferedReader; import java.io.File; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.concurrent.atomic.AtomicReference; import org.apache.uima.ducc.common.utils.DuccLogger; import org.apache.uima.ducc.common.utils.id.DuccId; -public class DiagnosticsHelper { +public class DiagnosticsHelper extends Thread { private static DuccLogger duccLogger = DuccLogger.getLogger(DiagnosticsHelper .class.getName(), null); - private static DuccId duccId = null; - - private static String disk_info = null; + private static DuccId jobid = null; private static File devNull = new File("/dev/null"); + private static AtomicReference<DiagnosticsHelper> instance = new AtomicReference<DiagnosticsHelper>(); + private static AtomicReference<String> disk_info = new AtomicReference<String>(); + + private static long interval = 1000*60*60; // 60 minutes between disk info calculations + + static { + DiagnosticsHelper expect = null; + DiagnosticsHelper update = new DiagnosticsHelper(); + instance.compareAndSet(expect,update); + instance.get().run(); + } + private static void refresh_ducc_disk_info() { String location = "refresh_ducc_disk_info"; - if(disk_info == null) { - disk_info = ""; - StringBuffer sb = new StringBuffer(); - try { - String path = System.getProperty("DUCC_HOME") - +File.separator - +"admin" - +File.separator - +"ducc_disk_info" - ; - String[] command = { path }; - ProcessBuilder pb = new ProcessBuilder( command ); - pb = pb.redirectError(devNull); - Process process = pb.start(); - InputStream is = process.getInputStream(); - InputStreamReader isr = new InputStreamReader(is); - BufferedReader br = new BufferedReader(isr); - String line; - while ((line = br.readLine()) != null) { - sb.append(line); - sb.append("\n"); - } - disk_info = sb.toString(); - duccLogger.debug(location, duccId, disk_info); - int exitValue = process.waitFor(); - duccLogger.debug(location, duccId, exitValue); - } - catch(Exception e) { - duccLogger.error(location, duccId, e); - } + StringBuffer sb = new StringBuffer(); + duccLogger.debug(location, jobid, "time start"); + try { + String path = System.getProperty("DUCC_HOME") + +File.separator + +"admin" + +File.separator + +"ducc_disk_info" + ; + String[] command = { path }; + ProcessBuilder pb = new ProcessBuilder( command ); + pb = pb.redirectError(devNull); + Process process = pb.start(); + InputStream is = process.getInputStream(); + InputStreamReader isr = new InputStreamReader(is); + BufferedReader br = new BufferedReader(isr); + String line; + while ((line = br.readLine()) != null) { + sb.append(line); + sb.append("\n"); + } + disk_info.set(sb.toString()); + duccLogger.info(location, jobid, disk_info); + int exitValue = process.waitFor(); + duccLogger.debug(location, jobid, "rc="+exitValue); } - } - - public static void reset_ducc_disk_info() { - synchronized(DiagnosticsHelper.class) { - disk_info = null; + catch(Exception e) { + duccLogger.error(location, jobid, e); } + duccLogger.debug(location, jobid, "time end"); } public static String get_ducc_disk_info() { - synchronized(DiagnosticsHelper.class) { - refresh_ducc_disk_info(); - return disk_info; + return disk_info.get(); + } + + public static boolean isNotKilled() { + return true; + } + + @Override + public void run() { + String location = "run"; + while (isNotKilled()) { + try { + refresh_ducc_disk_info(); + duccLogger.debug(location, jobid, "sleep "+interval+" begin"); + Thread.sleep(interval); + duccLogger.debug(location, jobid, "sleep "+interval+" end"); + } + catch(Exception e) { + duccLogger.error(location, jobid, e); + } } } } Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1798596&r1=1798595&r2=1798596&view=diff ============================================================================== --- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original) +++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Tue Jun 13 13:04:38 2017 @@ -3828,9 +3828,6 @@ public class DuccHandler extends DuccAbs addDownDaemon(sb, daemonName.name()); additionalInfo = DiagnosticsHelper.get_ducc_disk_info(); } - else { - DiagnosticsHelper.reset_ducc_disk_info(); - } break; case Broker: if(!brokerHelper.isAlive()) {