[
https://issues.apache.org/jira/browse/FLUME-936?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13202637#comment-13202637
]
[email protected] commented on FLUME-936:
-----------------------------------------------------
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/3704/#review4871
-----------------------------------------------------------
Ship it!
Looks good to me.
Thanks for addressing all the issues and additional tests !
A minor suggestion, the commits/rollback are updating the putList and takeList
under the queueLock. These can be moved outside the synchronized block to
reduce the lock contention. Not important, you can log a separate jira later.
- Prasad
On 2012-02-06 01:37:09, Juhani Connolly wrote:
bq.
bq. -----------------------------------------------------------
bq. This is an automatically generated e-mail. To reply, visit:
bq. https://reviews.apache.org/r/3704/
bq. -----------------------------------------------------------
bq.
bq. (Updated 2012-02-06 01:37:09)
bq.
bq.
bq. Review request for Flume.
bq.
bq.
bq. Summary
bq. -------
bq.
bq. This is an initial go at fixing the threading issues with memory channel.
bq.
bq. It uses the preliminary work on FLUME-935 and I have included the code
from that.
bq.
bq. The tagging of the events became unnecessary so I dropped that. One thing
that concerns me slightly is how to deal with not having enough space in the
queue to rollback failed takes. One method would be to keep a minimum buffer of
transactionCapacity. Another would be to implement the queue of queues as
suggested in FLUME-889
bq.
bq. Anyway, just putting up this early version to see what people think
bq.
bq.
bq. This addresses bug FLUME-936.
bq. https://issues.apache.org/jira/browse/FLUME-936
bq.
bq.
bq. Diffs
bq. -----
bq.
bq.
flume-ng-core/src/main/java/org/apache/flume/channel/BasicChannelSemantics.java
PRE-CREATION
bq.
flume-ng-core/src/main/java/org/apache/flume/channel/BasicTransactionSemantics.java
PRE-CREATION
bq. flume-ng-core/src/main/java/org/apache/flume/channel/ChannelUtils.java
PRE-CREATION
bq. flume-ng-core/src/main/java/org/apache/flume/channel/MemoryChannel.java
d379b64
bq.
flume-ng-core/src/test/java/org/apache/flume/channel/TestMemoryChannel.java
b44030e
bq.
flume-ng-core/src/test/java/org/apache/flume/channel/TestMemoryChannelConcurrency.java
PRE-CREATION
bq.
flume-ng-core/src/test/java/org/apache/flume/channel/TestMemoryChannelTransaction.java
d18045b
bq. flume-ng-core/src/test/java/org/apache/flume/source/TestExecSource.java
46e42e3
bq.
flume-ng-node/src/test/java/org/apache/flume/source/TestNetcatSource.java
9e465e1
bq.
bq. Diff: https://reviews.apache.org/r/3704/diff
bq.
bq.
bq. Testing
bq. -------
bq.
bq. The original tests pass, though I had to take out the state checks because
of the changes to semantics from the flume-935 code. I also had to add a
transaction.close statement where semantics were not properly being followed
bq. I have to retrofit my new concurrency test since without the tagged events
it cannot fail without checking that the content is correct. I'll put that up
asap, just wanted to get some eyes on this before I head out.
bq.
bq.
bq. Thanks,
bq.
bq. Juhani
bq.
bq.
> MemoryChannel is not thread safe
> --------------------------------
>
> Key: FLUME-936
> URL: https://issues.apache.org/jira/browse/FLUME-936
> Project: Flume
> Issue Type: Bug
> Components: Channel
> Affects Versions: NG alpha 2
> Reporter: Juhani Connolly
> Assignee: Juhani Connolly
> Fix For: v1.1.0
>
> Attachments: FLUME-936-unittest.patch, FLUME-936.patch
>
>
> The memory channel isn't thread safe as a couple of parallel transactions can
> commit/rollback each others entries if called in the wrong order.
> I'm attaching a unit test I made that demonstrates it using a cyclicbarrier
> to force the event order that causes the precondition to fail.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira