001/*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.apache.hadoop.hbase.chaos.factories;
019
020import java.util.Arrays;
021import java.util.HashSet;
022import java.util.Set;
023import java.util.concurrent.TimeUnit;
024
025public interface MonkeyConstants {
026
027  String PERIODIC_ACTION1_PERIOD = "sdm.action1.period";
028  String PERIODIC_ACTION2_PERIOD = "sdm.action2.period";
029  String PERIODIC_ACTION4_PERIOD = "sdm.action4.period";
030  String COMPOSITE_ACTION3_PERIOD = "sdm.action3.period";
031  String MOVE_REGIONS_MAX_TIME = "move.regions.max.time";
032  String MOVE_REGIONS_SLEEP_TIME = "move.regions.sleep.time";
033  String MOVE_RANDOM_REGION_SLEEP_TIME = "move.randomregion.sleep.time";
034  String RESTART_RANDOM_RS_SLEEP_TIME = "restart.random.rs.sleep.time";
035  String BATCH_RESTART_RS_SLEEP_TIME = "batch.restart.rs.sleep.time";
036  String BATCH_RESTART_RS_RATIO = "batch.restart.rs.ratio";
037  String RESTART_ACTIVE_MASTER_SLEEP_TIME = "restart.active.master.sleep.time";
038  String ROLLING_BATCH_RESTART_RS_SLEEP_TIME = "rolling.batch.restart.rs.sleep.time";
039  String ROLLING_BATCH_RESTART_RS_RATIO = "rolling.batch.restart.rs.ratio";
040  String RESTART_RS_HOLDING_META_SLEEP_TIME = "restart.rs.holding.meta.sleep.time";
041  String COMPACT_TABLE_ACTION_RATIO = "compact.table.ratio";
042  String COMPACT_RANDOM_REGION_RATIO = "compact.random.region.ratio";
043  String UNBALANCE_CHAOS_EVERY_MS = "unbalance.chaos.period";
044  String UNBALANCE_WAIT_FOR_UNBALANCE_MS = "unbalance.action.wait.period";
045  String UNBALANCE_WAIT_FOR_KILLS_MS = "unbalance.action.kill.period";
046  String UNBALANCE_WAIT_AFTER_BALANCE_MS = "unbalance.action.wait.after.period";
047  String UNBALANCE_KILL_META_RS = "unbalance.action.kill.meta.rs";
048  String DECREASE_HFILE_SIZE_SLEEP_TIME = "decrease.hfile.size.sleep.time";
049  String DECREASE_HFILE_SIZE_MIN_HFILE_SIZE = "decrease.hfile.size.min.hfile.size";
050  String DECREASE_HFILE_SIZE_HFILE_SIZE_JITTER = "decrease.hfile.size.hfile.size.jitter";
051  String RESTART_RANDOM_RS_EXCEPTION_SLEEP_TIME = "restart.random.rs.exception.sleep.time";
052  String RESTART_ACTIVE_NAMENODE_SLEEP_TIME = "restart.active.namenode.sleep.time";
053  String RESTART_RANDOM_DATANODE_SLEEP_TIME = "restart.random.datanode.sleep.time";
054  String RESTART_RANDOM_JOURNALNODE_SLEEP_TIME = "restart.random.journalnode.sleep.time";
055  String RESTART_RANDOM_ZKNODE_SLEEP_TIME = "restart.random.zknode.sleep.time";
056  String GRACEFUL_RESTART_RS_SLEEP_TIME = "graceful.restart.rs.sleep.time";
057  String ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME = "rolling.batch.suspend.rs.sleep.time";
058  String ROLLING_BATCH_SUSPEND_RS_RATIO = "rolling.batch.suspend.rs.ratio";
059  String SKIP_META_RS = "skip.meta.rs";
060  String CPU_LOAD_DURATION = "cpu.load.duration";
061  String CPU_LOAD_PROCESSES = "cpu.load.processes";
062  String NETWORK_ISSUE_COMMAND_TIMEOUT = "network.issue.command.timeout";
063  String NETWORK_ISSUE_DURATION = "network.issueduration";
064  String NETWORK_ISSUE_RATIO = "network.issue.ratio";
065  String NETWORK_ISSUE_DELAY = "network.issue.delay";
066  String NETWORK_ISSUE_INTERFACE = "network.issue.interface";
067  // should be higher than the usual timeout because the target machine might respond slowly
068  String FILL_DISK_COMMAND_TIMEOUT = "fill.disk.command.timeout";
069  String FILL_DISK_PATH = "fill.disk.path";
070  String FILL_DISK_FILE_SIZE = "fill.disk.file.size";
071  String FILL_DISK_ISSUE_DURATION = "fill.disk.issue.duration";
072  String DATA_ISSUE_CHANCE = "data.issue.chance";
073  String SNAPSHOT_TABLE_TTL = "snapshot.table.ttl";
074
075  /**
076   * A Set of prefixes which encompasses all of the configuration properties for the ChaosMonky.
077   */
078  Set<String> MONKEY_CONFIGURATION_KEY_PREFIXES = new HashSet<>(Arrays.asList("sdm.", "move.",
079    "restart.", "batch.", "rolling.", "compact.", "unbalance.", "decrease.", "decrease.",
080    "graceful.", "cpu.", "network.", "fill.", "data.", "snapshot.", "skip"));
081
082  long DEFAULT_PERIODIC_ACTION1_PERIOD = 60 * 1000;
083  long DEFAULT_PERIODIC_ACTION2_PERIOD = 90 * 1000;
084  long DEFAULT_PERIODIC_ACTION4_PERIOD = 90 * 1000;
085  long DEFAULT_COMPOSITE_ACTION3_PERIOD = 150 * 1000;
086  long DEFAULT_MOVE_REGIONS_MAX_TIME = 10 * 60 * 1000;
087  long DEFAULT_MOVE_REGIONS_SLEEP_TIME = 800;
088  long DEFAULT_MOVE_RANDOM_REGION_SLEEP_TIME = 800;
089  long DEFAULT_RESTART_RANDOM_RS_SLEEP_TIME = 60000;
090  long DEFAULT_BATCH_RESTART_RS_SLEEP_TIME = 5000;
091  float DEFAULT_BATCH_RESTART_RS_RATIO = 0.5f;
092  long DEFAULT_RESTART_ACTIVE_MASTER_SLEEP_TIME = 5000;
093  long DEFAULT_ROLLING_BATCH_RESTART_RS_SLEEP_TIME = 5000;
094  float DEFAULT_ROLLING_BATCH_RESTART_RS_RATIO = 1.0f;
095  long DEFAULT_RESTART_RS_HOLDING_META_SLEEP_TIME = 35000;
096  float DEFAULT_COMPACT_TABLE_ACTION_RATIO = 0.5f;
097  float DEFAULT_COMPACT_RANDOM_REGION_RATIO = 0.6f;
098  long DEFAULT_UNBALANCE_CHAOS_EVERY_MS = 65 * 1000;
099  long DEFAULT_UNBALANCE_WAIT_FOR_UNBALANCE_MS = 2 * 1000;
100  long DEFAULT_UNBALANCE_WAIT_FOR_KILLS_MS = 2 * 1000;
101  long DEFAULT_UNBALANCE_WAIT_AFTER_BALANCE_MS = 5 * 1000;
102  boolean DEFAULT_UNBALANCE_KILL_META_RS = true;
103  long DEFAULT_DECREASE_HFILE_SIZE_SLEEP_TIME = 30 * 1000;
104  long DEFAULT_DECREASE_HFILE_SIZE_MIN_HFILE_SIZE = 1024L * 1024 * 1024;
105  float DEFAULT_DECREASE_HFILE_SIZE_HFILE_SIZE_JITTER = 0.001f;
106
107  long DEFAULT_RESTART_RANDOM_RS_EXCEPTION_SLEEP_TIME = TimeUnit.MILLISECONDS.toMillis(60000);
108  long DEFAULT_RESTART_ACTIVE_NAMENODE_SLEEP_TIME = TimeUnit.MILLISECONDS.toMillis(60000);
109  long DEFAULT_RESTART_RANDOM_DATANODE_SLEEP_TIME = TimeUnit.MILLISECONDS.toMillis(60000);
110  long DEFAULT_RESTART_RANDOM_JOURNALNODE_SLEEP_TIME = TimeUnit.MILLISECONDS.toMillis(60000);
111  long DEFAULT_RESTART_RANDOM_ZKNODE_SLEEP_TIME = TimeUnit.MILLISECONDS.toMillis(60000);
112
113  long DEFAULT_GRACEFUL_RESTART_RS_SLEEP_TIME = 5000;
114  long DEFAULT_ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME = 30 * 1000;
115  float DEFAULT_ROLLING_BATCH_SUSPEND_RS_RATIO = 1.0f;
116  boolean DEFAULT_SKIP_META_RS = false;
117  long DEFAULT_CPU_LOAD_DURATION = 5 * 60 * 1000;
118  long DEFAULT_CPU_LOAD_PROCESSES = 2;
119  long DEFAULT_NETWORK_ISSUE_COMMAND_TIMEOUT = 30 * 1000;
120  long DEFAULT_NETWORK_ISSUE_DURATION = 60 * 1000;
121  float DEFAULT_NETWORK_ISSUE_RATIO = 0.1f;
122  long DEFAULT_NETWORK_ISSUE_DELAY = 100;
123  String DEFAULT_NETWORK_ISSUE_INTERFACE = "eth0";
124  long DEFAULT_FILL_DISK_COMMAND_TIMEOUT = 60 * 1000;
125  String DEFAULT_FILL_DISK_PATH = "/tmp";
126  long DEFAULT_FILL_DISK_FILE_SIZE = 0;
127  long DEFAULT_FILL_DISK_ISSUE_DURATION = 5 * 60 * 1000;
128  float DEFAULT_DATA_ISSUE_CHANCE = 0.01f;
129  long DEFAULT_SNAPSHOT_TABLE_TTL = -1L;
130}