[
https://issues.apache.org/jira/browse/KAFKA-4232?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15534261#comment-15534261
]
Jiangjie Qin commented on KAFKA-4232:
-------------------------------------
[~ijuma] Actually I am looking at the java memory model, and it looks my
original assumption was not correct. As long as the operations are in a
synchronized block, it follows the happens-before rule. So we don't need
volatile annotation if `tryAppend` and `close` are both locking the same deque
object.
There is a race condition when shutting down the sender thread due to the order
we set the close flags in the accumulator and sender thread, but that seems
orthogonal to the IllegalStateException we saw. I'll upload a separate patch
for that.
I will dig a bit deeper into the code and update the results here.
> IllegalStateException may be thrown from producer.send() when a batch is full.
> ------------------------------------------------------------------------------
>
> Key: KAFKA-4232
> URL: https://issues.apache.org/jira/browse/KAFKA-4232
> Project: Kafka
> Issue Type: Bug
> Affects Versions: 0.10.0.0
> Reporter: Jiangjie Qin
> Assignee: Jiangjie Qin
> Priority: Blocker
> Fix For: 0.10.1.0
>
>
> MemoryRecords.writable should be volatile.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)