When running LogCleanupCommand with olderThan parameter, the following SQL is issued.
- NodeInstanceLog
delete from NodeInstanceLog where log_date<=? and (processInstanceId in (select processins1_.processInstanceId from ProcessInstanceLog processins1_ where processins1_.status in (2 , 3)))
- VariableInstanceLog
delete from VariableInstanceLog where log_date<=? and (processInstanceId in (select processins1_.processInstanceId from ProcessInstanceLog processins1_ where processins1_.status in (2 , 3)))
- ProcessInstanceLog
delete from ProcessInstanceLog where (status in (2 , 3)) and end_date<=?
Therefore, it's possible that a part of NodeInstanceLog/VariableInstanceLog are deleted
if NodeInstanceLog.log_date/VariableInstanceLog.log_date is older than the date calculated based on olderThan date
and
If ProcessInstanceLog.end_date is later than the date calculated based on olderThan date
In addition, RequestInfo, ErrorInfo, ExecutionErrorInfo are deleted regardless of existence of corresponding ProcessInstanceLog.
Customer expects that
- When olderThan is specified, at first identify the target ProcessInstanceId whose ProcessInstanceLog.end_date is older than the specified date, and then delete corresponding ProcessInstanceLog, NodeInstanceLog, VariableInstanceLog, RequestInfo, ErrorInfo and ExecutionErrorInfo.
e.g.
delete from NodeInstanceLog where ProcessInstanceId in (select processins1_.processInstanceId from ProcessInstanceLog processins1_ where processins1_.status in (2 , 3) and processins1_.end_date <= ?);
- Regarding RequestInfo, ErrorInfo, ExecutionErrorInfo, if these does not relate to the specific process, delete these if these date is older than specified date.
- clones
-
JBPM-7780 ExecutionError/LogCleanupCommand delete a part of logs in some conditions
- Closed