Benedict created CASSANDRA-7705:

             Summary: Safer Resource Management
                 Key: CASSANDRA-7705
             Project: Cassandra
          Issue Type: Improvement
          Components: Core
            Reporter: Benedict
             Fix For: 3.0

We've had a spate of bugs recently with bad reference counting. these can have 
potentially dire consequences, generally either randomly deleting data or 
giving us infinite loops. 

Since in 2.1 we only reference count resources that are relatively expensive 
and infrequently managed, we could without any negative consequences (and only 
slight code complexity) introduce a safer resource management scheme.

Basically, I propose when we want to acquire a resource we allocate an object 
that manages the reference. This can only be released once; if it is released 
twice, we fail immediately at the second release, reporting where the bug is 
(rather than letting it continue fine until the next correct release corrupts 
the count). The reference counter remains the same, but we obtain guarantees 
that the reference count itself is never badly maintained, although code using 
it could mistakenly release its own handle early (typically this is only an 
issue when cleaning up after a failure, in which case under the new scheme this 
would be an innocuous error)

This message was sent by Atlassian JIRA

Reply via email to