GitHub user johnma14 opened a pull request:
https://github.com/apache/kafka/pull/2906
Kafka-4994 Fix findbug warnings about OffsetStorageWriter#currentFlushId
Based on the description of the class OffsetStorageWriter, it is not a
thread-safe class and should be accessed only from a Task's processing thread.
Many methods within this class have been explicitly synchronized in their
function definition. The doFlush() method is a non-blocking function and hasn't
been synchronized but modifies the variables used within the synchronized
methods in this class. This could lead to potential inconsistent
synchronization of some variables within this class. We can therefore remove
the synchronized keyword from the method signatures within the
OffsetStorageWriter class since the WorkerSourceTask class calls the different
methods (offset, beginFlush,cancelFlush, handleFinishWrite) within a
synchronized block. There is no need to synchronize calls to these methods more
than once.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/johnma14/kafka kafka-4994
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/kafka/pull/2906.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #2906
----
commit 726185526a5197a4537930cfa580503746a5468c
Author: Mariam John <[email protected]>
Date: 2017-04-24T19:45:32Z
Fix findbug warnings about OffsetStorageWriter
Based on the description of the class OffsetStorageWriter, it is not a
thread-safe class and should be accessed
only from a Task's processing thread. Still many methods within this class
have been explicitly synchronized in
their function definiton. The doFlush() method is a non-blocking function
and hasn't been synchronized but modifies
the variables used within the synchronized methods in this class. This
could lead to potential inconsistent synchronization
of many variables within this class. We can therefore remove the
synchronized keyword from the method signatures within the OffsetStorageWriter
class. The WorkerSourceTask class calls the different methods (offset,
beginFlush,cancelFlush, handleFinishWrite) within a synchronized block. Hence
their method definitions in OffsetStorageWriter.java does not need to contain
the 'synchronized' keyword.
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---