Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 5th, 2012  |  syntax: None  |  size: 2.42 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Webapp that runs process won't complete
  2. @Entity
  3. public class Job implements Runnable {
  4.  
  5.     @Id @GeneratedValue
  6.     private Long id;
  7.  
  8.     //getters and setters
  9.  
  10.     @Override
  11.     public void run() {
  12.          Process p = null;
  13.  
  14.         try {
  15.             BufferedWriter bw = new BufferedWriter(new FileWriter("/opt/condor/bin/datafile"));
  16.             bw.write(this.getName());
  17.             bw.close();
  18.  
  19.             p = new ProcessBuilder("/opt/condor/bin/scripts/create-filter.sh").start();
  20.             jobHelper(p);
  21.  
  22.             List<String> dates = datesBetween();
  23.             status = "Running Master";
  24.  
  25.             for(String temp : dates) {
  26.                 String[] splitDate = temp.split("-");
  27.                 String tmpYear = splitDate[0];
  28.                 String tmpMonth = splitDate[1];
  29.                 String tmpDay = splitDate[2];
  30.  
  31.                 log.info("Running Master script: master.sh " + this.getCustomer() + ", " + this.getProject() + ", " + tmpYear + ", " + tmpMonth + ", " + tmpDay);
  32.  
  33.                 p = new ProcessBuilder("/opt/condor/bin/scripts/master.sh", this.getCustomer(), this.getProject(), tmpYear, tmpMonth, tmpDay).start();
  34.                 log.info("Entering job helper");
  35.                 jobHelper(p);
  36.                 log.info("exited job helper");
  37.             }
  38.  
  39.         status = "Finished Master";
  40.         log.info("Finished Master");
  41.     } catch (IOException ioe) {
  42.         log.error("IO Error: " , ioe);
  43.         ioe.printStackTrace();
  44.     }
  45.  
  46.     log.info("Done running script");
  47.  
  48.     endTime = Long.toString(System.currentTimeMillis());
  49.  
  50.     status = "Ended";
  51.  
  52.     JobManager.FinishJob(this);
  53.     }
  54.  
  55. private boolean jobHelper(Process p) {
  56.                 log.info("inside job helper");
  57.     BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
  58.     String line;
  59.  
  60.     try {
  61.         while ((line = br.readLine()) != null) {
  62.             log.info(line);
  63.  
  64.             if(line.contains("Uh oh!"))
  65.                 return true;
  66.         }
  67.  
  68.     boolean running = true;
  69.     while(running) {
  70.                           log.info("waiting...");
  71.         p.waitFor();
  72.                           log.info("done waiting");
  73.         running = false;
  74.     }      
  75.  
  76.     } catch (IOException e) {
  77.         log.error("IO Error: " , e);
  78.         e.printStackTrace();
  79.     } catch (InterruptedException e) {
  80.         log.error("Interrupted Exception: ", e);
  81.         e.printStackTrace();
  82.         p.destroy();
  83.     }
  84.  
  85.     return false;
  86. }
  87.  
  88. }