当前使用版本(必填,否则不予处理)

3.3.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

在Controller层注解了@DS,用的非master库,在service层代码如下,就是在循环中查询了一下,使用java8提供的parallel方法时,循环第一个查询是正常的,第二次之后就自动把数据源切换到master库了,不是我在Controller层用@DS指定的库了。不用parallel时一切正常

serviceStockInstallRecordVo.getSn().stream().parallel().forEach(sn -> {
    queryWrapper.eq("sn", sn);
    Integer count = serviceStockInstallRecordMapper.selectCount(queryWrapper);
    if (count > 0) {
        repeatSns.add(sn);
    }
});

重现步骤(如果有就写完整)

同上

报错信息

因自动切换到默认的库,报错表不存在

\r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'ccsx_data.service_stock_install_record' doesn't exist\r\n### The error may exist in com/sonoscape/ccs/data/mapper/ServiceStockInstallRecordMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(1) FROM service_stock_install_record WHERE (sn = ? AND sn = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Table 'ccsx_data.service_stock_install_record' doesn't exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'ccsx_data.service_stock_install_record' doesn't exist

Comment From: miemieYaho

parallel 是异步的

Comment From: ChenSino

parallel 是异步的

额,为啥异步的在循环第二次及之后@ DSz注解就不生效了呢,不太明白

Comment From: huayanYu

@chen462488588 DS是基于ThreadLocal的,异步新开了线程了