cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Blake Eggleston (JIRA)" <>
Subject [jira] [Created] (CASSANDRA-10082) Transactional classes shouldn't also implement streams, channels, etc
Date Fri, 14 Aug 2015 20:58:45 GMT
Blake Eggleston created CASSANDRA-10082:

             Summary: Transactional classes shouldn't also implement streams, channels, etc
                 Key: CASSANDRA-10082
             Project: Cassandra
          Issue Type: Improvement
            Reporter: Blake Eggleston
            Assignee: Blake Eggleston
         Attachments: 0001-replacing-SequentialWriter-OutputStream-extension-wi.patch

Since the close method on the Transactional interface means "abort if commit hasn't been called",
mixing Transactional and AutoCloseable interfaces where close means "we're done here" is pretty
much never the right thing to do. 

The only class that does this is SequentialWriter. It's not used in a way that causes a problem,
but it's still a potential hazard for future development.

The attached patch replaces the SequentialWriter OutputStream implementation with a wrapper
class that implements the expected behavior on close, and adds a warning to the Transactional
interface. It also adds a unit test that demonstrates the problem without the fix.

This message was sent by Atlassian JIRA

View raw message