diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/DecreaseMaxHFileSizeAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/DecreaseMaxHFileSizeAction.java index 1162af3ce3b6..74aa67ae2406 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/DecreaseMaxHFileSizeAction.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/DecreaseMaxHFileSizeAction.java @@ -28,16 +28,20 @@ import org.slf4j.LoggerFactory; public class DecreaseMaxHFileSizeAction extends Action { - private static final Logger LOG = LoggerFactory.getLogger(DecreaseMaxHFileSizeAction.class); - private static final long minFileSize = 1024 * 1024 * 1024L; + private static final Logger LOG = LoggerFactory.getLogger(DecreaseMaxHFileSizeAction.class); private final long sleepTime; + private final long minHFileSize; + private final float hfileSizeJitter; private final TableName tableName; private Admin admin; - public DecreaseMaxHFileSizeAction(long sleepTime, TableName tableName) { + public DecreaseMaxHFileSizeAction(long sleepTime, long minHFileSize, float hfileSizeJitter, + TableName tableName) { this.sleepTime = sleepTime; + this.minHFileSize = minHFileSize; + this.hfileSizeJitter = hfileSizeJitter; this.tableName = tableName; } @@ -72,7 +76,9 @@ public void perform() throws Exception { // We don't want to go too far below 1gb. // So go to about 1gb +/- 512 on each side. - newValue = Math.max(minFileSize, newValue) - (512 - ThreadLocalRandom.current().nextInt(1024)); + newValue = Math.max(minHFileSize, newValue); + newValue += + newValue * ThreadLocalRandom.current().nextDouble(-hfileSizeJitter, hfileSizeJitter); // Change the table descriptor. TableDescriptor modifiedTable = diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ConfigurableSlowDeterministicMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ConfigurableSlowDeterministicMonkeyFactory.java index e71c04656299..360706c8ebb7 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ConfigurableSlowDeterministicMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ConfigurableSlowDeterministicMonkeyFactory.java @@ -87,7 +87,7 @@ private Action instantiateAction(String actionString) throws Exception { .toArray(String[]::new); LOG.info("About to instantiate action class: {}; With constructor params: {}", className, params); - Class actionClass = (Class) Class.forName(className); + Class actionClass = Class.forName(className).asSubclass(Action.class); Constructor[] constructors = (Constructor[]) actionClass.getDeclaredConstructors(); for (Constructor c : constructors) { diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/DataIssuesMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/DataIssuesMonkeyFactory.java index a778da120e13..ef0d777f37a7 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/DataIssuesMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/DataIssuesMonkeyFactory.java @@ -51,15 +51,4 @@ public ChaosMonkey build() { new PeriodicRandomActionPolicy(action1Period, actions1), new PeriodicRandomActionPolicy(action2Period, actions2)); } - - private void loadProperties() { - action1Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION1_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD + "")); - action2Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION2_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION2_PERIOD + "")); - chanceToAct = Float.parseFloat(this.properties.getProperty(MonkeyConstants.DATA_ISSUE_CHANCE, - MonkeyConstants.DEFAULT_DATA_ISSUE_CHANCE + "")); - } } diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/DistributedIssuesMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/DistributedIssuesMonkeyFactory.java index 4a6191079c04..fcb24e74012a 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/DistributedIssuesMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/DistributedIssuesMonkeyFactory.java @@ -36,21 +36,6 @@ */ public class DistributedIssuesMonkeyFactory extends MonkeyFactory { - private long action1Period; - private long action2Period; - - private long cpuLoadDuration; - private long cpuLoadProcesses; - private long networkIssueTimeout; - private long networkIssueDuration; - private float networkIssueRation; - private long networkIssueDelay; - private String networkIssueInterface; - private long fillDiskTimeout; - private String fillDiskPath; - private long fillDiskFileSize; - private long fillDiskIssueduration; - @Override public ChaosMonkey build() { loadProperties(); @@ -77,43 +62,4 @@ public ChaosMonkey build() { new PeriodicRandomActionPolicy(action1Period, actions1), new PeriodicRandomActionPolicy(action2Period, actions2)); } - - private void loadProperties() { - action1Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION1_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD + "")); - action2Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION2_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION2_PERIOD + "")); - cpuLoadDuration = Long.parseLong(this.properties.getProperty(MonkeyConstants.CPU_LOAD_DURATION, - MonkeyConstants.DEFAULT_CPU_LOAD_DURATION + "")); - cpuLoadProcesses = - Long.parseLong(this.properties.getProperty(MonkeyConstants.CPU_LOAD_PROCESSES, - MonkeyConstants.DEFAULT_CPU_LOAD_PROCESSES + "")); - networkIssueTimeout = - Long.parseLong(this.properties.getProperty(MonkeyConstants.NETWORK_ISSUE_COMMAND_TIMEOUT, - MonkeyConstants.DEFAULT_NETWORK_ISSUE_COMMAND_TIMEOUT + "")); - networkIssueDuration = - Long.parseLong(this.properties.getProperty(MonkeyConstants.NETWORK_ISSUE_DURATION, - MonkeyConstants.DEFAULT_NETWORK_ISSUE_DURATION + "")); - networkIssueRation = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.NETWORK_ISSUE_RATIO, - MonkeyConstants.DEFAULT_NETWORK_ISSUE_RATIO + "")); - networkIssueDelay = - Long.parseLong(this.properties.getProperty(MonkeyConstants.NETWORK_ISSUE_DELAY, - MonkeyConstants.DEFAULT_NETWORK_ISSUE_DELAY + "")); - networkIssueInterface = this.properties.getProperty(MonkeyConstants.NETWORK_ISSUE_INTERFACE, - MonkeyConstants.DEFAULT_NETWORK_ISSUE_INTERFACE + ""); - fillDiskTimeout = - Long.parseLong(this.properties.getProperty(MonkeyConstants.FILL_DISK_COMMAND_TIMEOUT, - MonkeyConstants.DEFAULT_FILL_DISK_COMMAND_TIMEOUT + "")); - fillDiskPath = this.properties.getProperty(MonkeyConstants.FILL_DISK_PATH, - MonkeyConstants.DEFAULT_FILL_DISK_PATH + ""); - fillDiskFileSize = - Long.parseLong(this.properties.getProperty(MonkeyConstants.FILL_DISK_FILE_SIZE, - MonkeyConstants.DEFAULT_FILL_DISK_FILE_SIZE + "")); - fillDiskIssueduration = - Long.parseLong(this.properties.getProperty(MonkeyConstants.FILL_DISK_ISSUE_DURATION, - MonkeyConstants.DEFAULT_FILL_DISK_ISSUE_DURATION + "")); - } } diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MasterKillingMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MasterKillingMonkeyFactory.java index dc9865e73922..9056f6eefaca 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MasterKillingMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MasterKillingMonkeyFactory.java @@ -30,11 +30,6 @@ */ public class MasterKillingMonkeyFactory extends MonkeyFactory { - private long action1Period; - private long action2Period; - - private long restartActiveMasterSleepTime; - @Override public ChaosMonkey build() { loadProperties(); @@ -50,18 +45,4 @@ public ChaosMonkey build() { new PeriodicRandomActionPolicy(action1Period, actions1), new PeriodicRandomActionPolicy(action2Period, actions2)); } - - private void loadProperties() { - - action1Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION1_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD + "")); - action2Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION2_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION2_PERIOD + "")); - restartActiveMasterSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_ACTIVE_MASTER_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_ACTIVE_MASTER_SLEEP_TIME + "")); - } - } diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MobNoKillMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MobNoKillMonkeyFactory.java index b08e94b7b8c0..0221f9803574 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MobNoKillMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MobNoKillMonkeyFactory.java @@ -46,33 +46,29 @@ public class MobNoKillMonkeyFactory extends MonkeyFactory { @Override public ChaosMonkey build() { - Action[] actions1 = new Action[] { - new CompactMobAction(tableName, MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD), - new CompactTableAction(tableName, MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD), - new CompactRandomRegionOfTableAction(tableName, - MonkeyConstants.DEFAULT_COMPACT_RANDOM_REGION_RATIO), + loadProperties(); + Action[] actions1 = new Action[] { new CompactMobAction(tableName, action1Period), + new CompactTableAction(tableName, action1Period), + new CompactRandomRegionOfTableAction(tableName, compactRandomRegionRatio), new FlushTableAction(tableName), new FlushRandomRegionOfTableAction(tableName), new MoveRandomRegionOfTableAction(tableName) }; Action[] actions2 = new Action[] { new SplitRandomRegionOfTableAction(tableName), new MergeRandomAdjacentRegionsOfTableAction(tableName), - new SnapshotTableAction(tableName, MonkeyConstants.DEFAULT_SNAPSHOT_TABLE_TTL), - new AddColumnAction(tableName), new RemoveColumnAction(tableName, columnFamilies), - new ChangeEncodingAction(tableName), new ChangeCompressionAction(tableName), - new ChangeBloomFilterAction(tableName), new ChangeVersionsAction(tableName) }; + new SnapshotTableAction(tableName, snapshotTableTtl), new AddColumnAction(tableName), + new RemoveColumnAction(tableName, columnFamilies), new ChangeEncodingAction(tableName), + new ChangeCompressionAction(tableName), new ChangeBloomFilterAction(tableName), + new ChangeVersionsAction(tableName) }; Action[] actions3 = new Action[] { - new MoveRegionsOfTableAction(MonkeyConstants.DEFAULT_MOVE_REGIONS_SLEEP_TIME, - MonkeyConstants.DEFAULT_MOVE_REGIONS_MAX_TIME, tableName), - new MoveRandomRegionOfTableAction(MonkeyConstants.DEFAULT_RESTART_ACTIVE_MASTER_SLEEP_TIME, - tableName), }; + new MoveRegionsOfTableAction(moveRegionsSleepTime, moveRegionsMaxTime, tableName), + new MoveRandomRegionOfTableAction(restartActiveMasterSleepTime, tableName) }; Action[] actions4 = new Action[] { new DumpClusterStatusAction() }; return new PolicyBasedChaosMonkey(properties, util, - new TwoConcurrentActionPolicy(MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD, actions1, - actions2), - new PeriodicRandomActionPolicy(MonkeyConstants.DEFAULT_PERIODIC_ACTION2_PERIOD, actions3), - new PeriodicRandomActionPolicy(MonkeyConstants.DEFAULT_PERIODIC_ACTION4_PERIOD, actions4)); + new TwoConcurrentActionPolicy(action1Period, actions1, actions2), + new PeriodicRandomActionPolicy(action2Period, actions3), + new PeriodicRandomActionPolicy(action4Period, actions4)); } } diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MobSlowDeterministicMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MobSlowDeterministicMonkeyFactory.java index ef8c307fad8f..47dc7f127d93 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MobSlowDeterministicMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MobSlowDeterministicMonkeyFactory.java @@ -51,27 +51,8 @@ */ public class MobSlowDeterministicMonkeyFactory extends MonkeyFactory { - private long action1Period; - private long action2Period; - private long action3Period; - private long action4Period; - private long moveRegionsMaxTime; - private long moveRegionsSleepTime; - private long moveRandomRegionSleepTime; - private long restartRandomRSSleepTime; - private long batchRestartRSSleepTime; - private float batchRestartRSRatio; - private long restartActiveMasterSleepTime; - private long rollingBatchRestartRSSleepTime; - private float rollingBatchRestartRSRatio; - private long restartRsHoldingMetaSleepTime; - private float compactTableRatio; - private float compactRandomRegionRatio; - private long snapshotTableTtl; - @Override public ChaosMonkey build() { - loadProperties(); // Actions such as compact/flush a table/region, // move one region around. They are not so destructive, @@ -112,56 +93,4 @@ public ChaosMonkey build() { new PeriodicRandomActionPolicy(action3Period, actions3)), new PeriodicRandomActionPolicy(action4Period, actions4)); } - - private void loadProperties() { - - action1Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION1_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD + "")); - action2Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION2_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION2_PERIOD + "")); - action3Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.COMPOSITE_ACTION3_PERIOD, - MonkeyConstants.DEFAULT_COMPOSITE_ACTION3_PERIOD + "")); - action4Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION4_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION4_PERIOD + "")); - moveRegionsMaxTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.MOVE_REGIONS_MAX_TIME, - MonkeyConstants.DEFAULT_MOVE_REGIONS_MAX_TIME + "")); - moveRegionsSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.MOVE_REGIONS_SLEEP_TIME, - MonkeyConstants.DEFAULT_MOVE_REGIONS_SLEEP_TIME + "")); - moveRandomRegionSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.MOVE_RANDOM_REGION_SLEEP_TIME, - MonkeyConstants.DEFAULT_MOVE_RANDOM_REGION_SLEEP_TIME + "")); - restartRandomRSSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_RANDOM_RS_SLEEP_TIME + "")); - batchRestartRSSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.BATCH_RESTART_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_BATCH_RESTART_RS_SLEEP_TIME + "")); - restartActiveMasterSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_ACTIVE_MASTER_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_ACTIVE_MASTER_SLEEP_TIME + "")); - rollingBatchRestartRSSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_RESTART_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_ROLLING_BATCH_RESTART_RS_SLEEP_TIME + "")); - rollingBatchRestartRSRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_RESTART_RS_RATIO, - MonkeyConstants.DEFAULT_ROLLING_BATCH_RESTART_RS_RATIO + "")); - restartRsHoldingMetaSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RS_HOLDING_META_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_RS_HOLDING_META_SLEEP_TIME + "")); - compactTableRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.COMPACT_TABLE_ACTION_RATIO, - MonkeyConstants.DEFAULT_COMPACT_TABLE_ACTION_RATIO + "")); - compactRandomRegionRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.COMPACT_RANDOM_REGION_RATIO, - MonkeyConstants.DEFAULT_COMPACT_RANDOM_REGION_RATIO + "")); - snapshotTableTtl = - Long.parseLong(this.properties.getProperty(MonkeyConstants.SNAPSHOT_TABLE_TTL, - MonkeyConstants.DEFAULT_SNAPSHOT_TABLE_TTL + "")); - } } diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyConstants.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyConstants.java index 3fda08447290..031b8059350e 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyConstants.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyConstants.java @@ -46,6 +46,8 @@ public interface MonkeyConstants { String UNBALANCE_WAIT_AFTER_BALANCE_MS = "unbalance.action.wait.after.period"; String UNBALANCE_KILL_META_RS = "unbalance.action.kill.meta.rs"; String DECREASE_HFILE_SIZE_SLEEP_TIME = "decrease.hfile.size.sleep.time"; + String DECREASE_HFILE_SIZE_MIN_HFILE_SIZE = "decrease.hfile.size.min.hfile.size"; + String DECREASE_HFILE_SIZE_HFILE_SIZE_JITTER = "decrease.hfile.size.hfile.size.jitter"; String RESTART_RANDOM_RS_EXCEPTION_SLEEP_TIME = "restart.random.rs.exception.sleep.time"; String RESTART_ACTIVE_NAMENODE_SLEEP_TIME = "restart.active.namenode.sleep.time"; String RESTART_RANDOM_DATANODE_SLEEP_TIME = "restart.random.datanode.sleep.time"; @@ -99,6 +101,8 @@ public interface MonkeyConstants { long DEFAULT_UNBALANCE_WAIT_AFTER_BALANCE_MS = 5 * 1000; boolean DEFAULT_UNBALANCE_KILL_META_RS = true; long DEFAULT_DECREASE_HFILE_SIZE_SLEEP_TIME = 30 * 1000; + long DEFAULT_DECREASE_HFILE_SIZE_MIN_HFILE_SIZE = 1024L * 1024 * 1024; + float DEFAULT_DECREASE_HFILE_SIZE_HFILE_SIZE_JITTER = 0.001f; long DEFAULT_RESTART_RANDOM_RS_EXCEPTION_SLEEP_TIME = TimeUnit.MILLISECONDS.toMillis(60000); long DEFAULT_RESTART_ACTIVE_NAMENODE_SLEEP_TIME = TimeUnit.MILLISECONDS.toMillis(60000); diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.java index b35234dbd19b..b4d47ed0a362 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.java @@ -40,6 +40,58 @@ public abstract class MonkeyFactory { protected IntegrationTestingUtility util; protected Properties properties = new Properties(); + protected long action1Period; + protected long action2Period; + protected long action3Period; + protected long action4Period; + protected long moveRegionsMaxTime; + protected long moveRegionsSleepTime; + protected long moveRandomRegionSleepTime; + protected long restartRandomRSSleepTime; + protected long batchRestartRSSleepTime; + protected float batchRestartRSRatio; + protected long restartActiveMasterSleepTime; + protected long rollingBatchRestartRSSleepTime; + protected float rollingBatchRestartRSRatio; + protected long restartRsHoldingMetaSleepTime; + protected float compactTableRatio; + protected float compactRandomRegionRatio; + protected long decreaseHFileSizeSleepTime; + protected long decreaseHFileSizeMinHFileSize; + protected float decreaseHFileSizeHFileSizeJitter; + protected long gracefulRollingRestartTSSLeepTime; + protected long rollingBatchSuspendRSSleepTime; + protected float rollingBatchSuspendRSRatio; + protected long snapshotTableTtl; + + protected long cpuLoadDuration; + protected long cpuLoadProcesses; + protected long networkIssueTimeout; + protected long networkIssueDuration; + protected float networkIssueRation; + protected long networkIssueDelay; + protected String networkIssueInterface; + protected long fillDiskTimeout; + protected String fillDiskPath; + protected long fillDiskFileSize; + protected long fillDiskIssueduration; + + protected long restartRandomRsExceptMetaSleepTime; + protected long restartActiveNameNodeSleepTime; + protected long restartRandomDataNodeSleepTime; + protected long restartRandomJournalNodeSleepTime; + protected long restartRandomZKNodeSleepTime; + + /** + * How often to introduce the chaos. If too frequent, sequence of kills on minicluster can cause + * test to fail when Put runs out of retries. + */ + protected long chaosEveryMilliSec; + protected long waitForUnbalanceMilliSec; + protected long waitForKillMilliSec; + protected long waitAfterBalanceMilliSec; + protected boolean killMetaRs; + public MonkeyFactory setTableName(TableName tableName) { this.tableName = tableName; return this; @@ -62,6 +114,141 @@ public MonkeyFactory setProperties(Properties props) { return this; } + protected final void loadProperties() { + action1Period = + Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION1_PERIOD, + MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD + "")); + action2Period = + Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION2_PERIOD, + MonkeyConstants.DEFAULT_PERIODIC_ACTION2_PERIOD + "")); + action3Period = + Long.parseLong(this.properties.getProperty(MonkeyConstants.COMPOSITE_ACTION3_PERIOD, + MonkeyConstants.DEFAULT_COMPOSITE_ACTION3_PERIOD + "")); + action4Period = + Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION4_PERIOD, + MonkeyConstants.DEFAULT_PERIODIC_ACTION4_PERIOD + "")); + moveRegionsMaxTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.MOVE_REGIONS_MAX_TIME, + MonkeyConstants.DEFAULT_MOVE_REGIONS_MAX_TIME + "")); + moveRegionsSleepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.MOVE_REGIONS_SLEEP_TIME, + MonkeyConstants.DEFAULT_MOVE_REGIONS_SLEEP_TIME + "")); + moveRandomRegionSleepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.MOVE_RANDOM_REGION_SLEEP_TIME, + MonkeyConstants.DEFAULT_MOVE_RANDOM_REGION_SLEEP_TIME + "")); + restartRandomRSSleepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_RS_SLEEP_TIME, + MonkeyConstants.DEFAULT_RESTART_RANDOM_RS_SLEEP_TIME + "")); + batchRestartRSSleepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.BATCH_RESTART_RS_SLEEP_TIME, + MonkeyConstants.DEFAULT_BATCH_RESTART_RS_SLEEP_TIME + "")); + batchRestartRSRatio = + Float.parseFloat(this.properties.getProperty(MonkeyConstants.BATCH_RESTART_RS_RATIO, + MonkeyConstants.DEFAULT_BATCH_RESTART_RS_RATIO + "")); + restartActiveMasterSleepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_ACTIVE_MASTER_SLEEP_TIME, + MonkeyConstants.DEFAULT_RESTART_ACTIVE_MASTER_SLEEP_TIME + "")); + rollingBatchRestartRSSleepTime = Long + .parseLong(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_RESTART_RS_SLEEP_TIME, + MonkeyConstants.DEFAULT_ROLLING_BATCH_RESTART_RS_SLEEP_TIME + "")); + rollingBatchRestartRSRatio = + Float.parseFloat(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_RESTART_RS_RATIO, + MonkeyConstants.DEFAULT_ROLLING_BATCH_RESTART_RS_RATIO + "")); + restartRsHoldingMetaSleepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RS_HOLDING_META_SLEEP_TIME, + MonkeyConstants.DEFAULT_RESTART_RS_HOLDING_META_SLEEP_TIME + "")); + compactTableRatio = + Float.parseFloat(this.properties.getProperty(MonkeyConstants.COMPACT_TABLE_ACTION_RATIO, + MonkeyConstants.DEFAULT_COMPACT_TABLE_ACTION_RATIO + "")); + compactRandomRegionRatio = + Float.parseFloat(this.properties.getProperty(MonkeyConstants.COMPACT_RANDOM_REGION_RATIO, + MonkeyConstants.DEFAULT_COMPACT_RANDOM_REGION_RATIO + "")); + decreaseHFileSizeSleepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.DECREASE_HFILE_SIZE_SLEEP_TIME, + MonkeyConstants.DEFAULT_DECREASE_HFILE_SIZE_SLEEP_TIME + "")); + decreaseHFileSizeMinHFileSize = + Long.parseLong(this.properties.getProperty(MonkeyConstants.DECREASE_HFILE_SIZE_MIN_HFILE_SIZE, + MonkeyConstants.DEFAULT_DECREASE_HFILE_SIZE_MIN_HFILE_SIZE + "")); + decreaseHFileSizeHFileSizeJitter = Float + .parseFloat(this.properties.getProperty(MonkeyConstants.DECREASE_HFILE_SIZE_HFILE_SIZE_JITTER, + MonkeyConstants.DEFAULT_DECREASE_HFILE_SIZE_HFILE_SIZE_JITTER + "")); + gracefulRollingRestartTSSLeepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.GRACEFUL_RESTART_RS_SLEEP_TIME, + MonkeyConstants.DEFAULT_GRACEFUL_RESTART_RS_SLEEP_TIME + "")); + rollingBatchSuspendRSSleepTime = Long + .parseLong(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME, + MonkeyConstants.DEFAULT_ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME + "")); + rollingBatchSuspendRSRatio = + Float.parseFloat(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_SUSPEND_RS_RATIO, + MonkeyConstants.DEFAULT_ROLLING_BATCH_SUSPEND_RS_RATIO + "")); + snapshotTableTtl = + Long.parseLong(this.properties.getProperty(MonkeyConstants.SNAPSHOT_TABLE_TTL, + MonkeyConstants.DEFAULT_SNAPSHOT_TABLE_TTL + "")); + + cpuLoadDuration = Long.parseLong(this.properties.getProperty(MonkeyConstants.CPU_LOAD_DURATION, + MonkeyConstants.DEFAULT_CPU_LOAD_DURATION + "")); + cpuLoadProcesses = + Long.parseLong(this.properties.getProperty(MonkeyConstants.CPU_LOAD_PROCESSES, + MonkeyConstants.DEFAULT_CPU_LOAD_PROCESSES + "")); + networkIssueTimeout = + Long.parseLong(this.properties.getProperty(MonkeyConstants.NETWORK_ISSUE_COMMAND_TIMEOUT, + MonkeyConstants.DEFAULT_NETWORK_ISSUE_COMMAND_TIMEOUT + "")); + networkIssueDuration = + Long.parseLong(this.properties.getProperty(MonkeyConstants.NETWORK_ISSUE_DURATION, + MonkeyConstants.DEFAULT_NETWORK_ISSUE_DURATION + "")); + networkIssueRation = + Float.parseFloat(this.properties.getProperty(MonkeyConstants.NETWORK_ISSUE_RATIO, + MonkeyConstants.DEFAULT_NETWORK_ISSUE_RATIO + "")); + networkIssueDelay = + Long.parseLong(this.properties.getProperty(MonkeyConstants.NETWORK_ISSUE_DELAY, + MonkeyConstants.DEFAULT_NETWORK_ISSUE_DELAY + "")); + networkIssueInterface = this.properties.getProperty(MonkeyConstants.NETWORK_ISSUE_INTERFACE, + MonkeyConstants.DEFAULT_NETWORK_ISSUE_INTERFACE + ""); + fillDiskTimeout = + Long.parseLong(this.properties.getProperty(MonkeyConstants.FILL_DISK_COMMAND_TIMEOUT, + MonkeyConstants.DEFAULT_FILL_DISK_COMMAND_TIMEOUT + "")); + fillDiskPath = this.properties.getProperty(MonkeyConstants.FILL_DISK_PATH, + MonkeyConstants.DEFAULT_FILL_DISK_PATH + ""); + fillDiskFileSize = + Long.parseLong(this.properties.getProperty(MonkeyConstants.FILL_DISK_FILE_SIZE, + MonkeyConstants.DEFAULT_FILL_DISK_FILE_SIZE + "")); + fillDiskIssueduration = + Long.parseLong(this.properties.getProperty(MonkeyConstants.FILL_DISK_ISSUE_DURATION, + MonkeyConstants.DEFAULT_FILL_DISK_ISSUE_DURATION + "")); + + restartRandomRsExceptMetaSleepTime = Long + .parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_RS_EXCEPTION_SLEEP_TIME, + MonkeyConstants.DEFAULT_RESTART_RANDOM_RS_EXCEPTION_SLEEP_TIME + "")); + restartActiveNameNodeSleepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_ACTIVE_NAMENODE_SLEEP_TIME, + MonkeyConstants.DEFAULT_RESTART_ACTIVE_NAMENODE_SLEEP_TIME + "")); + restartRandomDataNodeSleepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_DATANODE_SLEEP_TIME, + MonkeyConstants.DEFAULT_RESTART_RANDOM_DATANODE_SLEEP_TIME + "")); + restartRandomJournalNodeSleepTime = Long + .parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_JOURNALNODE_SLEEP_TIME, + MonkeyConstants.DEFAULT_RESTART_RANDOM_JOURNALNODE_SLEEP_TIME + "")); + restartRandomZKNodeSleepTime = + Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_ZKNODE_SLEEP_TIME, + MonkeyConstants.DEFAULT_RESTART_RANDOM_ZKNODE_SLEEP_TIME + "")); + + chaosEveryMilliSec = + Long.parseLong(this.properties.getProperty(MonkeyConstants.UNBALANCE_CHAOS_EVERY_MS, + MonkeyConstants.DEFAULT_UNBALANCE_CHAOS_EVERY_MS + "")); + waitForUnbalanceMilliSec = + Long.parseLong(this.properties.getProperty(MonkeyConstants.UNBALANCE_WAIT_FOR_UNBALANCE_MS, + MonkeyConstants.DEFAULT_UNBALANCE_WAIT_FOR_UNBALANCE_MS + "")); + waitForKillMilliSec = + Long.parseLong(this.properties.getProperty(MonkeyConstants.UNBALANCE_WAIT_FOR_KILLS_MS, + MonkeyConstants.DEFAULT_UNBALANCE_WAIT_FOR_KILLS_MS + "")); + waitAfterBalanceMilliSec = + Long.parseLong(this.properties.getProperty(MonkeyConstants.UNBALANCE_WAIT_AFTER_BALANCE_MS, + MonkeyConstants.DEFAULT_UNBALANCE_WAIT_AFTER_BALANCE_MS + "")); + killMetaRs = + Boolean.parseBoolean(this.properties.getProperty(MonkeyConstants.UNBALANCE_KILL_META_RS, + MonkeyConstants.DEFAULT_UNBALANCE_KILL_META_RS + "")); + } + public abstract ChaosMonkey build(); public static final String CALM = "calm"; @@ -96,12 +283,12 @@ public MonkeyFactory setProperties(Properties props) { public static MonkeyFactory getFactory(String factoryName) { MonkeyFactory fact = FACTORIES.get(factoryName); if (fact == null && factoryName != null && !factoryName.isEmpty()) { - Class klass = null; + Class klass = null; try { - klass = Class.forName(factoryName); + klass = Class.forName(factoryName).asSubclass(MonkeyFactory.class); if (klass != null) { LOG.info("Instantiating {}", klass.getName()); - fact = (MonkeyFactory) ReflectionUtils.newInstance(klass); + fact = ReflectionUtils.newInstance(klass); } } catch (Exception e) { LOG.error("Error trying to create " + factoryName + " could not load it by class name"); diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ServerAndDependenciesKillingMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ServerAndDependenciesKillingMonkeyFactory.java index 28dce4813148..1c2795d40733 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ServerAndDependenciesKillingMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ServerAndDependenciesKillingMonkeyFactory.java @@ -42,18 +42,6 @@ */ public class ServerAndDependenciesKillingMonkeyFactory extends MonkeyFactory { - private long restartRandomRsExceptMetaSleepTime; - private long restartActiveMasterSleepTime; - private long rollingBatchRestartRSSleepTime; - private long restartActiveNameNodeSleepTime; - private long restartRandomDataNodeSleepTime; - private long restartRandomJournalNodeSleepTime; - private long restartRandomZKNodeSleepTime; - private long gracefulRollingRestartTSSLeepTime; - private long rollingBatchSuspendRSSleepTime; - private float rollingBatchSuspendtRSRatio; - private long action1Period; - @Override public ChaosMonkey build() { loadProperties(); @@ -72,7 +60,7 @@ public ChaosMonkey build() { new RestartRandomZKNodeAction(restartRandomZKNodeSleepTime), new GracefulRollingRestartRsAction(gracefulRollingRestartTSSLeepTime), new RollingBatchSuspendResumeRsAction(rollingBatchSuspendRSSleepTime, - rollingBatchSuspendtRSRatio) + rollingBatchSuspendRSRatio) }; // @formatter:on @@ -85,40 +73,4 @@ public ChaosMonkey build() { new PeriodicRandomActionPolicy(action1Period, actions1)), new PeriodicRandomActionPolicy(action1Period, actions2)); } - - private void loadProperties() { - restartRandomRsExceptMetaSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_RS_EXCEPTION_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_RANDOM_RS_EXCEPTION_SLEEP_TIME + "")); - restartActiveMasterSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_ACTIVE_MASTER_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_ACTIVE_MASTER_SLEEP_TIME + "")); - rollingBatchRestartRSSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_RESTART_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_ROLLING_BATCH_RESTART_RS_SLEEP_TIME + "")); - restartActiveNameNodeSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_ACTIVE_NAMENODE_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_ACTIVE_NAMENODE_SLEEP_TIME + "")); - restartRandomDataNodeSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_DATANODE_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_RANDOM_DATANODE_SLEEP_TIME + "")); - restartRandomJournalNodeSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_JOURNALNODE_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_RANDOM_JOURNALNODE_SLEEP_TIME + "")); - restartRandomZKNodeSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_ZKNODE_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_RANDOM_ZKNODE_SLEEP_TIME + "")); - gracefulRollingRestartTSSLeepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.GRACEFUL_RESTART_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_GRACEFUL_RESTART_RS_SLEEP_TIME + "")); - rollingBatchSuspendRSSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME + "")); - rollingBatchSuspendtRSRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_SUSPEND_RS_RATIO, - MonkeyConstants.DEFAULT_ROLLING_BATCH_SUSPEND_RS_RATIO + "")); - action1Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION1_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD + "")); - } } diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ServerKillingMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ServerKillingMonkeyFactory.java index 7b58d217040c..21b638c6dcee 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ServerKillingMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/ServerKillingMonkeyFactory.java @@ -37,14 +37,6 @@ */ public class ServerKillingMonkeyFactory extends MonkeyFactory { - private long restartRandomRsExceptMetaSleepTime; - private long restartActiveMasterSleepTime; - private long rollingBatchRestartRSSleepTime; - private long gracefulRollingRestartTSSLeepTime; - private long rollingBatchSuspendRSSleepTime; - private float rollingBatchSuspendtRSRatio; - private long action1Period; - @Override public ChaosMonkey build() { loadProperties(); @@ -59,7 +51,7 @@ public ChaosMonkey build() { new ForceBalancerAction(), new GracefulRollingRestartRsAction(gracefulRollingRestartTSSLeepTime), new RollingBatchSuspendResumeRsAction(rollingBatchSuspendRSSleepTime, - rollingBatchSuspendtRSRatio) + rollingBatchSuspendRSRatio) }; // @formatter:on @@ -71,28 +63,4 @@ public ChaosMonkey build() { new PeriodicRandomActionPolicy(action1Period, actions1)), new PeriodicRandomActionPolicy(action1Period, actions2)); } - - private void loadProperties() { - restartRandomRsExceptMetaSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_RS_EXCEPTION_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_RANDOM_RS_EXCEPTION_SLEEP_TIME + "")); - restartActiveMasterSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_ACTIVE_MASTER_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_ACTIVE_MASTER_SLEEP_TIME + "")); - rollingBatchRestartRSSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_RESTART_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_ROLLING_BATCH_RESTART_RS_SLEEP_TIME + "")); - gracefulRollingRestartTSSLeepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.GRACEFUL_RESTART_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_GRACEFUL_RESTART_RS_SLEEP_TIME + "")); - rollingBatchSuspendRSSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME + "")); - rollingBatchSuspendtRSRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_SUSPEND_RS_RATIO, - MonkeyConstants.DEFAULT_ROLLING_BATCH_SUSPEND_RS_RATIO + "")); - action1Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION1_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD + "")); - } } diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/SlowDeterministicMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/SlowDeterministicMonkeyFactory.java index 565577683435..30ed5741a83b 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/SlowDeterministicMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/SlowDeterministicMonkeyFactory.java @@ -51,27 +51,6 @@ import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy; public class SlowDeterministicMonkeyFactory extends MonkeyFactory { - private long action1Period; - private long action2Period; - private long action3Period; - private long action4Period; - private long moveRegionsMaxTime; - private long moveRegionsSleepTime; - private long moveRandomRegionSleepTime; - private long restartRandomRSSleepTime; - private long batchRestartRSSleepTime; - private float batchRestartRSRatio; - private long restartActiveMasterSleepTime; - private long rollingBatchRestartRSSleepTime; - private float rollingBatchRestartRSRatio; - private long restartRsHoldingMetaSleepTime; - private float compactTableRatio; - private float compactRandomRegionRatio; - private long decreaseHFileSizeSleepTime; - private long gracefulRollingRestartTSSLeepTime; - private long rollingBatchSuspendRSSleepTime; - private float rollingBatchSuspendtRSRatio; - private long snapshotTableTtl; protected Action[] getLightWeightedActions() { return new Action[] { new CompactTableAction(tableName, compactTableRatio), @@ -98,11 +77,12 @@ protected Action[] getHeavyWeightedActions() { new RestartActiveMasterAction(restartActiveMasterSleepTime), new RollingBatchRestartRsAction(rollingBatchRestartRSSleepTime, rollingBatchRestartRSRatio), new RestartRsHoldingMetaAction(restartRsHoldingMetaSleepTime), - new DecreaseMaxHFileSizeAction(decreaseHFileSizeSleepTime, tableName), + new DecreaseMaxHFileSizeAction(decreaseHFileSizeSleepTime, decreaseHFileSizeMinHFileSize, + decreaseHFileSizeHFileSizeJitter, tableName), new SplitAllRegionOfTableAction(tableName), new GracefulRollingRestartRsAction(gracefulRollingRestartTSSLeepTime), new RollingBatchSuspendResumeRsAction(rollingBatchSuspendRSSleepTime, - rollingBatchSuspendtRSRatio) }; + rollingBatchSuspendRSRatio) }; } @Override @@ -131,71 +111,4 @@ public ChaosMonkey build() { new PeriodicRandomActionPolicy(action3Period, actions3)), new PeriodicRandomActionPolicy(action4Period, actions4)); } - - private void loadProperties() { - - action1Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION1_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD + "")); - action2Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION2_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION2_PERIOD + "")); - action3Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.COMPOSITE_ACTION3_PERIOD, - MonkeyConstants.DEFAULT_COMPOSITE_ACTION3_PERIOD + "")); - action4Period = - Long.parseLong(this.properties.getProperty(MonkeyConstants.PERIODIC_ACTION4_PERIOD, - MonkeyConstants.DEFAULT_PERIODIC_ACTION4_PERIOD + "")); - moveRegionsMaxTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.MOVE_REGIONS_MAX_TIME, - MonkeyConstants.DEFAULT_MOVE_REGIONS_MAX_TIME + "")); - moveRegionsSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.MOVE_REGIONS_SLEEP_TIME, - MonkeyConstants.DEFAULT_MOVE_REGIONS_SLEEP_TIME + "")); - moveRandomRegionSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.MOVE_RANDOM_REGION_SLEEP_TIME, - MonkeyConstants.DEFAULT_MOVE_RANDOM_REGION_SLEEP_TIME + "")); - restartRandomRSSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RANDOM_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_RANDOM_RS_SLEEP_TIME + "")); - batchRestartRSSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.BATCH_RESTART_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_BATCH_RESTART_RS_SLEEP_TIME + "")); - batchRestartRSRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.BATCH_RESTART_RS_RATIO, - MonkeyConstants.DEFAULT_BATCH_RESTART_RS_RATIO + "")); - restartActiveMasterSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_ACTIVE_MASTER_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_ACTIVE_MASTER_SLEEP_TIME + "")); - rollingBatchRestartRSSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_RESTART_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_ROLLING_BATCH_RESTART_RS_SLEEP_TIME + "")); - rollingBatchRestartRSRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_RESTART_RS_RATIO, - MonkeyConstants.DEFAULT_ROLLING_BATCH_RESTART_RS_RATIO + "")); - restartRsHoldingMetaSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.RESTART_RS_HOLDING_META_SLEEP_TIME, - MonkeyConstants.DEFAULT_RESTART_RS_HOLDING_META_SLEEP_TIME + "")); - compactTableRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.COMPACT_TABLE_ACTION_RATIO, - MonkeyConstants.DEFAULT_COMPACT_TABLE_ACTION_RATIO + "")); - compactRandomRegionRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.COMPACT_RANDOM_REGION_RATIO, - MonkeyConstants.DEFAULT_COMPACT_RANDOM_REGION_RATIO + "")); - decreaseHFileSizeSleepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.DECREASE_HFILE_SIZE_SLEEP_TIME, - MonkeyConstants.DEFAULT_DECREASE_HFILE_SIZE_SLEEP_TIME + "")); - gracefulRollingRestartTSSLeepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.GRACEFUL_RESTART_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_GRACEFUL_RESTART_RS_SLEEP_TIME + "")); - rollingBatchSuspendRSSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME + "")); - rollingBatchSuspendtRSRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_SUSPEND_RS_RATIO, - MonkeyConstants.DEFAULT_ROLLING_BATCH_SUSPEND_RS_RATIO + "")); - snapshotTableTtl = - Long.parseLong(this.properties.getProperty(MonkeyConstants.SNAPSHOT_TABLE_TTL, - MonkeyConstants.DEFAULT_SNAPSHOT_TABLE_TTL + "")); - } } diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/StressAssignmentManagerMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/StressAssignmentManagerMonkeyFactory.java index d066b775004a..4ab26d81739c 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/StressAssignmentManagerMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/StressAssignmentManagerMonkeyFactory.java @@ -46,10 +46,6 @@ public class StressAssignmentManagerMonkeyFactory extends MonkeyFactory { - private long gracefulRollingRestartTSSLeepTime; - private long rollingBatchSuspendRSSleepTime; - private float rollingBatchSuspendtRSRatio; - @Override public ChaosMonkey build() { loadProperties(); @@ -63,41 +59,26 @@ public ChaosMonkey build() { Action[] actions2 = new Action[] { new SplitRandomRegionOfTableAction(tableName), new MergeRandomAdjacentRegionsOfTableAction(tableName), new AddColumnAction(tableName), new RemoveColumnAction(tableName, columnFamilies), - new MoveRegionsOfTableAction(MonkeyConstants.DEFAULT_MOVE_REGIONS_SLEEP_TIME, 1600, - tableName), - new MoveRandomRegionOfTableAction(MonkeyConstants.DEFAULT_MOVE_RANDOM_REGION_SLEEP_TIME, - tableName), - new RestartRandomRsAction(MonkeyConstants.DEFAULT_RESTART_RANDOM_RS_SLEEP_TIME), - new BatchRestartRsAction(MonkeyConstants.DEFAULT_BATCH_RESTART_RS_SLEEP_TIME, 0.5f), - new RollingBatchRestartRsAction(MonkeyConstants.DEFAULT_ROLLING_BATCH_RESTART_RS_SLEEP_TIME, - 1.0f), - new RestartRsHoldingMetaAction(MonkeyConstants.DEFAULT_RESTART_RS_HOLDING_META_SLEEP_TIME), + new MoveRegionsOfTableAction(moveRegionsSleepTime, 1600, tableName), + new MoveRandomRegionOfTableAction(moveRandomRegionSleepTime, tableName), + new RestartRandomRsAction(restartRandomRSSleepTime), + new BatchRestartRsAction(batchRestartRSSleepTime, rollingBatchSuspendRSRatio), + new RollingBatchRestartRsAction(rollingBatchRestartRSSleepTime, rollingBatchRestartRSRatio), + new RestartRsHoldingMetaAction(restartRsHoldingMetaSleepTime), new ChangeSplitPolicyAction(tableName), new SplitAllRegionOfTableAction(tableName), - new DecreaseMaxHFileSizeAction(MonkeyConstants.DEFAULT_DECREASE_HFILE_SIZE_SLEEP_TIME, - tableName), + new DecreaseMaxHFileSizeAction(decreaseHFileSizeSleepTime, decreaseHFileSizeMinHFileSize, + decreaseHFileSizeHFileSizeJitter, tableName), new GracefulRollingRestartRsAction(gracefulRollingRestartTSSLeepTime), new RollingBatchSuspendResumeRsAction(rollingBatchSuspendRSSleepTime, - rollingBatchSuspendtRSRatio) }; + rollingBatchSuspendRSRatio) }; // Action to log more info for debugging Action[] actions3 = new Action[] { new DumpClusterStatusAction() }; return new PolicyBasedChaosMonkey(properties, util, - new PeriodicRandomActionPolicy(90 * 1000, actions1), - new CompositeSequentialPolicy(new DoActionsOncePolicy(90 * 1000, actions2), - new PeriodicRandomActionPolicy(90 * 1000, actions2)), - new PeriodicRandomActionPolicy(90 * 1000, actions3)); - } - - private void loadProperties() { - gracefulRollingRestartTSSLeepTime = - Long.parseLong(this.properties.getProperty(MonkeyConstants.GRACEFUL_RESTART_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_GRACEFUL_RESTART_RS_SLEEP_TIME + "")); - rollingBatchSuspendRSSleepTime = Long - .parseLong(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME, - MonkeyConstants.DEFAULT_ROLLING_BATCH_SUSPEND_RS_SLEEP_TIME + "")); - rollingBatchSuspendtRSRatio = - Float.parseFloat(this.properties.getProperty(MonkeyConstants.ROLLING_BATCH_SUSPEND_RS_RATIO, - MonkeyConstants.DEFAULT_ROLLING_BATCH_SUSPEND_RS_RATIO + "")); + new PeriodicRandomActionPolicy(action1Period, actions1), + new CompositeSequentialPolicy(new DoActionsOncePolicy(action2Period, actions2), + new PeriodicRandomActionPolicy(action2Period, actions2)), + new PeriodicRandomActionPolicy(action3Period, actions3)); } } diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/UnbalanceMonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/UnbalanceMonkeyFactory.java index c40bf8c5ffb4..a6da87ea5d35 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/UnbalanceMonkeyFactory.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/UnbalanceMonkeyFactory.java @@ -24,15 +24,6 @@ import org.apache.hadoop.hbase.chaos.policies.Policy; public class UnbalanceMonkeyFactory extends MonkeyFactory { - /** - * How often to introduce the chaos. If too frequent, sequence of kills on minicluster can cause - * test to fail when Put runs out of retries. - */ - private long chaosEveryMilliSec; - private long waitForUnbalanceMilliSec; - private long waitForKillMilliSec; - private long waitAfterBalanceMilliSec; - private boolean killMetaRs; @Override public ChaosMonkey build() { @@ -43,22 +34,4 @@ public ChaosMonkey build() { return new PolicyBasedChaosMonkey(properties, util, chaosPolicy); } - - private void loadProperties() { - chaosEveryMilliSec = - Long.parseLong(this.properties.getProperty(MonkeyConstants.UNBALANCE_CHAOS_EVERY_MS, - MonkeyConstants.DEFAULT_UNBALANCE_CHAOS_EVERY_MS + "")); - waitForUnbalanceMilliSec = - Long.parseLong(this.properties.getProperty(MonkeyConstants.UNBALANCE_WAIT_FOR_UNBALANCE_MS, - MonkeyConstants.DEFAULT_UNBALANCE_WAIT_FOR_UNBALANCE_MS + "")); - waitForKillMilliSec = - Long.parseLong(this.properties.getProperty(MonkeyConstants.UNBALANCE_WAIT_FOR_KILLS_MS, - MonkeyConstants.DEFAULT_UNBALANCE_WAIT_FOR_KILLS_MS + "")); - waitAfterBalanceMilliSec = - Long.parseLong(this.properties.getProperty(MonkeyConstants.UNBALANCE_WAIT_AFTER_BALANCE_MS, - MonkeyConstants.DEFAULT_UNBALANCE_WAIT_AFTER_BALANCE_MS + "")); - killMetaRs = - Boolean.parseBoolean(this.properties.getProperty(MonkeyConstants.UNBALANCE_KILL_META_RS, - MonkeyConstants.DEFAULT_UNBALANCE_KILL_META_RS + "")); - } }