Run handler on STM retry
It would be nice to have a function like:
-- | Perform a series of STM actions atomically.
--
-- Whenever the transaction retries, run the handler. If it doesn't return 'Nothing',
-- stop the retrying and return the value given by the handler.
atomicallyWithRetryHandler :: STM a -> IO (Maybe a) -> IO a
This would allow tracking retry statistics, printing debug messages on each retry, etc. without resorting to unsafeIOToSTM which can't safely do things like printing.
Trac metadata
Trac field | Value |
---|---|
Version | 7.10.2 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | libraries (other) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |