Skip to content

Commit

Permalink
optimize: optimize the way to get configuration in DB mode of console (
Browse files Browse the repository at this point in the history
  • Loading branch information
lvekee committed Mar 19, 2022
1 parent ac12355 commit 262b26b
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 28 deletions.
1 change: 1 addition & 0 deletions changes/1.5.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单
- [[#4436](https://github.com/seata/seata/pull/4436)] 优化file模式下的global session查询接口
- [[#4431](https://github.com/seata/seata/pull/4431)] 优化redis模式查询globalSession限制查询条数
- [[#4465](https://github.com/seata/seata/pull/4465)] 优化TC 批量响应客户端模式客户端版本传输方式
- [[#4469](https://github.com/seata/seata/pull/4469)] 优化控制台db模式下获取配置的方式
- [[#4478](https://github.com/seata/seata/pull/4478)] 优化 Nacos 配置和注册元数据属性


Expand Down
2 changes: 2 additions & 0 deletions changes/en-us/1.5.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,10 @@
- [[#4436](https://github.com/seata/seata/pull/4436)] optimize global session query in file mode
- [[#4431](https://github.com/seata/seata/pull/4431)] limit the number of queries in Redis storage mode
- [[#4465](https://github.com/seata/seata/pull/4465)] optimize client version transfer in tc batch response to client mode.
- [[#4469](https://github.com/seata/seata/pull/4469)] optimize the way to get configuration in DB mode of console
- [[#4478](https://github.com/seata/seata/pull/4478)] optimize Nacos config and naming properties


### test:


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,23 @@

import javax.sql.DataSource;

import io.seata.common.ConfigurationKeys;
import io.seata.common.exception.StoreException;
import io.seata.common.loader.EnhancedServiceLoader;
import io.seata.common.util.IOUtil;
import io.seata.common.util.StringUtils;
import io.seata.config.Configuration;
import io.seata.config.ConfigurationFactory;
import io.seata.console.result.PageResult;
import io.seata.core.store.db.DataSourceProvider;
import io.seata.core.store.db.sql.log.LogStoreSqlsFactory;
import io.seata.server.console.vo.BranchSessionVO;
import io.seata.server.console.service.BranchSessionService;
import org.springframework.beans.factory.annotation.Value;
import io.seata.server.console.vo.BranchSessionVO;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component;

import static io.seata.common.DefaultValues.DEFAULT_STORE_DB_BRANCH_TABLE;

/**
* Branch Session DataBase ServiceImpl
*
Expand All @@ -48,12 +52,25 @@
@ConditionalOnExpression("#{'db'.equals('${sessionMode}')}")
public class BranchSessionDBServiceImpl implements BranchSessionService {

@Value("#{environment.getProperty('seata.store.db.branch-table')}")
private String branchTable;
@Value("#{environment.getProperty('seata.store.db.db-type')}")

private String dbType;
@Value("#{environment.getProperty('seata.store.db.datasource')}")
private String dbDataSource;

private DataSource dataSource;

public BranchSessionDBServiceImpl() {
Configuration configuration = ConfigurationFactory.getInstance();
branchTable = configuration.getConfig(ConfigurationKeys.STORE_DB_BRANCH_TABLE, DEFAULT_STORE_DB_BRANCH_TABLE);
dbType = configuration.getConfig(ConfigurationKeys.STORE_DB_TYPE);
if (StringUtils.isBlank(dbType)) {
throw new IllegalArgumentException(ConfigurationKeys.STORE_DB_TYPE + " should not be blank");
}
String dbDataSource = configuration.getConfig(ConfigurationKeys.STORE_DB_DATASOURCE_TYPE);
if (StringUtils.isBlank(dbDataSource)) {
throw new IllegalArgumentException(ConfigurationKeys.STORE_DB_DATASOURCE_TYPE + " should not be blank");
}
dataSource = EnhancedServiceLoader.load(DataSourceProvider.class, dbDataSource).provide();
}

@Override
public PageResult<BranchSessionVO> queryByXid(String xid) {
Expand All @@ -64,8 +81,6 @@ public PageResult<BranchSessionVO> queryByXid(String xid) {
String whereCondition = " where xid = ? ";
String branchSessionSQL = LogStoreSqlsFactory.getLogStoreSqls(dbType).getAllBranchSessionSQL(branchTable, whereCondition);

DataSource dataSource = EnhancedServiceLoader.load(DataSourceProvider.class, dbDataSource).provide();

List<BranchSessionVO> list = new ArrayList<>();
ResultSet rs = null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,25 @@

import javax.sql.DataSource;

import io.seata.common.ConfigurationKeys;
import io.seata.common.exception.StoreException;
import io.seata.common.loader.EnhancedServiceLoader;
import io.seata.console.result.PageResult;
import io.seata.server.console.param.GlobalLockParam;
import io.seata.common.util.IOUtil;
import io.seata.common.util.PageUtil;
import io.seata.common.util.StringUtils;
import io.seata.config.Configuration;
import io.seata.config.ConfigurationFactory;
import io.seata.console.result.PageResult;
import io.seata.core.store.db.DataSourceProvider;
import io.seata.core.store.db.sql.lock.LockStoreSqlFactory;
import io.seata.server.console.vo.GlobalLockVO;
import io.seata.server.console.param.GlobalLockParam;
import io.seata.server.console.service.GlobalLockService;
import org.springframework.beans.factory.annotation.Value;
import io.seata.server.console.vo.GlobalLockVO;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component;

import static io.seata.common.DefaultValues.DEFAULT_LOCK_DB_TABLE;


/**
* Global Lock DB ServiceImpl
Expand All @@ -51,12 +55,25 @@
@ConditionalOnExpression("#{'db'.equals('${lockMode}')}")
public class GlobalLockDBServiceImpl implements GlobalLockService {

@Value("#{environment.getProperty('seata.store.db.lock-table')}")
private String lockTable;
@Value("#{environment.getProperty('seata.store.db.db-type')}")

private String dbType;
@Value("#{environment.getProperty('seata.store.db.datasource')}")
private String dbDataSource;

private DataSource dataSource;

public GlobalLockDBServiceImpl() {
Configuration configuration = ConfigurationFactory.getInstance();
lockTable = configuration.getConfig(ConfigurationKeys.LOCK_DB_TABLE, DEFAULT_LOCK_DB_TABLE);
dbType = configuration.getConfig(ConfigurationKeys.STORE_DB_TYPE);
if (StringUtils.isBlank(dbType)) {
throw new IllegalArgumentException(ConfigurationKeys.STORE_DB_TYPE + " should not be blank");
}
String dbDataSource = configuration.getConfig(ConfigurationKeys.STORE_DB_DATASOURCE_TYPE);
if (StringUtils.isBlank(dbDataSource)) {
throw new IllegalArgumentException(ConfigurationKeys.STORE_DB_DATASOURCE_TYPE + " should not be blank");
}
dataSource = EnhancedServiceLoader.load(DataSourceProvider.class, dbDataSource).provide();
}

@Override
public PageResult<GlobalLockVO> query(GlobalLockParam param) {
Expand All @@ -72,8 +89,6 @@ public PageResult<GlobalLockVO> query(GlobalLockParam param) {
List<GlobalLockVO> list = new ArrayList<>();
int count = 0;

DataSource dataSource = EnhancedServiceLoader.load(DataSourceProvider.class, dbDataSource).provide();

ResultSet rs = null;
ResultSet countRs = null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,30 +20,34 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;

import javax.annotation.Resource;
import javax.sql.DataSource;

import io.seata.common.ConfigurationKeys;
import io.seata.common.exception.StoreException;
import io.seata.common.loader.EnhancedServiceLoader;
import io.seata.common.util.IOUtil;
import io.seata.common.util.PageUtil;
import io.seata.common.util.StringUtils;
import io.seata.server.console.param.GlobalSessionParam;
import io.seata.server.console.vo.BranchSessionVO;
import io.seata.server.console.vo.GlobalSessionVO;
import io.seata.config.Configuration;
import io.seata.config.ConfigurationFactory;
import io.seata.console.result.PageResult;
import java.util.Date;
import io.seata.core.store.db.DataSourceProvider;
import io.seata.core.store.db.sql.log.LogStoreSqlsFactory;
import io.seata.server.console.param.GlobalSessionParam;
import io.seata.server.console.service.BranchSessionService;
import io.seata.server.console.service.GlobalSessionService;
import org.springframework.beans.factory.annotation.Value;
import io.seata.server.console.vo.BranchSessionVO;
import io.seata.server.console.vo.GlobalSessionVO;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component;

import static io.seata.common.DefaultValues.DEFAULT_STORE_DB_GLOBAL_TABLE;

/**
* Global Session DataBase ServiceImpl
*
Expand All @@ -55,16 +59,29 @@
@ConditionalOnExpression("#{'db'.equals('${sessionMode}')}")
public class GlobalSessionDBServiceImpl implements GlobalSessionService {

@Value("#{environment.getProperty('seata.store.db.global-table')}")
private String globalTable;
@Value("#{environment.getProperty('seata.store.db.db-type')}")

private String dbType;
@Value("#{environment.getProperty('seata.store.db.datasource')}")
private String dbDataSource;

private DataSource dataSource;

@Resource(type = BranchSessionService.class)
private BranchSessionService branchSessionService;

public GlobalSessionDBServiceImpl() {
Configuration configuration = ConfigurationFactory.getInstance();
globalTable = configuration.getConfig(ConfigurationKeys.STORE_DB_GLOBAL_TABLE, DEFAULT_STORE_DB_GLOBAL_TABLE);
dbType = configuration.getConfig(ConfigurationKeys.STORE_DB_TYPE);
if (StringUtils.isBlank(dbType)) {
throw new IllegalArgumentException(ConfigurationKeys.STORE_DB_TYPE + " should not be blank");
}
String dbDataSource = configuration.getConfig(ConfigurationKeys.STORE_DB_DATASOURCE_TYPE);
if (StringUtils.isBlank(dbDataSource)) {
throw new IllegalArgumentException(ConfigurationKeys.STORE_DB_DATASOURCE_TYPE + " should not be blank");
}
dataSource = EnhancedServiceLoader.load(DataSourceProvider.class, dbDataSource).provide();
}

@Override
public PageResult<GlobalSessionVO> query(GlobalSessionParam param) {
PageUtil.checkParam(param.getPageNum(), param.getPageSize());
Expand All @@ -79,7 +96,6 @@ public PageResult<GlobalSessionVO> query(GlobalSessionParam param) {
List<GlobalSessionVO> list = new ArrayList<>();
int count = 0;

DataSource dataSource = EnhancedServiceLoader.load(DataSourceProvider.class, dbDataSource).provide();

ResultSet rs = null;
ResultSet countRs = null;
Expand Down

0 comments on commit 262b26b

Please sign in to comment.