Skip to content

Commit

Permalink
optimize: string splice and release lock (apache#1770)
Browse files Browse the repository at this point in the history
  • Loading branch information
zjinlei committed Oct 16, 2019
1 parent 29b3248 commit d9d888d
Show file tree
Hide file tree
Showing 10 changed files with 31 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
IdleStateEvent idleStateEvent = (IdleStateEvent)evt;
if (idleStateEvent.state() == IdleState.READER_IDLE) {
if (LOGGER.isInfoEnabled()) {
LOGGER.info("channel" + ctx.channel() + " read idle.");
LOGGER.info("channel {} read idle.", ctx.channel());
}
try {
String serverAddress = NetUtil.toStringAddress(ctx.channel().remoteAddress());
Expand All @@ -199,7 +199,7 @@ public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
if (idleStateEvent == IdleStateEvent.WRITER_IDLE_STATE_EVENT) {
try {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("will send ping msg,channel" + ctx.channel());
LOGGER.debug("will send ping msg,channel {}", ctx.channel());
}
sendRequest(ctx.channel(), HeartbeatMessage.PING);
} catch (Throwable throwable) {
Expand Down Expand Up @@ -339,7 +339,7 @@ public void run() {

private void printMergeMessageLog(MergedWarpMessage mergeMessage) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("merge msg size:" + mergeMessage.msgIds.size());
LOGGER.debug("merge msg size:{}", mergeMessage.msgIds.size());
for (AbstractMessage cm : mergeMessage.msgs) {
LOGGER.debug(cm.toString());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ protected TableRecords beforeImage() throws SQLException {
private String buildBeforeImageSQL(SQLDeleteRecognizer visitor, TableMeta tableMeta, ArrayList<List<Object>> paramAppenderList) {
KeywordChecker keywordChecker = KeywordCheckerFactory.getKeywordChecker(JdbcConstants.MYSQL);
String whereCondition = buildWhereCondition(visitor, paramAppenderList);
StringBuilder suffix = new StringBuilder(" FROM " + keywordChecker.checkAndReplace(getFromTableInSQL()));
StringBuilder suffix = new StringBuilder(" FROM ").append(keywordChecker.checkAndReplace(getFromTableInSQL()));
if (StringUtils.isNotBlank(whereCondition)) {
suffix.append(" WHERE " + whereCondition);
suffix.append(" WHERE ").append(whereCondition);
}
suffix.append(" FOR UPDATE");
StringJoiner selectSQLAppender = new StringJoiner(", ", "SELECT ", suffix.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,10 @@ private String buildSelectSQL(ArrayList<List<Object>> paramAppenderList){
SQLSelectRecognizer recognizer = (SQLSelectRecognizer)sqlRecognizer;
StringBuilder selectSQLAppender = new StringBuilder("SELECT ");
selectSQLAppender.append(getColumnNameInSQL(getTableMeta().getPkName()));
selectSQLAppender.append(" FROM " + getFromTableInSQL());
selectSQLAppender.append(" FROM ").append(getFromTableInSQL());
String whereCondition = buildWhereCondition(recognizer, paramAppenderList);
if (StringUtils.isNotBlank(whereCondition)) {
selectSQLAppender.append(" WHERE " + whereCondition);
selectSQLAppender.append(" WHERE ").append(whereCondition);
}
selectSQLAppender.append(" FOR UPDATE");
return selectSQLAppender.toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,12 @@ private String buildBeforeImageSQL(TableMeta tableMeta, ArrayList<List<Object>>
List<String> updateColumns = recognizer.getUpdateColumns();
StringBuilder prefix = new StringBuilder("SELECT ");
if (!tableMeta.containsPK(updateColumns)) {
prefix.append(getColumnNameInSQL(tableMeta.getPkName()) + ", ");
prefix.append(getColumnNameInSQL(tableMeta.getPkName())).append(", ");
}
StringBuilder suffix = new StringBuilder(" FROM " + getFromTableInSQL());
StringBuilder suffix = new StringBuilder(" FROM ").append(getFromTableInSQL());
String whereCondition = buildWhereCondition(recognizer, paramAppenderList);
if (StringUtils.isNotBlank(whereCondition)) {
suffix.append(" WHERE " + whereCondition);
suffix.append(" WHERE ").append(whereCondition);
}
suffix.append(" FOR UPDATE");
StringJoiner selectSQLJoin = new StringJoiner(", ", prefix.toString(), suffix.toString());
Expand Down Expand Up @@ -120,7 +120,7 @@ private String buildAfterImageSQL(TableMeta tableMeta, TableRecords beforeImage)
StringBuilder prefix = new StringBuilder("SELECT ");
if (!tableMeta.containsPK(updateColumns)) {
// PK should be included.
prefix.append(getColumnNameInSQL(tableMeta.getPkName()) + ", ");
prefix.append(getColumnNameInSQL(tableMeta.getPkName())).append(", ");
}
String suffix = " FROM " + getFromTableInSQL() + " WHERE " + buildWhereConditionByPKs(beforeImage.pkRows());
StringJoiner selectSQLJoiner = new StringJoiner(", ", prefix.toString(), suffix);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ public void batchDeleteUndoLog(Set<String> xids, Set<Long> branchIds, Connection
}
int deleteRows = deletePST.executeUpdate();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("batch delete undo log size " + deleteRows);
LOGGER.debug("batch delete undo log size {}", deleteRows);
}
}catch (Exception e){
if (!(e instanceof SQLException)) {
Expand All @@ -178,9 +178,9 @@ protected static String toBatchDeleteUndoLogSql(int xidSize, int branchIdSize) {
StringBuilder sqlBuilder = new StringBuilder(64);
sqlBuilder.append("DELETE FROM ")
.append(UNDO_LOG_TABLE_NAME)
.append(" WHERE " + ClientTableColumnsName.UNDO_LOG_BRANCH_XID + " IN ");
.append(" WHERE ").append(ClientTableColumnsName.UNDO_LOG_BRANCH_XID).append(" IN ");
appendInParam(branchIdSize, sqlBuilder);
sqlBuilder.append(" AND " + ClientTableColumnsName.UNDO_LOG_XID + " IN ");
sqlBuilder.append(" AND ").append(ClientTableColumnsName.UNDO_LOG_XID).append(" IN ");
appendInParam(xidSize, sqlBuilder);
return sqlBuilder.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public int deleteUndoLogByLogCreated(Date logCreated, int limitRows, Connection
deletePST.setInt(2, limitRows);
int deleteRows = deletePST.executeUpdate();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("batch delete undo log size " + deleteRows);
LOGGER.debug("batch delete undo log size {}", deleteRows);
}
return deleteRows;
} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -579,7 +579,7 @@ protected boolean checkStatus(StateMachineInstance stateMachineInstance, Executi
private String buildExceptionMessage(StateMachineInstance stateMachineInstance, ExecutionStatus[] acceptStatus, ExecutionStatus[] denyStatus,
ExecutionStatus status, ExecutionStatus compenStatus, String operation) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("StateMachineInstance[id:" + stateMachineInstance.getId() + "]");
stringBuilder.append("StateMachineInstance[id:").append(stateMachineInstance.getId()).append("]");
if (acceptStatus != null) {
stringBuilder.append(",acceptable status :");
for (ExecutionStatus tempStatus : acceptStatus) {
Expand All @@ -602,7 +602,7 @@ private String buildExceptionMessage(StateMachineInstance stateMachineInstance,
stringBuilder.append(",current compensation status:");
stringBuilder.append(compenStatus.toString());
}
stringBuilder.append(",so operation [" + operation + "] denied");
stringBuilder.append(",so operation [").append(operation).append("] denied");
return stringBuilder.toString();
}

Expand Down
12 changes: 2 additions & 10 deletions server/src/main/java/io/seata/server/lock/DefaultLockManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public boolean releaseLock(BranchSession branchSession) throws TransactionExcept
}
List<RowLock> locks = collectRowLocks(branchSession);
try {
return this.doReleaseLock(locks, branchSession);
return getLocker(branchSession).releaseLock(locks);
} catch (Exception t) {
LOGGER.error("unLock error, branchSession:" + branchSession, t);
return false;
Expand All @@ -88,7 +88,7 @@ public boolean releaseGlobalSessionLock(GlobalSession globalSession) throws Tran
locks.addAll(collectRowLocks(branchSession));
}
try {
return this.doReleaseLock(locks, null);
return getLocker(null).releaseLock(locks);
} catch (Exception t) {
LOGGER.error("unLock globalSession error, xid:{}", globalSession.getXid(), t);
return false;
Expand All @@ -104,14 +104,6 @@ public boolean releaseGlobalSessionLock(GlobalSession globalSession) throws Tran
}
}

private boolean doReleaseLock(List<RowLock> locks, BranchSession branchSession) {
if (CollectionUtils.isEmpty(locks)) {
//no lock
return true;
}
return getLocker(branchSession).releaseLock(locks);
}

@Override
public boolean isLockable(String xid, String resourceId, String lockKey) throws TransactionException {
List<RowLock> locks = collectRowLocks(lockKey, resourceId, xid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,10 @@ public boolean acquireLock(List<RowLock> rowLocks) {

@Override
public boolean releaseLock(List<RowLock> rowLock) {
if (CollectionUtils.isEmpty(rowLock)) {
//no lock
return true;
}
ConcurrentMap<BucketLockMap, Set<String>> lockHolder = branchSession.getLockHolder();
if (lockHolder == null || lockHolder.size() == 0) {
return true;
Expand Down
16 changes: 8 additions & 8 deletions tm/src/main/java/io/seata/tm/api/DefaultGlobalTransaction.java
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public void begin(int timeout, String name) throws TransactionException {
if (role != GlobalTransactionRole.Launcher) {
check();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Ignore Begin(): just involved in global transaction [" + xid + "]");
LOGGER.debug("Ignore Begin(): just involved in global transaction [{}]", xid);
}
return;
}
Expand All @@ -103,7 +103,7 @@ public void begin(int timeout, String name) throws TransactionException {
status = GlobalStatus.Begin;
RootContext.bind(xid);
if (LOGGER.isInfoEnabled()) {
LOGGER.info("Begin new global transaction [" + xid + "]");
LOGGER.info("Begin new global transaction [{}]", xid);
}

}
Expand All @@ -113,7 +113,7 @@ public void commit() throws TransactionException {
if (role == GlobalTransactionRole.Participant) {
// Participant has no responsibility of committing
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Ignore Commit(): just involved in global transaction [" + xid + "]");
LOGGER.debug("Ignore Commit(): just involved in global transaction [{}]", xid);
}
return;
}
Expand Down Expand Up @@ -142,17 +142,17 @@ public void commit() throws TransactionException {
}
}
if (LOGGER.isInfoEnabled()) {
LOGGER.info("[" + xid + "] commit status:" + status);
LOGGER.info("[{}] commit status: {}", xid, status);
}

}

@Override
public void rollback() throws TransactionException {
if (role == GlobalTransactionRole.Participant) {
// Participant has no responsibility of committing
// Participant has no responsibility of rollback
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Ignore Rollback(): just involved in global transaction [" + xid + "]");
LOGGER.debug("Ignore Rollback(): just involved in global transaction [{}]", xid);
}
return;
}
Expand Down Expand Up @@ -182,7 +182,7 @@ public void rollback() throws TransactionException {
}
}
if (LOGGER.isInfoEnabled()) {
LOGGER.info("[" + xid + "] rollback status:" + status);
LOGGER.info("[{}] rollback status: {}", xid, status);
}
}

Expand Down Expand Up @@ -211,7 +211,7 @@ public void globalReport(GlobalStatus globalStatus) throws TransactionException

status = transactionManager.globalReport(xid, globalStatus);
if (LOGGER.isInfoEnabled()) {
LOGGER.info("[" + xid + "] report status:" + status);
LOGGER.info("[{}] report status: {}", xid, status);
}

if (RootContext.getXID() != null) {
Expand Down

0 comments on commit d9d888d

Please sign in to comment.