boot 版 2.7.2.RELEASE oracle 运行一段时间报错

Blade 未结 1 695
小白
小白 剑圣 2021-03-12 21:04

一、该问题的重现步骤是什么?

  1. 定时器运行一段时间就会报错

    image.png

  2. 使用群主优化后的代码还是回报上面的错误,下面是优化的代码

  3. org.springblade.core.mp.plugins;
    
    com.alibaba.druid.DbType;
    com.alibaba.druid.filter.FilterChain;
    com.alibaba.druid.filter.FilterEventAdapter;
    com.alibaba.druid.proxy.jdbc.JdbcParameter;
    com.alibaba.druid.proxy.jdbc.ResultSetProxy;
    com.alibaba.druid.proxy.jdbc.StatementProxy;
    com.alibaba.druid.sql.SQLUtils;
    lombok.;
    lombok.extern.slf4j.;
    org.springblade.core.mp.props.MybatisPlusProperties;
    org.springblade.core.tool.utils.StringUtil;
    
    java.util.ArrayList;
    java.util.Arrays;
    java.util.List;
    
    SqlLogInterceptor FilterEventAdapter {
       SQLUtils.FormatOption = SQLUtils.FormatOption(, );
    
       List<String> = ArrayList<>(Arrays.(, ));
    
       MybatisPlusProperties ;
    
       SqlLogInterceptor(MybatisPlusProperties properties) {
          .= properties;
          (properties.getSqlLogExclude().size() > ) {
             .addAll(properties.getSqlLogExclude());
          }
       }
    
       statementExecuteBefore(StatementProxy statement, String sql) {
          statement.setLastExecuteStartNano();
       }
    
       statementExecuteBatchBefore(StatementProxy statement) {
          statement.setLastExecuteStartNano();
       }
    
       statementExecuteUpdateBefore(StatementProxy statement, String sql) {
          statement.setLastExecuteStartNano();
       }
    
       statementExecuteQueryBefore(StatementProxy statement, String sql) {
          statement.setLastExecuteStartNano();
       }
    
       statementExecuteAfter(StatementProxy statement, String sql, firstResult) {
          statement.setLastExecuteTimeNano();
       }
    
       statementExecuteBatchAfter(StatementProxy statement, [] result) {
          statement.setLastExecuteTimeNano();
       }
    
       statementExecuteQueryAfter(StatementProxy statement, String sql, ResultSetProxy resultSet) {
          statement.setLastExecuteTimeNano();
       }
    
       statementExecuteUpdateAfter(StatementProxy statement, String sql, updateCount) {
          statement.setLastExecuteTimeNano();
       }
    
       statement_close(FilterChain chain, StatementProxy statement) {
          (!.getSqlLog()) {
             chain.statement_close(statement);
             ;
          }
          (!.isInfoEnabled()) {
             chain.statement_close(statement);
             ;
          }
          String sql = statement.getBatchSql();
          (StringUtil.(sql)) {
             chain.statement_close(statement);
             ;
          }
          ((sql)) {
             chain.statement_close(statement);
             ;
          }
          parametersSize = statement.getParametersSize();
          List<Object> parameters = ArrayList<>(parametersSize);
          (i = ; i < parametersSize; ++i) {
             JdbcParameter jdbcParam = statement.getParameter(i);
             parameters.add(jdbcParam != ? jdbcParam.getValue() : );
          }
          String dbType = statement.getConnectionProxy().getDirectDataSource().getDbType();
          String formattedSql = SQLUtils.(sql, DbType.(dbType), parameters, );
          (formattedSql, statement);
          chain.statement_close(statement);
       }
    
       printSql(String sql, StatementProxy statement) {
          String sqlLogger = +
             +
             +
             ;
          .info(sqlLogger, sql.trim(), StringUtil.(statement.getLastExecuteTimeNano()));
       }
    
       excludeSql(String sql) {
          (String exclude : ) {
             (sql.contains(exclude)) {
                ;
             }
          }
          ;
       }
    
    }


3.


二、你期待的结果是什么?实际看到的又是什么?

系统正常运行

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

boot版 2.7.2.RELEASE  win10

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 2021-03-12 21:33

    这样,你从私服下载最新的版本,然后把你的定时器代码加上,确保它可以重现,然后把sql、整合好的框架打一个压缩包发送到bladejava@qq.com,我下载后本地跑一下看看是否会重现这个问题。

    0 讨论(1)
提交回复