From 500c62d6b98f5b5c15b91f1d38f0132b846c6b48 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Tue, 18 Feb 2014 11:21:13 -0600 Subject: [PATCH] Allow per-dc enabling of hints patch by Sankalp Kohli; reviewed by Lyuben Todorov for CASSANDRA-6157 --- CHANGES.txt | 2 + build.xml | 2 + conf/cassandra.yaml | 3 + lib/licenses/super-csv-2.1.0.txt | 202 ++++++++++++++++++ lib/super-csv-2.1.0.jar | Bin 0 -> 91473 bytes .../org/apache/cassandra/config/Config.java | 49 ++++- .../cassandra/config/DatabaseDescriptor.java | 40 +++- .../config/YamlConfigurationLoader.java | 1 + .../cassandra/service/StorageProxy.java | 22 +- .../cassandra/service/StorageProxyMBean.java | 3 + .../org/apache/cassandra/tools/NodeCmd.java | 5 +- .../org/apache/cassandra/tools/NodeProbe.java | 5 + 12 files changed, 329 insertions(+), 5 deletions(-) create mode 100644 lib/licenses/super-csv-2.1.0.txt create mode 100644 lib/super-csv-2.1.0.jar diff --git a/CHANGES.txt b/CHANGES.txt index bdfec115f2..f0c116f406 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.0.6 + * Allow per-dc enabling of hints (CASSANDRA-6157) * Add compatibility for Hadoop 0.2.x (CASSANDRA-5201) * Fix EstimatedHistogram races (CASSANDRA-6682) * Failure detector correctly converts initial value to nanos (CASSANDRA-6658) @@ -27,6 +28,7 @@ Merged from 1.2: * Fix SecondaryIndexManager#deleteFromIndexes() (CASSANDRA-6711) * Fix snapshot repair not snapshotting coordinator itself (CASSANDRA-6713) + 2.0.5 * Reduce garbage generated by bloom filter lookups (CASSANDRA-6609) * Add ks.cf names to tombstone logging (CASSANDRA-6597) diff --git a/build.xml b/build.xml index fb774f65ba..77b2639728 100644 --- a/build.xml +++ b/build.xml @@ -381,6 +381,7 @@ + @@ -461,6 +462,7 @@ + diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml index bfe60c4005..4c9ad67b33 100644 --- a/conf/cassandra.yaml +++ b/conf/cassandra.yaml @@ -29,6 +29,9 @@ num_tokens: 256 # that do not have vnodes enabled. # initial_token: +# May either be "true" or "false" to enable globally, or contain a list +# of data centers to enable per-datacenter. +# hinted_handoff_enabled: DC1,DC2 # See http://wiki.apache.org/cassandra/HintedHandoff hinted_handoff_enabled: true # this defines the maximum amount of time a dead host will have hints diff --git a/lib/licenses/super-csv-2.1.0.txt b/lib/licenses/super-csv-2.1.0.txt new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/lib/licenses/super-csv-2.1.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. diff --git a/lib/super-csv-2.1.0.jar b/lib/super-csv-2.1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..6a857163565caed89d2351d6a2b02cad44d6135c GIT binary patch literal 91473 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 literal 0 HcmV?d00001 diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java index 2fa49f3726..ceb8df0eae 100644 --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@ -17,8 +17,18 @@ */ package org.apache.cassandra.config; +import java.io.IOException; +import java.io.StringReader; +import java.util.List; +import java.util.Set; + +import com.google.common.collect.Sets; +import org.supercsv.io.CsvListReader; +import org.supercsv.prefs.CsvPreference; + import org.apache.cassandra.config.EncryptionOptions.ClientEncryptionOptions; import org.apache.cassandra.config.EncryptionOptions.ServerEncryptionOptions; +import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.util.NativeAllocator; import org.apache.cassandra.utils.FBUtilities; @@ -38,7 +48,9 @@ public class Config public String partitioner; public Boolean auto_bootstrap = true; - public volatile Boolean hinted_handoff_enabled = true; + public volatile boolean hinted_handoff_enabled_global = true; + public String hinted_handoff_enabled; + public Set hinted_handoff_enabled_by_dc = Sets.newConcurrentHashSet(); public volatile Integer max_hint_window_in_ms = 3600 * 1000; // one hour public SeedProviderDef seed_provider; @@ -185,6 +197,9 @@ public class Config public volatile int tombstone_warn_threshold = 1000; public volatile int tombstone_failure_threshold = 100000; + private static final CsvPreference STANDARD_SURROUNDING_SPACES_NEED_QUOTES = new CsvPreference.Builder(CsvPreference.STANDARD_PREFERENCE) + .surroundingSpacesNeedQuotes(true).build(); + public static boolean getOutboundBindAny() { return outboundBindAny; @@ -205,6 +220,38 @@ public class Config isClientMode = clientMode; } + public void configHintedHandoff() throws ConfigurationException + { + if (hinted_handoff_enabled != null && !hinted_handoff_enabled.isEmpty()) + { + if (hinted_handoff_enabled.toLowerCase().equalsIgnoreCase("true")) + { + hinted_handoff_enabled_global = true; + } + else if (hinted_handoff_enabled.toLowerCase().equalsIgnoreCase("false")) + { + hinted_handoff_enabled_global = false; + } + else + { + try + { + hinted_handoff_enabled_by_dc.addAll(parseHintedHandoffEnabledDCs(hinted_handoff_enabled)); + } + catch (IOException e) + { + throw new ConfigurationException("Invalid hinted_handoff_enabled parameter " + hinted_handoff_enabled, e); + } + } + } + } + + public static List parseHintedHandoffEnabledDCs(final String dcNames) throws IOException + { + final CsvListReader csvListReader = new CsvListReader(new StringReader(dcNames), STANDARD_SURROUNDING_SPACES_NEED_QUOTES); + return csvListReader.read(); + } + public static enum CommitLogSync { periodic, diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index e1a95abd8a..9e066011fb 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -19,6 +19,7 @@ package org.apache.cassandra.config; import java.io.File; import java.io.FileFilter; +import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.*; @@ -1109,12 +1110,47 @@ public class DatabaseDescriptor public static void setHintedHandoffEnabled(boolean hintedHandoffEnabled) { - conf.hinted_handoff_enabled = hintedHandoffEnabled; + conf.hinted_handoff_enabled_global = hintedHandoffEnabled; + conf.hinted_handoff_enabled_by_dc.clear(); + } + + public static void setHintedHandoffEnabled(final String dcNames) + { + List dcNameList; + try + { + dcNameList = Config.parseHintedHandoffEnabledDCs(dcNames); + } + catch (IOException e) + { + throw new IllegalArgumentException("Could not read csv of dcs for hinted handoff enable. " + dcNames, e); + } + + if (dcNameList.isEmpty()) + throw new IllegalArgumentException("Empty list of Dcs for hinted handoff enable"); + + conf.hinted_handoff_enabled_by_dc.clear(); + conf.hinted_handoff_enabled_by_dc.addAll(dcNameList); } public static boolean hintedHandoffEnabled() { - return conf.hinted_handoff_enabled; + return conf.hinted_handoff_enabled_global; + } + + public static Set hintedHandoffEnabledByDC() + { + return Collections.unmodifiableSet(conf.hinted_handoff_enabled_by_dc); + } + + public static boolean shouldHintByDC() + { + return !conf.hinted_handoff_enabled_by_dc.isEmpty(); + } + + public static boolean hintedHandoffEnabled(final String dcName) + { + return conf.hinted_handoff_enabled_by_dc.contains(dcName); } public static void setMaxHintWindow(int ms) diff --git a/src/java/org/apache/cassandra/config/YamlConfigurationLoader.java b/src/java/org/apache/cassandra/config/YamlConfigurationLoader.java index d8a138c52f..6b5a152674 100644 --- a/src/java/org/apache/cassandra/config/YamlConfigurationLoader.java +++ b/src/java/org/apache/cassandra/config/YamlConfigurationLoader.java @@ -91,6 +91,7 @@ public class YamlConfigurationLoader implements ConfigurationLoader constructor.setPropertyUtils(propertiesChecker); Yaml yaml = new Yaml(constructor); Config result = yaml.loadAs(input, Config.class); + result.configHintedHandoff(); propertiesChecker.check(); return result; } diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java index 8d1f913085..14c1ce3440 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -1758,11 +1758,21 @@ public class StorageProxy implements StorageProxyMBean return DatabaseDescriptor.hintedHandoffEnabled(); } + public Set getHintedHandoffEnabledByDC() + { + return DatabaseDescriptor.hintedHandoffEnabledByDC(); + } + public void setHintedHandoffEnabled(boolean b) { DatabaseDescriptor.setHintedHandoffEnabled(b); } + public void setHintedHandoffEnabledByDCList(String dcNames) + { + DatabaseDescriptor.setHintedHandoffEnabled(dcNames); + } + public int getMaxHintWindow() { return DatabaseDescriptor.getMaxHintWindow(); @@ -1775,7 +1785,17 @@ public class StorageProxy implements StorageProxyMBean public static boolean shouldHint(InetAddress ep) { - if (!DatabaseDescriptor.hintedHandoffEnabled()) + if (DatabaseDescriptor.shouldHintByDC()) + { + final String dc = DatabaseDescriptor.getEndpointSnitch().getDatacenter(ep); + // Disable DC specific hints + if(!DatabaseDescriptor.hintedHandoffEnabled(dc)) + { + HintedHandOffManager.instance.metrics.incrPastWindow(ep); + return false; + } + } + else if (!DatabaseDescriptor.hintedHandoffEnabled()) { HintedHandOffManager.instance.metrics.incrPastWindow(ep); return false; diff --git a/src/java/org/apache/cassandra/service/StorageProxyMBean.java b/src/java/org/apache/cassandra/service/StorageProxyMBean.java index ad7d4c7435..203cabe013 100644 --- a/src/java/org/apache/cassandra/service/StorageProxyMBean.java +++ b/src/java/org/apache/cassandra/service/StorageProxyMBean.java @@ -19,6 +19,7 @@ package org.apache.cassandra.service; import java.util.List; import java.util.Map; +import java.util.Set; public interface StorageProxyMBean { @@ -72,7 +73,9 @@ public interface StorageProxyMBean public long getTotalHints(); public boolean getHintedHandoffEnabled(); + public Set getHintedHandoffEnabledByDC(); public void setHintedHandoffEnabled(boolean b); + public void setHintedHandoffEnabledByDCList(String dcs); public int getMaxHintWindow(); public void setMaxHintWindow(int ms); public int getMaxHintsInProgress(); diff --git a/src/java/org/apache/cassandra/tools/NodeCmd.java b/src/java/org/apache/cassandra/tools/NodeCmd.java index f3cd563eac..fb293426e4 100644 --- a/src/java/org/apache/cassandra/tools/NodeCmd.java +++ b/src/java/org/apache/cassandra/tools/NodeCmd.java @@ -1229,7 +1229,10 @@ public class NodeCmd case DISABLEGOSSIP : probe.stopGossiping(); break; case ENABLEGOSSIP : probe.startGossiping(); break; case DISABLEHANDOFF : probe.disableHintedHandoff(); break; - case ENABLEHANDOFF : probe.enableHintedHandoff(); break; + case ENABLEHANDOFF : + if (arguments.length > 0) { probe.enableHintedHandoff(arguments[0]); } + else { probe.enableHintedHandoff(); } + break; case PAUSEHANDOFF : probe.pauseHintsDelivery(); break; case RESUMEHANDOFF : probe.resumeHintsDelivery(); break; case DISABLETHRIFT : probe.stopThriftServer(); break; diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java index ffd620359b..28cafb7d9d 100644 --- a/src/java/org/apache/cassandra/tools/NodeProbe.java +++ b/src/java/org/apache/cassandra/tools/NodeProbe.java @@ -721,6 +721,11 @@ public class NodeProbe spProxy.setHintedHandoffEnabled(true); } + public void enableHintedHandoff(String dcNames) + { + spProxy.setHintedHandoffEnabledByDCList(dcNames); + } + public void pauseHintsDelivery() { hhProxy.pauseHintsDelivery(true);