Skip to content

Commit 3c8b1e4

Browse files
committed
test for empty stream backpressure and fix
1 parent a6e9111 commit 3c8b1e4

2 files changed

Lines changed: 30 additions & 2 deletions

File tree

streamz/core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ def _():
483483
sync(self.loop, _)
484484

485485
def update(self, x, who=None, metadata=None):
486-
self._emit(x, metadata=metadata)
486+
return self._emit(x, metadata=metadata)
487487

488488
def gather(self):
489489
""" This is a no-op for core streamz

streamz/tests/test_core.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from streamz import Stream, RefCounter
2020
from streamz.sources import sink_to_file, PeriodicCallback
2121
from streamz.utils_test import (inc, double, gen_test, tmpfile, captured_logger, # noqa: F401
22-
clean, await_for, metadata) # noqa: F401
22+
clean, await_for, metadata, wait_for) # noqa: F401
2323
from distributed.utils_test import loop # noqa: F401
2424

2525

@@ -1634,3 +1634,31 @@ def test_buffer_after_timed_window():
16341634

16351635
def test_buffer_after_sliding_window():
16361636
Stream().sliding_window(1).buffer(1)
1637+
1638+
1639+
def test_backpressure_connect_empty_stream():
1640+
@Stream.register_api()
1641+
class from_list(Stream):
1642+
1643+
def __init__(self, source, **kwargs):
1644+
self.source = source
1645+
super().__init__(ensure_io_loop=True, **kwargs)
1646+
1647+
def start(self):
1648+
self.stopped = False
1649+
self.loop.add_callback(self.run)
1650+
1651+
@gen.coroutine
1652+
def run(self):
1653+
while not self.stopped and len(self.source) > 0:
1654+
yield self._emit(self.source.pop(0))
1655+
1656+
source_list = [0, 1, 2, 3, 4]
1657+
source = Stream.from_list(source_list)
1658+
sout = Stream()
1659+
L = sout.rate_limit(1).sink_to_list()
1660+
source.connect(sout)
1661+
source.start()
1662+
1663+
wait_for(lambda: L == [0], 0.01)
1664+
assert len(source_list) > 0

0 commit comments

Comments
 (0)