cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff Hodges (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (CASSANDRA-734) Table.open has a broken lock in it
Date Sun, 24 Jan 2010 20:21:17 GMT

    [ https://issues.apache.org/jira/browse/CASSANDRA-734?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12804294#action_12804294
] 

Jeff Hodges edited comment on CASSANDRA-734 at 1/24/10 8:19 PM:
----------------------------------------------------------------

bq. NBHM is lock-free (which actually means it uses lower-level CAS which is much cheaper).


How does a NBHM solve the problem get-and-then-put-but-only-instantiate-the-object-at-all-if-get-is-null?
I haven't seen any docs on get with conditional set and conditional instantiation.


bq. wouldn't we just have to undo that for CASSANDRA-44?

Not if we do the initTable work, and then later turn it in a NBHM. With initTable in place,
and we go to update a Table, we would only have to do a put without the conditional instantiation.

      was (Author: jmhodges):
    .bq NBHM is lock-free (which actually means it uses lower-level CAS which is much cheaper).


How does a NBHM solve the problem get-and-then-put-but-only-instantiate-the-object-at-all-if-get-is-null?
I haven't seen any docs on get with conditional set and conditional instantiation.


.bq wouldn't we just have to undo that for CASSANDRA-44?

Not if we do the initTable work, and then later turn it in a NBHM. With initTable in place,
and we go to update a Table, we would only have to do a put without the conditional instantiation.
  
> Table.open has a broken lock in it
> ----------------------------------
>
>                 Key: CASSANDRA-734
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-734
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.5
>            Reporter: Jeff Hodges
>            Assignee: Jeff Hodges
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: broken_lock_in_table_open.patch
>
>
> Table.open's lock is used around the Map#put method call but not the #get. This makes
it a source of spurious bugs. The attached patch synchronizes the entire Table.open method
and removes the unused createLock static.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message