Package com.linkedin.databus.bootstrap.server

Source Code of com.linkedin.databus.bootstrap.server.BootstrapServerConfig

package com.linkedin.databus.bootstrap.server;

/*
*
* 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.io.IOException;
import java.util.HashMap;
import java.util.Map;

import com.linkedin.databus.bootstrap.common.BootstrapConfig;
import com.linkedin.databus.core.util.ConfigBuilder;
import com.linkedin.databus.core.util.InvalidConfigException;

public class BootstrapServerConfig implements
    ConfigBuilder<BootstrapServerStaticConfig>
{
  public static final long DEFAULT_LONGEST_DB_TXN_TIME_MINS = 240;
  // BypassSnapshot disabled by default
  public static final long DEFAULT_DEFAULT_THRESHOLD_FOR_SNAPSHOT_BYPASS = -1;

  // Predicate push down default
  public static final boolean DEFAULT_PREDICATEPUSHDOWN = true;

  // MinScn check enabled/disabled - See DDSDBUS-1629
  public static final boolean DEFAULT_MINSCNCHECK = true;

  // Default timeout in sec for bootstrap DB query execution;
  public static final int DEFAULT_BOOTSTRAP_DB_QUERY_EXECUTION_TIMEOUT_IN_SEC = 3600;

  // if the number of events between sinceSCN and start SCN is less than this
  // threshold, then snapshot could be disabled.
  private Long defaultRowsThresholdForSnapshotBypass = DEFAULT_DEFAULT_THRESHOLD_FOR_SNAPSHOT_BYPASS;

  private int queryTimeoutInSec = DEFAULT_BOOTSTRAP_DB_QUERY_EXECUTION_TIMEOUT_IN_SEC;

  // Per Source num-rows threshold overrides
  // if the number of events between sinceSCN and start SCN is less than this
  // threshold, then snapshot could be disabled.
  private final Map<String, Long> rowsThresholdForSnapshotBypass;

  // Selectively disable the snapshotBypass feature
  private final Map<String, Boolean> disableSnapshotBypass;
  // Source level override for predicate pushdown
  private final Map<String, Boolean> predicatePushDownBypass;

  // Bootstrap DB Config
  private BootstrapConfig db;

  // Predicate push down to sql level -- disables server side filtering
  private boolean predicatePushDown;

  // MinScn check enabled/disabled - See DDSDBUS-1629
  private boolean enableMinScnCheck = DEFAULT_MINSCNCHECK;

  private long longestDbTxnTimeMins = DEFAULT_LONGEST_DB_TXN_TIME_MINS;

  public boolean getPredicatePushDown()
  {
    return predicatePushDown;
  }

  public void setPredicatePushDown(boolean predicatePushDown)
  {
    this.predicatePushDown = predicatePushDown;
  }

  @Override
  public BootstrapServerStaticConfig build() throws InvalidConfigException
  {
    return new BootstrapServerStaticConfig(defaultRowsThresholdForSnapshotBypass,
                                           rowsThresholdForSnapshotBypass,
                                           disableSnapshotBypass,
                                           predicatePushDown,
                                           predicatePushDownBypass,
                                           queryTimeoutInSec,
                                           enableMinScnCheck,
                                           db.build(),
                                           longestDbTxnTimeMins);
  }

  public Long getDefaultRowsThresholdForSnapshotBypass()
  {
    return defaultRowsThresholdForSnapshotBypass;
  }

  public void setDefaultRowsThresholdForSnapshotBypass(
      Long defaultRowsThresholdForSnapshotBypass)
  {
    this.defaultRowsThresholdForSnapshotBypass = defaultRowsThresholdForSnapshotBypass;
  }

  public Long getRowsThresholdForSnapshotBypass(String source)
  {
    Long threshold = rowsThresholdForSnapshotBypass.get(source);

    if (null == threshold)
      return defaultRowsThresholdForSnapshotBypass;

    return threshold;
  }

  public long getLongestDbTxnTimeMins()
  {
    return longestDbTxnTimeMins;
  }

  public void setRowsThresholdForSnapshotBypass(String source, Long threshold)
  {
    rowsThresholdForSnapshotBypass.put(source, threshold);
  }

  public int getQueryTimeoutInSec()
  {
    return queryTimeoutInSec;
  }

  public void setQueryTimeoutInSec(int queryTimeInSec)
  {
    queryTimeoutInSec = queryTimeInSec;
  }

  public Boolean getDisableSnapshotBypass(String source)
  {
    Boolean disableBypass = disableSnapshotBypass.get(source);

    if (null == disableBypass)
      return false;

    return disableBypass;
  }

  public void setDisableSnapshotBypass(String source, Boolean disableBypass)
  {
    disableSnapshotBypass.put(source, disableBypass);
  }

  public boolean getPredicatePushDownBypass(String source)
  {
    Boolean predicateOverride = predicatePushDownBypass.get(source);
    if (predicateOverride == null)
      return DEFAULT_PREDICATEPUSHDOWN;
    return predicateOverride;
  }

  public void setPredicatePushDownBypass(String source, boolean override)
  {
    predicatePushDownBypass.put(source, override);
  }

  public boolean isEnableMinScnCheck()
  {
    return enableMinScnCheck;
  }

  public void setEnableMinScnCheck(boolean enableMinScnCheck)
  {
    this.enableMinScnCheck = enableMinScnCheck;
  }

  public void setLongestDbTxnTimeMins(long longestDbTxnTimeMins)
  {
    this.longestDbTxnTimeMins = longestDbTxnTimeMins;
  }

  public BootstrapConfig getDb()
  {
    return db;
  }

  public void setDb(BootstrapConfig db)
  {
    this.db = db;
  }

  public BootstrapServerConfig() throws IOException
  {
    super();
    defaultRowsThresholdForSnapshotBypass = DEFAULT_DEFAULT_THRESHOLD_FOR_SNAPSHOT_BYPASS;
    disableSnapshotBypass = new HashMap<String, Boolean>();
    rowsThresholdForSnapshotBypass = new HashMap<String, Long>();
    predicatePushDown = DEFAULT_PREDICATEPUSHDOWN;
    predicatePushDownBypass = new HashMap<String, Boolean>();
    longestDbTxnTimeMins = DEFAULT_LONGEST_DB_TXN_TIME_MINS;
    db = new BootstrapConfig();
  }
}
TOP

Related Classes of com.linkedin.databus.bootstrap.server.BootstrapServerConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.