[enhancement](audit-log) add status code and error msg to audit log for proxy stmt (#27607)

This commit is contained in:
Siyang Tang
2023-12-21 21:16:36 +08:00
committed by GitHub
parent 5153137b83
commit 65e3da255f
6 changed files with 49 additions and 0 deletions

View File

@ -1231,6 +1231,10 @@ public enum ErrorCode {
return sqlState;
}
public String getErrorMsg() {
return errorMsg;
}
public String formatErrorMsg(Object... args) {
try {
return String.format(errorMsg, args);

View File

@ -112,6 +112,11 @@ public class AuditLogHelper {
if (!Env.getCurrentEnv().isMaster()) {
if (ctx.executor.isForwardToMaster()) {
ctx.getAuditEventBuilder().setState(ctx.executor.getProxyStatus());
int proxyStatusCode = ctx.executor.getProxyStatusCode();
if (proxyStatusCode != 0) {
ctx.getAuditEventBuilder().setErrorCode(proxyStatusCode);
ctx.getAuditEventBuilder().setErrorMessage(ctx.executor.getProxyErrMsg());
}
}
}
Env.getCurrentAuditEventProcessor().handleAuditEvent(ctx.getAuditEventBuilder().build());

View File

@ -555,6 +555,12 @@ public abstract class ConnectProcessor {
result.setMaxJournalId(Env.getCurrentEnv().getMaxJournalId());
result.setPacket(getResultPacket());
result.setStatus(ctx.getState().toString());
if (ctx.getState().getStateType() == MysqlStateType.OK) {
result.setStatusCode(0);
} else {
result.setStatusCode(ctx.getState().getErrorCode().getCode());
result.setErrMessage(ctx.getState().getErrorMessage());
}
if (executor != null && executor.getProxyResultSet() != null) {
result.setResultSet(executor.getProxyResultSet().tothrift());
}

View File

@ -21,6 +21,7 @@ import org.apache.doris.analysis.RedirectStatus;
import org.apache.doris.catalog.Env;
import org.apache.doris.common.ClientPool;
import org.apache.doris.common.DdlException;
import org.apache.doris.common.ErrorCode;
import org.apache.doris.thrift.FrontendService;
import org.apache.doris.thrift.TMasterOpRequest;
import org.apache.doris.thrift.TMasterOpResult;
@ -206,6 +207,23 @@ public class MasterOpExecutor {
}
}
public int getProxyStatusCode() {
if (result == null || !result.isSetStatusCode()) {
return ErrorCode.ERR_UNKNOWN_ERROR.getCode();
}
return result.getStatusCode();
}
public String getProxyErrMsg() {
if (result == null) {
return ErrorCode.ERR_UNKNOWN_ERROR.getErrorMsg();
}
if (!result.isSetErrMessage()) {
return "";
}
return result.getErrMessage();
}
public ShowResultSet getProxyResultSet() {
if (result == null) {
return null;

View File

@ -396,6 +396,20 @@ public class StmtExecutor {
return masterOpExecutor.getProxyStatus();
}
public int getProxyStatusCode() {
if (masterOpExecutor == null) {
return MysqlStateType.UNKNOWN.ordinal();
}
return masterOpExecutor.getProxyStatusCode();
}
public String getProxyErrMsg() {
if (masterOpExecutor == null) {
return MysqlStateType.UNKNOWN.name();
}
return masterOpExecutor.getProxyErrMsg();
}
public boolean isSyncLoadKindStmt() {
if (parsedStmt == null) {
return false;

View File

@ -530,6 +530,8 @@ struct TMasterOpResult {
3: optional TShowResultSet resultSet;
4: optional Types.TUniqueId queryId;
5: optional string status;
6: optional i32 statusCode;
7: optional string errMessage;
}
struct TUpdateExportTaskStatusRequest {