You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flume.apache.org by "jiraposter@reviews.apache.org (Commented) (JIRA)" <ji...@apache.org> on 2012/01/17 22:15:41 UTC

[jira] [Commented] (FLUME-935) Create abstract implementations of basic channel/transaction semantics

    [ https://issues.apache.org/jira/browse/FLUME-935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13188003#comment-13188003 ] 

jiraposter@reviews.apache.org commented on FLUME-935:
-----------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/3516/
-----------------------------------------------------------

Review request for Flume.


Summary
-------

Implementation of FLUME-935 as new classes BasicChannelSemantics, BasicTransactionSemantics, and ChannelUtils.  It might be better to fold BasicChannelSemantics into AbstractChannel and rename BasicTransactionSemantics to AbstractTransaction, but doing that would require refactoring of existing classes that extend AbstractChannel.


This addresses bug FLUME-935.
    https://issues.apache.org/jira/browse/FLUME-935


Diffs
-----

  /incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/channel/BasicChannelSemantics.java PRE-CREATION 
  /incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/channel/BasicTransactionSemantics.java PRE-CREATION 
  /incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/channel/ChannelUtils.java PRE-CREATION 

Diff: https://reviews.apache.org/r/3516/diff


Testing
-------

I am using these in production code, and they have survived significant integration testing there, including failure modes.  Note also that these classes are largely error handling and precondition testing code designed to test the correctness of the code around them.

All that said, it wouldn't be a bad idea to create unit tests around these, and ideally reusable test classes to test the basic use cases for any Channel implementation or client.


Thanks,

Peter


                
> Create abstract implementations of basic channel/transaction semantics
> ----------------------------------------------------------------------
>
>                 Key: FLUME-935
>                 URL: https://issues.apache.org/jira/browse/FLUME-935
>             Project: Flume
>          Issue Type: Improvement
>          Components: Channel
>            Reporter: Peter Newcomb
>            Assignee: Peter Newcomb
>            Priority: Minor
>
> Correctly executing or checking the state transitions for channels and transactions is nontrivial.  It would be helpful to have a correct implementation of each that can be used either directly or as a reference when creating new channels or clients of channels.
> Specifically, on the client side it would be nice to package the try { begin() ... commit() } catch { rollback() } finally { close() } code, with all the appropriate exception propagation and logging code, so that it need not be repeated constantly.
> On the channel side, it'd be nice to have a packaged implementation of the implied ThreadLocal semantics of the Transaction class, along with Preconditions checking to make sure that clients follow the try { begin() ... commit() } catch { rollback() } finally { close() } pattern.

--
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