hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Helmling (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-7326) SortedCopyOnWriteSet is not thread safe due to leaked TreeSet implementations
Date Wed, 12 Dec 2012 16:47:22 GMT

    [ https://issues.apache.org/jira/browse/HBASE-7326?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13530091#comment-13530091

Gary Helmling commented on HBASE-7326:

.bq Could we get rid of SortedCopyOnWriteSet Gary for CSLS?

That's the idea.  Given the lack of locking for CSLS, it may be just as low overhead for iteration
and would actually be fully thread safe.  In which case, let's dump SortedCopyOnWriteSet if
it doesn't buy us anything.
> SortedCopyOnWriteSet is not thread safe due to leaked TreeSet implementations
> -----------------------------------------------------------------------------
>                 Key: HBASE-7326
>                 URL: https://issues.apache.org/jira/browse/HBASE-7326
>             Project: HBase
>          Issue Type: Bug
>          Components: util
>    Affects Versions: 0.92.2, 0.94.3, 0.96.0
>            Reporter: Gary Helmling
> The SortedCopyOnWriteSet implementation uses an internal TreeSet that is copied and replaced
on mutation operations.  However, in a few areas, SortedCopyOnWriteSet leaks references to
the underlying TreeSet implementations, allowing for unsafe usage:
> * iterator()
> * subSet()
> * headSet()
> * tailSet()
> For Iterator.remove(), we can wrap in an implementation that throws UnsupportedOperationException.
 For the sub set methods, we could return new SortedCopyOnWriteSet instances (which would
not modify the parent set), or wrap with a new sub set implementation that safely allows modification
of the parent set.
> To be clear, the current usage of SortedCopyOnWriteSet does not make use of any of these
non-thread-safe methods, but the implementation should be fixed to be completely thread safe
and prevent any new issues.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

View raw message