Github user HeartSaVioR commented on a diff in the pull request:

    https://github.com/apache/storm/pull/286#discussion_r18741401
  
    --- Diff: storm-core/src/jvm/backtype/storm/spout/ShellSpout.java ---
    @@ -189,9 +205,52 @@ private void handleLog(ShellMsg shellMsg) {
     
         @Override
         public void activate() {
    +        LOG.info("Start checking heartbeat...");
    +        // prevent timer to check heartbeat based on last thing before 
activate
    +        setHeartbeat();
    +        heartBeatTimer.scheduleAtFixedRate(new 
SpoutHeartbeatTimerTask(this), 1000, 1 * 1000);
         }
     
         @Override
         public void deactivate() {
    +        heartBeatTimer.cancel();
    +    }
    +
    +    private void setHeartbeat() {
    +        lastHeartbeatTimestamp.set(System.currentTimeMillis());
    +    }
    +
    +    private long getLastHeartbeat() {
    +        return lastHeartbeatTimestamp.get();
    +    }
    +
    +    private void die(Throwable exception) {
    +        heartBeatTimer.cancel();
    +
    +        LOG.error("Halting process: ShellSpout died.", exception);
    +        _collector.reportError(exception);
    +        System.exit(11);
    --- End diff --
    
    @itaifrenkel I agree that we should process.destroy() before terminating 
itself. 
    (It has been maintained by JDK and it's implemented with JNI, so it would 
be OS specific.)
    I also think storm project tries to support Windows, signal handle to 
SIGTERM maybe not a solution.
    I'll change it to call process.destroy() first.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to