- Webapp that runs process won't complete
- @Entity
- public class Job implements Runnable {
- @Id @GeneratedValue
- private Long id;
- //getters and setters
- @Override
- public void run() {
- Process p = null;
- try {
- BufferedWriter bw = new BufferedWriter(new FileWriter("/opt/condor/bin/datafile"));
- bw.write(this.getName());
- bw.close();
- p = new ProcessBuilder("/opt/condor/bin/scripts/create-filter.sh").start();
- jobHelper(p);
- List<String> dates = datesBetween();
- status = "Running Master";
- for(String temp : dates) {
- String[] splitDate = temp.split("-");
- String tmpYear = splitDate[0];
- String tmpMonth = splitDate[1];
- String tmpDay = splitDate[2];
- log.info("Running Master script: master.sh " + this.getCustomer() + ", " + this.getProject() + ", " + tmpYear + ", " + tmpMonth + ", " + tmpDay);
- p = new ProcessBuilder("/opt/condor/bin/scripts/master.sh", this.getCustomer(), this.getProject(), tmpYear, tmpMonth, tmpDay).start();
- log.info("Entering job helper");
- jobHelper(p);
- log.info("exited job helper");
- }
- status = "Finished Master";
- log.info("Finished Master");
- } catch (IOException ioe) {
- log.error("IO Error: " , ioe);
- ioe.printStackTrace();
- }
- log.info("Done running script");
- endTime = Long.toString(System.currentTimeMillis());
- status = "Ended";
- JobManager.FinishJob(this);
- }
- private boolean jobHelper(Process p) {
- log.info("inside job helper");
- BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
- String line;
- try {
- while ((line = br.readLine()) != null) {
- log.info(line);
- if(line.contains("Uh oh!"))
- return true;
- }
- boolean running = true;
- while(running) {
- log.info("waiting...");
- p.waitFor();
- log.info("done waiting");
- running = false;
- }
- } catch (IOException e) {
- log.error("IO Error: " , e);
- e.printStackTrace();
- } catch (InterruptedException e) {
- log.error("Interrupted Exception: ", e);
- e.printStackTrace();
- p.destroy();
- }
- return false;
- }
- }