You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Stu Hood (JIRA)" <ji...@apache.org> on 2011/03/25 22:28:06 UTC

[jira] [Created] (CASSANDRA-2389) Send writes to stable replicas when replicate-on-write is disabled during bootstrap

Send writes to stable replicas when replicate-on-write is disabled during bootstrap
-----------------------------------------------------------------------------------

                 Key: CASSANDRA-2389
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2389
             Project: Cassandra
          Issue Type: Bug
            Reporter: Stu Hood


During bootstrap with replicate-on-write disabled, our previous approach of widening the replica set via TokenMetadata.getWriteEndpoints is not the correct approach. Instead, since a write is not immediately bound for all replicas, it needs to be sent to a replica that isn't joining or leaving the replica set due to bootstrap.

Example: with rf=3, 4 nodes are active in a particular replica set: 1 is joining the set, 1 is leaving the set, and 2 are stable in the set (not affected by the bootstrap). The 2 stable nodes are the ones to which it is "safe" to send un-replicated writes during the bootstrap.

Note that running without replicate-on-write enabled is _never_ recommended, but while the setting exists, we should do the right thing.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (CASSANDRA-2389) Send writes to stable replicas when replicate-on-write is disabled during bootstrap

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-2389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13011470#comment-13011470 ] 

Stu Hood commented on CASSANDRA-2389:
-------------------------------------

Nick pointed out that the set of endpoints that should be written to is the intersection of the post-bootstrap replica set with the pre-bootstrap replica set. I'm time crunched to implement this for our branch, but the full solution might involve calculating and maintaining a post-move/bootstrap clone of the ring.

> Send writes to stable replicas when replicate-on-write is disabled during bootstrap
> -----------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-2389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2389
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Stu Hood
>
> During bootstrap with replicate-on-write disabled, our previous approach of widening the replica set via TokenMetadata.getWriteEndpoints is not the correct approach. Instead, since a write is not immediately bound for all replicas, it needs to be sent to a replica that isn't joining or leaving the replica set due to bootstrap.
> Example: with rf=3, 4 nodes are active in a particular replica set: 1 is joining the set, 1 is leaving the set, and 2 are stable in the set (not affected by the bootstrap). The 2 stable nodes are the ones to which it is "safe" to send un-replicated writes during the bootstrap.
> Note that running without replicate-on-write enabled is _never_ recommended, but while the setting exists, we should do the right thing.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Updated] (CASSANDRA-2389) Send writes to stable replicas when replicate-on-write is disabled during bootstrap

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-2389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-2389:
--------------------------------

    Attachment: 0002-WIP-Add-a-counter-bootstrap-test.txt
                0001-During-bootstrap-only-perform-counter-writes-to-stable.txt

I mostly implemented this before realizing we had fish of varying sizes to fry: attaching the work so far. 0001 is complete but inefficient, and 0002 implements a non-passing counter bootstrap test.

> Send writes to stable replicas when replicate-on-write is disabled during bootstrap
> -----------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-2389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2389
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Stu Hood
>         Attachments: 0001-During-bootstrap-only-perform-counter-writes-to-stable.txt, 0002-WIP-Add-a-counter-bootstrap-test.txt
>
>
> During bootstrap with replicate-on-write disabled, our previous approach of widening the replica set via TokenMetadata.getWriteEndpoints is not the correct approach. Instead, since a write is not immediately bound for all replicas, it needs to be sent to a replica that isn't joining or leaving the replica set due to bootstrap.
> Example: with rf=3, 4 nodes are active in a particular replica set: 1 is joining the set, 1 is leaving the set, and 2 are stable in the set (not affected by the bootstrap). The 2 stable nodes are the ones to which it is "safe" to send un-replicated writes during the bootstrap.
> Note that running without replicate-on-write enabled is _never_ recommended, but while the setting exists, we should do the right thing.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Updated] (CASSANDRA-2389) Send writes to stable replicas when replicate-on-write is disabled during bootstrap

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-2389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-2389:
--------------------------------

    Priority: Minor  (was: Major)

Lowering the priority, since replicate-on-write is now the default, and should remain the highly-encouraged behaviour.

> Send writes to stable replicas when replicate-on-write is disabled during bootstrap
> -----------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-2389
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2389
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Stu Hood
>            Priority: Minor
>         Attachments: 0001-During-bootstrap-only-perform-counter-writes-to-stable.txt, 0002-WIP-Add-a-counter-bootstrap-test.txt
>
>
> During bootstrap with replicate-on-write disabled, our previous approach of widening the replica set via TokenMetadata.getWriteEndpoints is not the correct approach. Instead, since a write is not immediately bound for all replicas, it needs to be sent to a replica that isn't joining or leaving the replica set due to bootstrap.
> Example: with rf=3, 4 nodes are active in a particular replica set: 1 is joining the set, 1 is leaving the set, and 2 are stable in the set (not affected by the bootstrap). The 2 stable nodes are the ones to which it is "safe" to send un-replicated writes during the bootstrap.
> Note that running without replicate-on-write enabled is _never_ recommended, but while the setting exists, we should do the right thing.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira