[Subversion] / PEAK / CHANGES.txt  

Revision 1803


Jump to revision:
Previous Next
Author: pje
Date: Thu Sep 23 21:07:44 2004 UTC (19 years, 6 months ago)

Log Message:

Fixed several 'peak.events' bugs, as reported by Vladimir Iliev, Yaroslav
Samchuk, and Alexander Smishlajev:

* 'events.AnyOf' could hold multiple references to a single event source,
  and nesting 'AnyOf()' calls could leak references to the nested events.

* 'events.subscribe()' had a potential race condition wherein a callback
  could be invoked after its weak reference was garbage collected, leading
  to bizarre error messages about 'self' being 'None'.

* 'select()' could be called on select event objects even if there were
  no current subscribers to the event, potentially leading to calling
  'select()' on a closed socket.

* Non-default signal handlers were remaining installed even when there
  were no current subscribers to the applicable event, as long as a
  reference to the event object existed.

As a result of these changes, certain I/O event types (esp. signals and
stream readable/writeable events) are now longer-lived.  For example,
signal event objects are now immortal, and the read/write event for a
particular 'fileno()' will be reused for as long as its supplying
'Selector' or 'EventLoop' instance exists.  (Previously, weak references
were used so that these objects would be recycled when not in use.)

Changed paths:

Path Action Text Changes Prop Changes Diff to Previous
PEAK/CHANGES.txt modified X   (diff to previous)
PEAK/src/peak/events/io_events.py modified X   (diff to previous)
PEAK/src/peak/events/sources.py modified X   (diff to previous)
PEAK/src/peak/events/tests/test_events.py modified X   (diff to previous)
PEAK/src/peak/events/twisted_support.py modified X   (diff to previous)

cvs-admin@eby-sarna.com

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help