Skip to content

Commit

Permalink
1. 优化JobContext中的BizLogger,由原来的去掉了threadlocal,解决taskTracker多线程的问题, 去掉…
Browse files Browse the repository at this point in the history
…LtsLoggerFactory.getLogger()用法
  • Loading branch information
qq254963746 committed Feb 12, 2018
1 parent 5920a51 commit ddf576d
Show file tree
Hide file tree
Showing 11 changed files with 23 additions and 59 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -18,7 +18,7 @@ oschina地址:
这两个地址都会同步更新。感兴趣,请加QQ群:109500214 (加群密码: hello world)一起探讨、完善。越多人支持,就越有动力去更新,喜欢记得右上角star哈。

##1.7.1-SNAPSHOT(master)变更主要点
1. 增加 jdbc.create.db.table(boolean)来决定是否需要创建数据库表
1. 优化JobContext中的BizLogger,由原来的去掉了threadlocal,解决taskTracker多线程的问题, 去掉LtsLoggerFactory.getLogger()用法

## 框架概况
LTS 有主要有以下四种节点:
Expand Down
4 changes: 2 additions & 2 deletions docs/LTS文档.md
Expand Up @@ -195,10 +195,10 @@ public class LTSSpringConfig {
###定义自己的任务执行类
```java
public class MyJobRunner implements JobRunner {
private final static BizLogger bizLogger = LtsLoggerFactory.getBizLogger();
@Override
public Result run(Job job) throws Throwable {
public Result run(JobContext jobContext) throws Throwable {
try {
BizLogger bizLogger = jobContext.getBizLogger();
// TODO 业务逻辑
// 会发送到 LTS (JobTracker上)
bizLogger.info("测试,业务日志啊啊啊啊啊");
Expand Down
2 changes: 1 addition & 1 deletion docs/OLD_README.md
Expand Up @@ -48,7 +48,7 @@ github地址:[https://github.com/ltsopensource/light-task-scheduler](https://git
* 采用和dubbo一样的SPI扩展方式,可以实现任务队列扩展,日志记录器扩展等

###日志记录
对于任务的分发,执行,还有用户通过 (BizLogger) 【LtsLoggerFactory.getBizLogger()】 输入的业务日志,LTS都有记录,用户可以在LTS Admin 后台界面查看某个任务的所有日志,可以实时查看这个任务的执行情况。
对于任务的分发,执行,还有用户通过 (BizLogger) 【JobContext#getBizLogger()】 输入的业务日志,LTS都有记录,用户可以在LTS Admin 后台界面查看某个任务的所有日志,可以实时查看这个任务的执行情况。

###开发计划:
* WEB后台管理:性能统计分析,预警等
Expand Down
Expand Up @@ -14,7 +14,6 @@
import com.github.ltsopensource.store.jdbc.builder.SelectSql;
import com.github.ltsopensource.store.jdbc.builder.WhereSql;
import com.github.ltsopensource.store.jdbc.dbutils.JdbcTypeUtils;
import com.sun.tools.internal.ws.wsdl.document.soap.SOAPUse;

import java.util.List;

Expand Down
Expand Up @@ -120,7 +120,7 @@ public DeleteSql andBetween(String column, Object start, Object end) {
}

if (start != null && end != null) {
sql.append(" ADN (").append(column).append(" BETWEEN ? AND ? ").append(")");
sql.append(" AND (").append(column).append(" BETWEEN ? AND ? ").append(")");
params.add(start);
params.add(end);
return this;
Expand Down
Expand Up @@ -167,7 +167,7 @@ public SelectSql andBetween(String column, Object start, Object end) {
}

if (start != null && end != null) {
sql.append(" ADN (").append(column).append(" BETWEEN ? AND ? ").append(")");
sql.append(" AND (").append(column).append(" BETWEEN ? AND ? ").append(")");
params.add(start);
params.add(end);
return this;
Expand Down
Expand Up @@ -128,7 +128,7 @@ public UpdateSql andBetween(String column, Object start, Object end) {
}

if (start != null && end != null) {
sql.append(" ADN (").append(column).append(" BETWEEN ? AND ? ").append(")");
sql.append(" AND (").append(column).append(" BETWEEN ? AND ? ").append(")");
params.add(start);
params.add(end);
return this;
Expand Down
Expand Up @@ -7,22 +7,14 @@
*/
public abstract class BizLoggerAdapter implements BizLogger {

private final ThreadLocal<JobMeta> jobMetaThreadLocal;

public BizLoggerAdapter() {
this.jobMetaThreadLocal = new ThreadLocal<JobMeta>();
}
private JobMeta jobMeta;

public void setJobMeta(JobMeta jobMeta) {
jobMetaThreadLocal.set(jobMeta);
}

public void removeJobMeta() {
jobMetaThreadLocal.remove();
this.jobMeta = jobMeta;
}

protected JobMeta getJobMeta() {
return jobMetaThreadLocal.get();
return jobMeta;
}

}
Expand Up @@ -12,6 +12,7 @@
import com.github.ltsopensource.tasktracker.Result;
import com.github.ltsopensource.tasktracker.domain.Response;
import com.github.ltsopensource.tasktracker.domain.TaskTrackerAppContext;
import com.github.ltsopensource.tasktracker.logger.BizLogger;
import com.github.ltsopensource.tasktracker.logger.BizLoggerAdapter;
import com.github.ltsopensource.tasktracker.logger.BizLoggerFactory;
import com.github.ltsopensource.tasktracker.monitor.TaskTrackerMStatReporter;
Expand All @@ -34,7 +35,6 @@ public class JobRunnerDelegate implements Runnable {
private static final Logger LOGGER = LoggerFactory.getLogger(JobRunnerDelegate.class);
private JobMeta jobMeta;
private RunnerCallback callback;
private BizLoggerAdapter logger;
private TaskTrackerAppContext appContext;
private TaskTrackerMStatReporter stat;
private Interruptible interruptor;
Expand All @@ -48,9 +48,6 @@ public JobRunnerDelegate(TaskTrackerAppContext appContext,
this.callback = callback;
this.jobMeta = jobMeta;

this.logger = (BizLoggerAdapter) BizLoggerFactory.getLogger(
appContext.getBizLogLevel(),
appContext.getRemotingClient(), appContext);
stat = (TaskTrackerMStatReporter) appContext.getMStatReporter();

this.interruptor = new InterruptibleAdapter() {
Expand All @@ -71,19 +68,21 @@ public void run() {
((InterruptibleAdapter) interruptor).interrupt();
}

LtsLoggerFactory.setLogger(logger);

while (jobMeta != null) {
long startTime = SystemClock.now();
// 设置当前context中的jobId
logger.setJobMeta(jobMeta);
Response response = new Response();
response.setJobMeta(jobMeta);

BizLoggerAdapter logger = (BizLoggerAdapter) BizLoggerFactory.getLogger(
appContext.getBizLogLevel(),
appContext.getRemotingClient(), appContext);

try {
appContext.getRunnerPool().getRunningJobManager()
.in(jobMeta.getJobId(), this);
this.curJobRunner = appContext.getRunnerPool().getRunnerFactory().newRunner();
Result result = this.curJobRunner.run(buildJobContext(jobMeta));
Result result = this.curJobRunner.run(buildJobContext(logger, jobMeta));

if (result == null) {
response.setAction(Action.EXECUTE_SUCCESS);
Expand All @@ -110,8 +109,7 @@ public void run() {
stat.addRunningTime(time);
LOGGER.error("Job execute error : {}, time: {}, {}", jobMeta.getJob(), time, t.getMessage(), t);
} finally {
checkInterrupted();
logger.removeJobMeta();
checkInterrupted(logger);
appContext.getRunnerPool().getRunningJobManager()
.out(jobMeta.getJobId());
}
Expand All @@ -125,13 +123,11 @@ public void run() {
DotLogUtils.dot("JobRunnerDelegate.run get job " + (this.jobMeta == null ? "NULL" : "NOT_NULL"));
}
} finally {
LtsLoggerFactory.remove();

blockedOn(null);
}
}

private JobContext buildJobContext(JobMeta jobMeta) {
private JobContext buildJobContext(BizLoggerAdapter logger, JobMeta jobMeta) {
JobContext jobContext = new JobContext();
// 采用deepopy的方式 防止用户修改任务数据
Job job = JobUtils.copy(jobMeta.getJob());
Expand All @@ -147,7 +143,8 @@ private JobContext buildJobContext(JobMeta jobMeta) {

jobContext.setJobExtInfo(jobExtInfo);

jobContext.setBizLogger(LtsLoggerFactory.getBizLogger());
logger.setJobMeta(jobMeta);
jobContext.setBizLogger(logger);
return jobContext;
}

Expand Down Expand Up @@ -206,7 +203,7 @@ private boolean isStopToGetNewJob() {
return !appContext.getConfig().getInternalData(Constants.MACHINE_RES_ENOUGH, true);
}

private void checkInterrupted() {
private void checkInterrupted(BizLogger logger) {
try {
if (isInterrupted()) {
logger.info("SYSTEM:Interrupted");
Expand Down
Expand Up @@ -17,7 +17,7 @@ public Result run(JobContext jobContext) throws Throwable {
// 1. 设置LTS环境为 UNIT_TEST
LTSConfig.setEnvironment(Environment.UNIT_TEST);
// 设置 BizLogger
LtsLoggerFactory.setLogger(BizLoggerFactory.getLogger(Level.INFO, null, null));
jobContext.setBizLogger(BizLoggerFactory.getLogger(Level.INFO, null, null));
// 2. load context (Spring Context 或者其他的)
initContext();
// 3. new jobRunner
Expand Down

This file was deleted.

0 comments on commit ddf576d

Please sign in to comment.