Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 00A529CD1 for ; Fri, 25 May 2012 10:28:26 +0000 (UTC) Received: (qmail 95306 invoked by uid 500); 25 May 2012 10:28:25 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 95074 invoked by uid 500); 25 May 2012 10:28:25 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 94626 invoked by uid 99); 25 May 2012 10:28:23 -0000 Received: from issues-vm.apache.org (HELO issues-vm) (140.211.11.160) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 25 May 2012 10:28:23 +0000 Received: from isssues-vm.apache.org (localhost [127.0.0.1]) by issues-vm (Postfix) with ESMTP id B5177142831 for ; Fri, 25 May 2012 10:28:23 +0000 (UTC) Date: Fri, 25 May 2012 10:28:23 +0000 (UTC) From: "Sam Overton (JIRA)" To: commits@cassandra.apache.org Message-ID: <1390572099.1319.1337941703743.JavaMail.jiratomcat@issues-vm> In-Reply-To: <1788713080.18881.1328783579496.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (CASSANDRA-3881) reduce computational complexity of processing topology changes MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CASSANDRA-3881?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13283289#comment-13283289 ] Sam Overton commented on CASSANDRA-3881: ---------------------------------------- The original approach was not quite there. The snitch was tracking the topology of nodes in NORMAL state for the benefit of NTS.calculateNaturalEndpoints, but calculateNaturalEndpoints is called with modified TokenMetadata (eg, with leaving nodes removed, or a bootstrapped node added or some other modification) to calculate ranges for some future state of the ring, not the current state as tracked by the snitch. The correct solution is to have TokenMetadata track the topology of the nodes which it considers to be part of the ring, so that when a tokenMetadata is cloned and modified it also updates its view of the topology. This is also much simpler and cleaner. Patches above are updated. > reduce computational complexity of processing topology changes > -------------------------------------------------------------- > > Key: CASSANDRA-3881 > URL: https://issues.apache.org/jira/browse/CASSANDRA-3881 > Project: Cassandra > Issue Type: Bug > Components: Core > Reporter: Peter Schuller > Assignee: Sam Overton > Labels: vnodes > > This constitutes follow-up work from CASSANDRA-3831 where a partial improvement was committed, but the fundamental issue was not fixed. The maximum "practical" cluster size was significantly improved, but further work is expected to be necessary as cluster sizes grow. > _Edit0: Appended patch information._ > h3. Patches > ||Compare||Raw diff||Description|| > |[00_snitch_topology|https://github.com/acunu/cassandra/compare/refs/top-bases/p/3881/00_snitch_topology...p/3881/00_snitch_topology]|[00_snitch_topology.patch|https://github.com/acunu/cassandra/compare/refs/top-bases/p/3881/00_snitch_topology...p/3881/00_snitch_topology.diff]|Adds some functionality to AbstractEndpointSnitch to track which endpoints and racks exist in a DC.| > |[01_calc_natural_endpoints|https://github.com/acunu/cassandra/compare/refs/top-bases/p/3881/01_calc_natural_endpoints...p/3881/01_calc_natural_endpoints]|[01_calc_natural_endpoints.patch|https://github.com/acunu/cassandra/compare/refs/top-bases/p/3881/01_calc_natural_endpoints...p/3881/01_calc_natural_endpoints.diff]|Rewritten O(logN) implementation of calculateNaturalEndpoints using the topology information from the snitch.| > ---- > _Note: These are branches managed with TopGit. If you are applying the patch output manually, you will either need to filter the TopGit metadata files (i.e. {{wget -O - | filterdiff -x*.topdeps -x*.topmsg | patch -p1}}), or remove them afterward ({{rm .topmsg .topdeps}})._ -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira