You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@storm.apache.org by "Jungtaek Lim (JIRA)" <ji...@apache.org> on 2016/11/24 15:21:58 UTC

[jira] [Resolved] (STORM-2213) ShellSpout has race condition when ShellSpout is being inactive longer than heartbeat timeout

     [ https://issues.apache.org/jira/browse/STORM-2213?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jungtaek Lim resolved STORM-2213.
---------------------------------
       Resolution: Fixed
    Fix Version/s: 1.0.3
                   1.1.0
                   2.0.0

Merged to master, 1.x, 1.0.x branches.

> ShellSpout has race condition when ShellSpout is being inactive longer than heartbeat timeout  
> -----------------------------------------------------------------------------------------------
>
>                 Key: STORM-2213
>                 URL: https://issues.apache.org/jira/browse/STORM-2213
>             Project: Apache Storm
>          Issue Type: Bug
>          Components: storm-multilang
>            Reporter: Jungtaek Lim
>            Assignee: Jungtaek Lim
>             Fix For: 2.0.0, 1.1.0, 1.0.3
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> I brought additional guard logic for long idle ShellSpout (STORM-1928), which resolves the issue, but I found race condition from new logic.
> Scenario:
> 1. lastHeartbeat is not updated more than timeout because of inactivity
> 2. querySubprocess() is called
> 3. waitingOnSubprocess is set to true
> 4. HeartbeatTimerTask.run() triggers faster than updating heartbeat (getting message from subprocess)
> Simplest approach is updating heartbeat before set waitingOnSubprocess to true. Last heartbeat time is no longer only from subprocess, but it doesn't harm.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)