Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id C2261200B6D for ; Tue, 23 Aug 2016 16:50:30 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id C0D82160A81; Tue, 23 Aug 2016 14:50:30 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id DE494160ABF for ; Tue, 23 Aug 2016 16:50:29 +0200 (CEST) Received: (qmail 17672 invoked by uid 500); 23 Aug 2016 14:50:29 -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 17407 invoked by uid 99); 23 Aug 2016 14:50:28 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 23 Aug 2016 14:50:28 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id A9AD4E0C09; Tue, 23 Aug 2016 14:50:28 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: marcuse@apache.org To: commits@cassandra.apache.org Date: Tue, 23 Aug 2016 14:50:31 -0000 Message-Id: <1239e8eda95c4d88a10bda8c82627b44@git.apache.org> In-Reply-To: <46ee8e46e21a4b508f0a8007371aa7da@git.apache.org> References: <46ee8e46e21a4b508f0a8007371aa7da@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [4/5] cassandra git commit: Disk failure policy should not be invoked on out of space archived-at: Tue, 23 Aug 2016 14:50:30 -0000 Disk failure policy should not be invoked on out of space patch by Sankalp Kohli; reviewed by marcuse for CASSANDRA-12385 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8bd62994 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8bd62994 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8bd62994 Branch: refs/heads/cassandra-3.0 Commit: 8bd629942ca7014ff5b6e001db10290691f6cc08 Parents: 6808e75 Author: sankalp kohli Authored: Fri Aug 19 09:44:48 2016 +0200 Committer: Marcus Eriksson Committed: Tue Aug 23 16:32:11 2016 +0200 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../org/apache/cassandra/db/Directories.java | 3 +- .../db/compaction/AbstractCompactionTask.java | 7 +++++ .../cassandra/io/FSDiskFullWriteError.java | 33 ++++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bd62994/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 0d461f3..bd1fc5d 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.9 + * Disk failure policy should not be invoked on out of space (CASSANDRA-12385) * Calculate last compacted key on startup (CASSANDRA-6216) * Add schema to snapshot manifest, add USING TIMESTAMP clause to ALTER TABLE statements (CASSANDRA-7190) * Fix clean interval not sent to commit log for empty memtable flush (CASSANDRA-12436) http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bd62994/src/java/org/apache/cassandra/db/Directories.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/Directories.java b/src/java/org/apache/cassandra/db/Directories.java index 30fe56d..68aa6be 100644 --- a/src/java/org/apache/cassandra/db/Directories.java +++ b/src/java/org/apache/cassandra/db/Directories.java @@ -47,6 +47,7 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.config.*; import org.apache.cassandra.db.lifecycle.LifecycleTransaction; +import org.apache.cassandra.io.FSDiskFullWriteError; import org.apache.cassandra.io.FSError; import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.util.FileUtils; @@ -385,7 +386,7 @@ public class Directories if (candidates.isEmpty()) if (tooBig) - throw new FSWriteError(new IOException("Insufficient disk space to write " + writeSize + " bytes"), ""); + throw new FSDiskFullWriteError(new IOException("Insufficient disk space to write " + writeSize + " bytes"), ""); else throw new FSWriteError(new IOException("All configured data directories have been blacklisted as unwritable for erroring out"), ""); http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bd62994/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java index 155bf2f..430c916 100644 --- a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java +++ b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java @@ -23,6 +23,7 @@ import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.Directories; import org.apache.cassandra.db.compaction.CompactionManager.CompactionExecutorStatsCollector; import org.apache.cassandra.db.compaction.writers.CompactionAwareWriter; +import org.apache.cassandra.io.FSDiskFullWriteError; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.utils.WrappedRunnable; import org.apache.cassandra.db.lifecycle.LifecycleTransaction; @@ -59,6 +60,12 @@ public abstract class AbstractCompactionTask extends WrappedRunnable { return executeInternal(collector); } + catch(FSDiskFullWriteError e) + { + RuntimeException cause = new RuntimeException("Converted from FSDiskFullWriteError: " + e.getMessage()); + cause.setStackTrace(e.getStackTrace()); + throw new RuntimeException("Throwing new Runtime to bypass exception handler when disk is full", cause); + } finally { transaction.close(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bd62994/src/java/org/apache/cassandra/io/FSDiskFullWriteError.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/io/FSDiskFullWriteError.java b/src/java/org/apache/cassandra/io/FSDiskFullWriteError.java new file mode 100644 index 0000000..ca5d8da --- /dev/null +++ b/src/java/org/apache/cassandra/io/FSDiskFullWriteError.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.io; + +public class FSDiskFullWriteError extends FSWriteError +{ + public FSDiskFullWriteError(Throwable cause, String path) + { + super(cause, path); + } + + @Override + public String toString() + { + return "FSDiskFullWriteError in " + path; + } +}