Releases: pystorm/pystorm
pystorm 3.1.4
pystorm 3.1.3
ReliableSpoutnow inherits fromSpoutas it should (issue #49)
pystorm 3.1.2
This release fixes an issue where sometimes hung threads would not be killed when a Component exits on an exception. (PR #47)
pystorm 3.1.1
This bugfix release fixes an issue where importing anything from pystorm would cause crashes on Windows (Issue #40)
pystorm 3.1.0
Features
- Added a
ReliableSpoutimplementation that can be used to have spouts that will automatically replay failed tuples up to a specified number of times before giving up on them. (PR #39) - Added
Spout.activateandSpout.deactivatemethods that will be called in Storm 1.1.0 and above when a spout is activated or deactivated. This is handy if you want to close database connections on deactivation and reconnect on activation. (Issue #41, PR #42)
Fixes
- Fixed an issue where batching bolts would fail all batches they had received when they encountered an exception, even when
exit_on_exceptionwasFalse. Now they will only fail the current batch whenexit_on_exceptionisFalse; if it isTrue, all batches are still failed. (PR #43)
pystorm 3.0.3
This bugfix release fixes an issue where a nested exception could still cause a StormWentAwayError to be raised (instead of logged). #38
pystorm 3.0.2
This bugfix release fixes an issue where trying to emit a namedtuple would cause Storm workers to crash with a JSON serialization exception. (PR #37)
pystorm 3.0.1
This release fixes a few minor issues with pystorm 3.0.0 (all fixed in PR #36).
- Serialization exceptions are now caught and logged when sending messages, so components won't crash when they try to send malformed messages.
- Use
Component.loggerif its set whenComponent.send_messageis passed something that isn't adict. - The
pystormlogger's level now get's set topystorm.log.levelinstead of just individual components' logging levels. This will ensure that module-level pystorm messages are not missed.
pystorm 3.0.0
This release changes a couples defaults to be more sensible, which is the only reason it is considered backward-incompatible. Otherwise, it has a couple handy logging-related features.
⚠️ API Breaking Changes ⚠️
need_task_idsdefaults toFalseinstead ofTruein allemit()method calls. If you were previously storing the task IDs that your tuples were emitted to (which is pretty rare), then you must passneed_task_ids=Truein youremit()calls. This should provide a little speed boost to most users, because we do not need to wait on a return message from Storm for every emitted tuple.- Instead of having
pystorm.log.levelinfluence the root logger's level, only your component (and itsStormHandlerif you haven't setpystorm.log.path)'s levels will be set. - When
pystorm.log.pathis not set, pystorm will no longer issue warning about how you should set it; instead, it will automatically set up aStormHandlerand log everything directly to your Storm logs. This is really handy as in Storm 1.0 there's support through the UI for searching logs.
Features
- Added support for custom log filenames via
pystorm.log.file(PR #25 — thanks @ kalmanolah) - Added support for custom log format strings via
pystorm.log.format(PR #33) - Automatically log to Storm when
pystorm.log.pathis not set (PR #32) __version__is directly available under thepystormnamespace instead of just inpystorm.versionneed_task_idsdefaults toFalse, which should provide a speed boost, as discussed above (Issue #29, PR #31)
Fixes
- Add missing
_reader_lockinmsgpack_serializer. This could have caused task IDs to not match with emits if usingneed_task_ids, multithreading, and the msgpack serializer. (PR #28) - Simplified
emitlogic, so that we only request_reader_lockifneed_task_idsisTrue(PR #23) - Added missing
TicklessBatchingBoltto__all__in__init__.py.
pystorm 2.0.1
This is a bugfix release that fixes an issue where an IOError was being raised instead of a StormWentAwayError when the pipe to Storm breaks during send_message. (Issue #20).