[
https://issues.apache.org/jira/browse/STORM-1837?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stig Rohde Døssing updated STORM-1837:
--------------------------------------
Description:
Since https://github.com/apache/storm/pull/810 it is no longer possible to call
Testing.completeTopology when time is not simulating, because a call to
advance-cluster-time is made from the function, which calls Time/advanceTime.
advance-cluster-time should only be called if time is simulating.
Since https://github.com/apache/storm/pull/830 a local cluster run without time
simulation may lose messages. When a worker emits messages for a worker that
hasn't started yet, the message is lost. This can happen because spouts may
start emitting before all workers have started, when time simulation is
disabled. Local clusters usually run without message timeouts, so this will
make tests relying on Testing.withLocalCluster flaky.
The problem is that there are no longer any queues to store messages for
workers that haven't started yet. See
https://github.com/apache/storm/pull/830/files#diff-c6ff4208ef84c7a5a1a6b8b6bd1f7d19R104.
A queue should be added for messages for workers that haven't registered a
receive callback yet.
was:
Since https://github.com/apache/storm/pull/810 it is no longer possible to call
Testing.completeTopology when time is not simulating, because a call to
advance-cluster-time is made from the function, which calls Time/advanceTime.
advance-cluster-time should only be called if time is simulating.
Since https://github.com/apache/storm/pull/830 a local cluster run without time
simulation may lose messages. When a worker emits messages for a worker that
hasn't started yet, the message is lost. This can happen because spouts may
start emitting before all workers have started, when time simulation is
disabled.
The problem is that there are no longer any queues to store messages for
workers that haven't started yet. See
https://github.com/apache/storm/pull/830/files#diff-c6ff4208ef84c7a5a1a6b8b6bd1f7d19R104.
Local clusters usually run without message timeouts, so this isn't ideal for
testing. A queue should be added for messages for workers that haven't
registered a receive callback yet.
> Running local clusters without simulating time breaks
> Testing.completeTopology, and may cause message loss
> ----------------------------------------------------------------------------------------------------------
>
> Key: STORM-1837
> URL: https://issues.apache.org/jira/browse/STORM-1837
> Project: Apache Storm
> Issue Type: Bug
> Affects Versions: 1.0.0, 2.0.0, 1.0.1
> Reporter: Stig Rohde Døssing
> Priority: Minor
>
> Since https://github.com/apache/storm/pull/810 it is no longer possible to
> call Testing.completeTopology when time is not simulating, because a call to
> advance-cluster-time is made from the function, which calls Time/advanceTime.
> advance-cluster-time should only be called if time is simulating.
> Since https://github.com/apache/storm/pull/830 a local cluster run without
> time simulation may lose messages. When a worker emits messages for a worker
> that hasn't started yet, the message is lost. This can happen because spouts
> may start emitting before all workers have started, when time simulation is
> disabled. Local clusters usually run without message timeouts, so this will
> make tests relying on Testing.withLocalCluster flaky.
> The problem is that there are no longer any queues to store messages for
> workers that haven't started yet. See
> https://github.com/apache/storm/pull/830/files#diff-c6ff4208ef84c7a5a1a6b8b6bd1f7d19R104.
> A queue should be added for messages for workers that haven't registered a
> receive callback yet.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)