Currently, we throw if hooks are specified and shared is true.
This is mostly because it's tricky to use stream wrapping (one of the main use cases) with the atomic-append-based shared file sink, but also because it's unclear how many hooks could be implemented correctly in the synchronization-free world of the atomic-append sink.
When both hooks and shared are set, we could fall back to using the (portable) OS-mutex-based shared file sink. This would be simpler to integrate the hooks into, and we could call the hooks under the mutex to improve chances of writing correct implementations.
Currently, we throw if
hooksare specified andsharedistrue.This is mostly because it's tricky to use stream wrapping (one of the main use cases) with the atomic-append-based shared file sink, but also because it's unclear how many hooks could be implemented correctly in the synchronization-free world of the atomic-append sink.
When both
hooksandsharedare set, we could fall back to using the (portable) OS-mutex-based shared file sink. This would be simpler to integrate the hooks into, and we could call the hooks under the mutex to improve chances of writing correct implementations.