Return-Path: Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: (qmail 37155 invoked from network); 31 Jan 2011 15:58:38 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 31 Jan 2011 15:58:38 -0000 Received: (qmail 55372 invoked by uid 500); 31 Jan 2011 15:58:38 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 55221 invoked by uid 500); 31 Jan 2011 15:58:36 -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 55208 invoked by uid 99); 31 Jan 2011 15:58:35 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 31 Jan 2011 15:58:35 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 31 Jan 2011 15:58:34 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id CA0A623889D5; Mon, 31 Jan 2011 15:58:13 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1065659 - in /cassandra/branches/cassandra-0.7: CHANGES.txt src/java/org/apache/cassandra/db/HintedHandOffManager.java Date: Mon, 31 Jan 2011 15:58:13 -0000 To: commits@cassandra.apache.org From: jbellis@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110131155813.CA0A623889D5@eris.apache.org> Author: jbellis Date: Mon Jan 31 15:58:13 2011 New Revision: 1065659 URL: http://svn.apache.org/viewvc?rev=1065659&view=rev Log: avoid blocking gossip while deletinghandoffhints patch by jbellis; reviewed by gdusbabek for CASSANDRA-2073 Modified: cassandra/branches/cassandra-0.7/CHANGES.txt cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/HintedHandOffManager.java Modified: cassandra/branches/cassandra-0.7/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1065659&r1=1065658&r2=1065659&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/CHANGES.txt (original) +++ cassandra/branches/cassandra-0.7/CHANGES.txt Mon Jan 31 15:58:13 2011 @@ -48,6 +48,7 @@ (CASSANDRA-2058) * fix math in RandomPartitioner.describeOwnership (CASSANDRA-2071) * fix deletion of sstable non-data components (CASSANDRA-2059) + * avoid blocking gossip while deleting handoff hints (CASSANDRA-2073) 0.7.0-final Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/HintedHandOffManager.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/HintedHandOffManager.java?rev=1065659&r1=1065658&r2=1065659&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/HintedHandOffManager.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/HintedHandOffManager.java Mon Jan 31 15:58:13 2011 @@ -144,21 +144,31 @@ public class HintedHandOffManager rm.apply(); } - public static void deleteHintsForEndPoint(InetAddress endpoint) + public static void deleteHintsForEndPoint(final InetAddress endpoint) { - ColumnFamilyStore hintStore = Table.open(Table.SYSTEM_TABLE).getColumnFamilyStore(HINTS_CF); - RowMutation rm = new RowMutation(Table.SYSTEM_TABLE, ByteBuffer.wrap(endpoint.getAddress())); + final ColumnFamilyStore hintStore = Table.open(Table.SYSTEM_TABLE).getColumnFamilyStore(HINTS_CF); + final RowMutation rm = new RowMutation(Table.SYSTEM_TABLE, ByteBuffer.wrap(endpoint.getAddress())); rm.delete(new QueryPath(HINTS_CF), System.currentTimeMillis()); - try { - logger_.info("Deleting any stored hints for " + endpoint); - rm.apply(); - hintStore.forceFlush(); - CompactionManager.instance.submitMajor(hintStore, 0, Integer.MAX_VALUE).get(); - } - catch (Exception e) + + // execute asynchronously to avoid blocking caller (which may be processing gossip) + Runnable runnable = new Runnable() { - logger_.warn("Could not delete hints for " + endpoint + ": " + e); - } + public void run() + { + try + { + logger_.info("Deleting any stored hints for " + endpoint); + rm.apply(); + hintStore.forceFlush(); + CompactionManager.instance.submitMajor(hintStore, 0, Integer.MAX_VALUE); + } + catch (Exception e) + { + logger_.warn("Could not delete hints for " + endpoint + ": " + e); + } + } + }; + StorageService.scheduledTasks.execute(runnable); } private static boolean pagingFinished(ColumnFamily hintColumnFamily, ByteBuffer startColumn)