package com.linkedin.databus.bootstrap.common; /* * * Copyright 2013 LinkedIn Corp. All rights reserved * * 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. * */ import java.util.Map; public class BootstrapCleanerStaticConfig { public static enum RetentionType { NO_CLEANUP, RETENTION_SECONDS, RETENTION_LOGS }; public static enum BootstrapDBType { BOOTSTRAP_CATCHUP_APPLIER_RUNNING, BOOTSTRAP_CATCHUP_APPLIER_NOT_RUNNING, BOOTSTRAP_FULL; public boolean isApplierRunning() { if (this == BOOTSTRAP_CATCHUP_APPLIER_NOT_RUNNING) return false; return true; } public boolean isCatchupMode() { if (this == BOOTSTRAP_FULL) return false; return true; } }; private final Map<String,RetentionStaticConfig> retentionOverride; private final RetentionStaticConfig retentionDefault; private final Map<String,BootstrapDBType> bootstrapTypeOverride; private final BootstrapDBType bootstrapTypeDefault; private final Map<String,Boolean> enableOptimizeTable; private final Boolean enableOptimizeTableDefault; private final Map<String,Boolean> enableForceTabTableCleanup; private final Boolean enableForceTabTableCleanupDefault; private final boolean enable; private final DiskSpaceTriggerConfig diskSpaceTrigger; private final PeriodicTriggerConfig periodicTrigger; public Map<String, RetentionStaticConfig> getRetentionOverride() { return retentionOverride; } public RetentionStaticConfig getRetentionDefault() { return retentionDefault; } public RetentionStaticConfig getRetentionConfig(String sourceName) { RetentionStaticConfig c = retentionOverride.get(sourceName); if ( null == c) c = retentionDefault; return c; } public Boolean forceTabTableCleanup(String sourceName) { Boolean c = enableForceTabTableCleanup.get(sourceName); if ( null == c) c = enableForceTabTableCleanupDefault; return c; } public Map<String, Boolean> getEnableOptimizeTable() { return enableOptimizeTable; } public Boolean isOptimizeTableEnabled(String sourceName) { Boolean c = enableOptimizeTable.get(sourceName); if ( null == c) c = enableOptimizeTableDefault; return c; } public Boolean getEnableOptimizeTableeDefault() { return enableOptimizeTableDefault; } public Map<String, BootstrapDBType> getBootstrapTypeOverride() { return bootstrapTypeOverride; } public BootstrapDBType getBootstrapType(String sourceName) { BootstrapDBType c = bootstrapTypeOverride.get(sourceName); if ( null == c) c = bootstrapTypeDefault; return c; } public BootstrapDBType getBootstrapTypeDefault() { return bootstrapTypeDefault; } public boolean isEnable() { return enable; } public DiskSpaceTriggerConfig getDiskSpaceTrigger() { return diskSpaceTrigger; } public PeriodicTriggerConfig getPeriodSpaceTrigger() { return periodicTrigger; } public BootstrapCleanerStaticConfig( Map<String, RetentionStaticConfig> retentionOverride, RetentionStaticConfig retentionDefault, Map<String, BootstrapDBType> bootstrapTypeOverride, BootstrapDBType bootstrapTypeDefault, Map<String, Boolean> enableOptimizeTable, boolean enableOptimizeTableDefault, Map<String,Boolean> enableForceTabTableCleanup, boolean enableForceTabTableCleanupDefault, boolean enable, DiskSpaceTriggerConfig diskSpaceTrigger, PeriodicTriggerConfig periodicTrigger) { super(); this.retentionOverride = retentionOverride; this.retentionDefault = retentionDefault; this.bootstrapTypeOverride = bootstrapTypeOverride; this.bootstrapTypeDefault = bootstrapTypeDefault; this.enableOptimizeTable = enableOptimizeTable; this.enableOptimizeTableDefault = enableOptimizeTableDefault; this.enableForceTabTableCleanup = enableForceTabTableCleanup; this.enableForceTabTableCleanupDefault = enableForceTabTableCleanupDefault; this.enable = enable; this.diskSpaceTrigger = diskSpaceTrigger; this.periodicTrigger = periodicTrigger; } @Override public String toString() { return "BootstrapCleanerStaticConfig [retentionOverride=" + retentionOverride + ", retentionDefault=" + retentionDefault + ", bootstrapTypeOverride=" + bootstrapTypeOverride + ", bootstrapTypeDefault=" + bootstrapTypeDefault + ", enableOptimizeTable=" + enableOptimizeTable + ", enableOptimizeTableDefault=" + enableOptimizeTableDefault + ", enableForceTabTableCleanup=" + enableForceTabTableCleanup + ", enableForceTabTableCleanupDefault=" + enableForceTabTableCleanupDefault + ", enable=" + enable + ", diskSpaceTrigger=" + diskSpaceTrigger + ", periodicTrigger=" + periodicTrigger + "]"; } public static class RetentionStaticConfig { private final RetentionType retentiontype; private final long retentionQuantity; public RetentionStaticConfig(RetentionType retentiontype, long retentionQuantity) { super(); this.retentiontype = retentiontype; this.retentionQuantity = retentionQuantity; } public RetentionType getRetentiontype() { return retentiontype; } public long getRetentionQuantity() { return retentionQuantity; } @Override public String toString() { return "RetentionStaticConfig [retentiontype=" + retentiontype + ", retentionQuantity=" + retentionQuantity + "]"; } } public static class PeriodicTriggerConfig { private final long runIntervalSeconds; private final boolean enable; private final boolean runOnStart; public long getRunIntervalSeconds() { return runIntervalSeconds; } public boolean isEnable() { return enable; } public boolean isRunOnStart() { return runOnStart; } @Override public String toString() { return "PeriodicTriggerConfig [runIntervalSeconds=" + runIntervalSeconds + ", enable=" + enable + ", runOnStart=" + runOnStart + "]"; } public PeriodicTriggerConfig(long runIntervalSeconds, boolean enable, boolean runOnStart) { super(); this.runIntervalSeconds = runIntervalSeconds; this.enable = enable; this.runOnStart = runOnStart; } } public static class DiskSpaceTriggerConfig { private final boolean enable; private final long runIntervalSeconds; private final double availableThresholdPercent; private final String bootstrapDBDrive; public DiskSpaceTriggerConfig(boolean enable, long runIntervalSeconds, double availableThresholdPercent, String bootstrapDBDrive) { super(); this.enable = enable; this.runIntervalSeconds = runIntervalSeconds; this.availableThresholdPercent = availableThresholdPercent; this.bootstrapDBDrive = bootstrapDBDrive; } public boolean isEnable() { return enable; } public long getRunIntervalSeconds() { return runIntervalSeconds; } public double getAvailableThresholdPercent() { return availableThresholdPercent; } public String getBootstrapDBDrive() { return bootstrapDBDrive; } @Override public String toString() { return "DiskSpaceTriggerConfig [enable=" + enable + ", runIntervalSeconds=" + runIntervalSeconds + ", availableThresholdPercent=" + availableThresholdPercent + ", bootstrapDBDrive=" + bootstrapDBDrive + "]"; } } }