-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 1.9
-
Component/s: Framework, IoC System
-
Labels:None
This requirement was raised by FLUID-5332. A difficult form of race condition can emerge where a component holding an event or a listener is destroyed as a result of servicing one of the listeners. A clean solution to this issue would involve being able to formally abort the processing of a listener queue when the component holding its event is destroyed partway through the process. This is similar to the "preventable events" system that we still retain in outline, but is signalled by collateral action around the component tree rather than specific knowledge held within a listener as signalled by its return value.
This kind of race should not really occur in practice, but is unfortunately at a much greater risk as a result of our current renderer implementation which causes large-scale destruction of segments of the component trees that it manages whenever re-rendering occurs.
This implementation will interact well with our upcoming asynchronous models for communicating failure, when these are configured to do so by propagating a "ball of fire" up the component tree destroying components. In this case it is highly appropriate to abort any further listener notifications that are in progress when the error occurs - this is consistent with the standard semantics for "failed promises", not to say the analogous monadic model.
- relates to
-
FLUID-5332 Renderer's data binding will continue with notifications after source markup is destroyed
-
- Open
-
-
FLUID-4982 Implement "globally asynchronous ginger world" aka "wave of promises" allowing arbitrarily asynchronous progress through the ginger algorithm
-
- Pull Request
-
-
FLUID-5592 Error received using model relay to component which was destroyed by earlier listener to same transaction
-
- Closed
-
-
FLUID-5499 Think about scheduling of effects within the framework - especially the destruction of components
-
- Open
-
-
FLUID-5578 Investigate potential for improving "fail-fast" behaviour of event listeners
-
- Open
-
-
FLUID-5790 Implement support for "nullable promises" matching facilities for that in events
-
- Pull Request
-