[ https://issues.apache.org/jira/browse/CASSANDRA-17870?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17620650#comment-17620650 ]
Saranya Krishnakumar edited comment on CASSANDRA-17870 at 11/7/22 7:08 PM: --------------------------------------------------------------------------- [~yifanc] I created a PR as you had asked https://github.com/apache/cassandra/pull/1931 was (Author: saranya_k): [~yifanc] created a PR [https://github.com/apache/cassandra/pull/1931 |https://github.com/apache/cassandra/pull/1931,] > nodetool/rebuild: Add flag to exclude nodes from local datacenter > ----------------------------------------------------------------- > > Key: CASSANDRA-17870 > URL: https://issues.apache.org/jira/browse/CASSANDRA-17870 > Project: Cassandra > Issue Type: Improvement > Components: Tool/nodetool > Reporter: Saranya Krishnakumar > Assignee: Saranya Krishnakumar > Priority: Normal > Attachments: fix_nodetool_rebuild.diff > > Time Spent: 40m > Remaining Estimate: 0h > > During expansion by Dc, when we issue nodetool/rebuild from new dc to rebuild > the data from other DCs. If src-dc is not passed explicitly, then C* tries to > rebuild the data from the same (new dc) dc. > We don’t exclude other nodes in the same DC. Only down sources and the local > node itself are excluded. > ``` > // We're _always_ filtering out a local node and down sources > addSourceFilter(new > RangeStreamer.FailureDetectorSourceFilter(failureDetector)); > addSourceFilter(new RangeStreamer.ExcludeLocalNodeFilter()); > ``` > We should fix nodetool/rebuild to exclude the local DC (from where we’re > executing the command) while issuing nodetool/rebuild without passing src dc > > Example: > in a 3 DC cluster, > ks1 has DC1, DC2 > ks2 has DC1, DC2, DC3 > ks3 has DC2 > now, we add a new DC [DC4] and configured it to all 3 keyspaces. > if we run rebuild with src DC as DC1, ks3 will fail as it does not have DC1. > Now, without src DC, the expectation is rebuild would auto pick up DCs for > each keyspace (let's say ks1: DC1, ks2: DC1, ks3: DC2) and would never fail > due to under-replicated keyspaces. > The issue with this approach (without src dc) is that, DC4 is getting picked > up during rebuild (as src), but DC4 does not have any data yet! > so, with the patch (ignore local dc flag), DC4 can be filtered out and let > the database pick up the right dc for each keyspace [from existing 3 DCs]. > -- this is what is the expectation after the patch. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org