View | Details | Raw Unified | Return to bug 54945
Collapse All | Expand All

(-)src/core/org/apache/jmeter/JMeter.java (+23 lines)
Lines 821-826 Link Here
821
                log.info("Remote engines have been started");
821
                log.info("Remote engines have been started");
822
            }
822
            }
823
            startUdpDdaemon(engines);
823
            startUdpDdaemon(engines);
824
            Runtime.getRuntime().addShutdownHook(new Thread(new JMeterShutdownHook(engines)));
824
        } catch (Exception e) {
825
        } catch (Exception e) {
825
            System.out.println("Error in NonGUIDriver " + e.toString());
826
            System.out.println("Error in NonGUIDriver " + e.toString());
826
            log.error("Error in NonGUIDriver", e);
827
            log.error("Error in NonGUIDriver", e);
Lines 828-833 Link Here
828
            JOrphanUtils.closeQuietly(reader);
829
            JOrphanUtils.closeQuietly(reader);
829
        }
830
        }
830
    }
831
    }
832
    
833
    private static final class JMeterShutdownHook implements Runnable {
834
        private static final Logger log = LoggingManager.getLoggerFor(JMeterShutdownHook.class.getName());
835
        private List<JMeterEngine> engines;
836
837
        public JMeterShutdownHook(List<JMeterEngine> engines) {
838
            this.engines = engines;
839
        }
840
841
        @Override
842
        public void run() {
843
            log.warn("Shutdown hook started");
844
            for(JMeterEngine engine : engines) {
845
                if(engine.isActive()) {
846
                    log.warn("Shutdown hook is stopping engine:"+engine);
847
                    engine.stopTest(true);
848
                    log.warn("Shutdown hook has stopped engine:"+engine);
849
                }
850
            }
851
            log.warn("Shutdown hook ended");
852
        }     
853
    }
831
854
832
    /**
855
    /**
833
     * Refactored from AbstractAction.java
856
     * Refactored from AbstractAction.java
(-)src/core/org/apache/jmeter/engine/StandardJMeterEngine.java (+5 lines)
Lines 258-263 Link Here
258
        shutdown = !now;
258
        shutdown = !now;
259
        Thread stopThread = new Thread(new StopTest(now));
259
        Thread stopThread = new Thread(new StopTest(now));
260
        stopThread.start();
260
        stopThread.start();
261
        try {
262
            stopThread.join();
263
        } catch (InterruptedException e) {
264
            log.warn("Stop thread was interrupted", e);
265
        }
261
    }
266
    }
262
267
263
    private class StopTest implements Runnable {
268
    private class StopTest implements Runnable {

Return to bug 54945