[ https://issues.apache.org/jira/browse/KAFKA-6999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Guozhang Wang resolved KAFKA-6999. ---------------------------------- Resolution: Fixed Assignee: Lee Dongjin Fix Version/s: 2.1.0 > Document read-write lock usage of caching enabled stores > -------------------------------------------------------- > > Key: KAFKA-6999 > URL: https://issues.apache.org/jira/browse/KAFKA-6999 > Project: Kafka > Issue Type: Improvement > Components: streams > Reporter: Matthias J. Sax > Assignee: Lee Dongjin > Priority: Minor > Fix For: 2.1.0 > > > From the mailing list > {quote}Hello again fellow Kafkans, > > Yesterday we observed a production deadlock take down one of our instances. > Upon digging, it's clear that our usage of Kafka is the proximate cause, but > the danger of our approach is not clear at all just from the Javadocs. > > We have stream processors that read off an incoming KStream, possibly > cross-reference some data from an auxiliary table via > ReadOnlyKeyValueStore.get() > > This is done via custom logic rather than a direct KTable join because which > index is consulted may change depending on the shape of incoming data. > > The ROKVS docs state, > * A key value store that only supports read operations. > * Implementations should be thread-safe as concurrent reads and writes > * are expected. > > They do **not** indicate that the CachingKVS layer uses a ReadWriteLock. If > you have one CachingKVS flush a record cause a read from another CKVS, you > are suddenly vulnerable to classic lock order reversals! Surprise! > > A partial stack trace highlighting the problem, with many uninteresting > frames removed, is inline at the bottom of this mail. > > You could probably rightly point to us allowing a "observer" pattern to > callback from within streams processing code is dangerous. We might move this > off to an auxiliary thread to alleviate this problem. > > But it still remains -- when you go an read that ROKVS documentation, it sure > doesn't prepare you to this possibility! > {quote} -- This message was sent by Atlassian JIRA (v7.6.3#76005)