Skip to content

Commit

Permalink
增加tddl rule相关代码
Browse files Browse the repository at this point in the history
  • Loading branch information
agapple committed Nov 5, 2013
1 parent 6a41c4d commit e0fcf0c
Show file tree
Hide file tree
Showing 32 changed files with 1,855 additions and 164 deletions.
12 changes: 12 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
<log4j_version>1.2.16</log4j_version>
<logback_version>1.0.6</logback_version>
<groovy_version>2.1.9</groovy_version>
<spring_version>2.5.6.SEC03</spring_version>
<!-- Test libs -->
<junit_version>4.11</junit_version>
</properties>
Expand Down Expand Up @@ -133,6 +134,17 @@
<artifactId>groovy-all</artifactId>
<version>${groovy_version}</version>
</dependency>
<!-- spring libs -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring_version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring_version}</version>
</dependency>
<!-- Log libs -->
<dependency>
<groupId>org.slf4j</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ public void init(String appName) {
configFactory = ConfigDataHandlerCity.getFactory(appName, unitName);
Map<String, Object> config = new HashMap<String, Object>();
config.put("group", TAtomConstants.DEFAULT_DIAMOND_GROUP);
globalHandler = configFactory.getConfigDataHandlerWithFullConfig(globalConfigDataId,
globalHandler = configFactory.getConfigDataHandler(globalConfigDataId,
globalDbConfListener,
Executors.newSingleThreadScheduledExecutor(),
config);
appDBHandler = configFactory.getConfigDataHandlerWithFullConfig(appConfigDataId,
appDBHandler = configFactory.getConfigDataHandler(appConfigDataId,
appDbConfListener,
Executors.newSingleThreadScheduledExecutor(),
config);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public void init(String appName) {
configFactory = ConfigDataHandlerCity.getFactory(appName, unitName);
Map<String, Object> config = new HashMap<String, Object>();
config.put("group", TAtomConstants.DEFAULT_DIAMOND_GROUP);
passwdHandler = configFactory.getConfigDataHandlerWithFullConfig(passwdConfDataId,
passwdHandler = configFactory.getConfigDataHandler(passwdConfDataId,
passwdConfListener,
Executors.newSingleThreadScheduledExecutor(),
config);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,69 +6,38 @@
*/
public class AbstractLifecycle implements Lifecycle {

private final Object lock = new Object();
protected volatile LifecycleState state = LifecycleState.STOPPED;
private final Object lock = new Object();
protected volatile boolean isInited = false;

public void start() {
public void init() {
synchronized (lock) {
if (isRunning()) {
if (isInited()) {
return;
}
state = LifecycleState.RUNNING;
isInited = true;
init();
}
}

public void stop(String why) {
public void destory() {
synchronized (lock) {
if (!isRunning()) {
if (!isInited()) {
return;
}
doStop(why);
state = LifecycleState.STOPPED;
}
}

public void stop() {
stop("caller doesn't tell any reason to stop");
}

public void abort(String why, Throwable e) {
synchronized (lock) {
if (!isRunning()) {
return;
}
doAbort(why, e);
state = LifecycleState.ABORTED;
doDestory();
isInited = false;
}
}

public boolean isAborted() {
return state.isAborted();
}

public boolean isRunning() {
return state.isRunning();
}

public boolean isStopped() {
return state.isStopped() || state.isAborted();
}

/**
* 保留为init名字,兼容老的代码习惯
*/
protected void init() {
doStart();
}

protected void doStart() {
public boolean isInited() {
return isInited;
}

protected void doStop(String why) {
protected void doInit() {
}

protected void doAbort(String why, Throwable e) {
protected void doDestory() {
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,23 @@
* @author jianghang 2013-10-23 下午5:19:58
* @since 5.1.0
*/
public interface Lifecycle extends Abortable {
public interface Lifecycle {

/**
* 正常启动
*/
void start();
void init();

/**
* 正常停止
*/
void stop();

void stop(String why);
void destory();

/**
* 是否存储运行运行状态
*
* @return
*/
boolean isRunning();

/**
* 是否处于停止状态,有可能是正常停止,也有可能是异常停止
*
* @return
*/
boolean isStopped();
boolean isInited();

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import java.util.Set;

/**
* 结果集筛选器
* 参数筛选器
*
* @author shenxun
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public interface ConfigDataHandlerFactory {
* @param configDataListener 数据回调监听器
* @return 返回配置数据处理器实例
*/
ConfigDataHandler getConfigDataHandlerWithListener(String dataId, ConfigDataListener configDataListener);
ConfigDataHandler getConfigDataHandler(String dataId, ConfigDataListener configDataListener);

/**
* 对某一个dataId进行监听,使用者提供回调监听器列表, 并且提供执行线程池和内部一些配置(可能被handler忽视)
Expand All @@ -42,7 +42,7 @@ public interface ConfigDataHandlerFactory {
* @param config TDDL内部对handler提供的一些配置
* @return 返回配置数据处理器实例
*/
ConfigDataHandler getConfigDataHandlerWithFullConfig(String dataId,
ConfigDataHandler getConfigDataHandler(String dataId,
List<ConfigDataListener> configDataListenerList,
Executor executor, Map<String, Object> config);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,21 +40,21 @@ public UnitConfigDataHandlerFactory(String unitName, String appName){

@Override
public ConfigDataHandler getConfigDataHandler(String dataId) {
return this.getConfigDataHandlerWithListener(dataId, null);
return this.getConfigDataHandler(dataId, null);
}

@Override
public ConfigDataHandler getConfigDataHandlerWithListener(String dataId, ConfigDataListener configDataListener) {
public ConfigDataHandler getConfigDataHandler(String dataId, ConfigDataListener configDataListener) {
List<ConfigDataListener> configDataListenerList = new ArrayList<ConfigDataListener>();
configDataListenerList.add(configDataListener);
return this.getConfigDataHandlerWithFullConfig(dataId,
return this.getConfigDataHandler(dataId,
configDataListenerList,
null,
new HashMap<String, Object>());
}

@Override
public ConfigDataHandler getConfigDataHandlerWithFullConfig(String dataId,
public ConfigDataHandler getConfigDataHandler(String dataId,
List<ConfigDataListener> configDataListenerList,
Executor executor, Map<String, Object> config) {
// 获取config data handler的扩展实现
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ public void onDataRecieved(String dataId, String data) {
}

};
ConfigDataHandler dataHandler = cdhf.getConfigDataHandlerWithListener(dataId, tddlConfigListener);
ConfigDataHandler dataHandler = cdhf.getConfigDataHandler(dataId, tddlConfigListener);
String data = dataHandler.getNullableData(15 * 1000, ConfigDataHandler.FIRST_CACHE_THEN_SERVER_STRATEGY);
tddlConfigListener.onDataRecieved(dataId, data);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ protected String getEncoding() {

public abstract void init();

public abstract void initRule();

public void setEncode(String encode) {
this.encode = encode;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package com.taobao.tddl.monitor.logger;

import com.taobao.tddl.common.utils.logger.Logger;
import com.taobao.tddl.common.utils.logger.LoggerFactory;
import com.taobao.tddl.monitor.logger.log4j.DynamicLog4jLogger;
import com.taobao.tddl.monitor.logger.logback.DynamicLogbackLogger;

import com.taobao.tddl.common.utils.logger.Logger;
import com.taobao.tddl.common.utils.logger.LoggerFactory;

public class LoggerInit {

public static final String TDDL_ATOM_STATISTIC_LOG_NAME = "TDDL_Atom_Statistic_LOG";
Expand All @@ -22,11 +23,32 @@ public class LoggerInit {
public static final Logger TDDL_Snapshot_LOG = LoggerFactory.getLogger("TDDL_Snapshot_LOG");
public static final Logger logger = TDDL_LOG; // Logger.getLogger(LoggerInit.class);

// tddl rule相关日志,需要独立出来,rule会被多个地方共享
public static final Logger DB_TAB_LOG = LoggerFactory.getLogger("DB_TAB_LOG");
public static final Logger VSLOT_LOG = LoggerFactory.getLogger("VSLOT_LOG");
public static final Logger DYNAMIC_RULE_LOG = LoggerFactory.getLogger("DYNAMIC_RULE_LOG");

static {
initTddlLog();
}

synchronized static public void initTddlLog() {
static public void initTddlLog() {
DynamicLogger dynamic = buildDynamic();

if (dynamic != null) {
dynamic.init();
}
}

static public void initRuleLog() {
DynamicLogger dynamic = buildDynamic();

if (dynamic != null) {
dynamic.initRule();
}
}

private synchronized static DynamicLogger buildDynamic() {
DynamicLogger dynamic = null;
String LOGBACK = "logback";
String LOG4J = "log4j";
Expand All @@ -39,10 +61,7 @@ synchronized static public void initTddlLog() {
} else {
logger.warn("logger is not a log4j/logback instance, dynamic logger is disabled");
}

if (dynamic != null) {
dynamic.init();
}
return dynamic;
}

private static boolean checkLogger(Logger logger, String name) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,30 @@ public void init() {
logger.setLevel(Level.INFO);
}

public void initRule() {
Appender dbTabAppender = buildAppender("TDDL_Vtab_Appender", "tddl-db-tab.log", "%m");
Appender vSlotAppender = buildAppender("TDDL_Vtab_Appender", "tddl-vslot.log", "%m");
Appender dynamicRuleAppender = buildAppender("TDDL_DynamicRule_Appender", "tddl-dynamic-rule.log", "%m");

org.apache.log4j.Logger logger = (Logger) LoggerInit.DB_TAB_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(dbTabAppender);
logger.setLevel(Level.INFO);

logger = (Logger) LoggerInit.VSLOT_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(vSlotAppender);
logger.setLevel(Level.INFO);

logger = (Logger) LoggerInit.DYNAMIC_RULE_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(dynamicRuleAppender);
logger.setLevel(Level.INFO);
}

private Appender buildAppender(String name, String fileName, String pattern) {
DailyRollingFileAppender appender = new DailyRollingFileAppender();
appender.setName(name);
Expand Down
Loading

0 comments on commit e0fcf0c

Please sign in to comment.