Open shenbaoNew opened 1 year ago
补充完整堆栈,这个明显不是重点
补充完整堆栈,这个明显不是重点
digi-code: 019 digi-message: RUFJIFJlc3BvbnNlOuW5s+WPsOi/lOWbnuWQjOatpee7k+aenA== digi-reqid: 734a1c33-4ea6-444b-b2a9-807045e110ff digi-srvver: 1.0 digi-srvcode: 100 routerkey: DCTest1 Content-Type: application/json;charset=utf-8
{"std_data":{"execution":{"sql_code":"","code":"B.INV.130.0029","stacktrace":"java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.XXXXXXX.app.container.ServiceFuse.execute(ServiceFuse.java:17)
at com.XXXXXXX.gateway.fuse.execute.DWFuseRunnable.lambda$getReturnConsumer$11(DWFuseRunnable.java:47)
at com.XXXXXXX.gateway.fuse.execute.DWFuseRunnable.lambda$getReturnRunnable$9(DWFuseRunnable.java:23)
at io.vavr.control.Try.run(Try.java:118)
at io.vavr.control.Try.runRunnable(Try.java:134)
at com.XXXXXXX.gateway.fuse.DWFuseExecutor.onExecute(DWFuseExecutor.java:55)
at com.XXXXXXX.gateway.fuse.DWFuseExecutor.execute(DWFuseExecutor.java:193)
at com.XXXXXXX.app.container.DWMethod.invoke(DWMethod.java:228)
at com.XXXXXXX.app.container.DWContainerContext.invoke(DWContainerContext.java:230)
at com.XXXXXXX.app.container.DWContainerContext.invoke(DWContainerContext.java:185)
at com.XXXXXXX.gateway.controller.EaiController.eai(EaiController.java:297)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:158)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:126)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:111)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:84)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.XXXXXXX.gateway.filter.LogContextFilter.doFilter(LogContextFilter.java:65)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.XXXXXXX.gateway.filter.TokenFilter.doFilter(TokenFilter.java:205)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.XXXXXXX.gateway.filter.TokenAllowAnonymousFilter.doFilter(TokenAllowAnonymousFilter.java:59)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.XXXXXXX.gateway.service.permission.DWSecurityContextInitFilter.doFilter(DWSecurityContextInitFilter.java:80)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.XXXXXXX.gateway.filter.DWEaiServiceMethodLocateFilter.doFilter(DWEaiServiceMethodLocateFilter.java:90)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.XXXXXXX.gateway.filter.EaiHealthCheckFilter.doFilter(EaiHealthCheckFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:353)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1629)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.XXXXXXX.exceptions.DWDataException: In DWDataSet. The DWDataTableName : inventory_balance_detail -> DWDataRowState : C -> DWDataRowIndex : 0 is error. io.seata.common.exception.ShouldNeverHappenException Query: INSERT INTO inventory_balance_detail(item_no, item_name, item_spec, item_feature_no, item_feature_spec, warehouse_no, warehouse_name, inventory_qty, inv_unit_no, inventory_unit_name, last_stock_out_date, last_stock_in_date, storage_spaces_no, storage_spaces_name, lot_no, lot_description, remark, eoc_company_id, eoc_site_id, create_by, create_date, tenantsid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) Parameters: [[001005, , , , , 001, , 0, , , 1900-01-01, 1900-01-01, , , , , , 1, 1, LXQ0406, 2023-02-08 14:22:58.608, 509432491012672]]
at com.XXXXXXX.exceptions.DWDataException.rethrow(DWDataException.java:55)
at com.XXXXXXX.dao.generic.DWDataSetDaoImpl.execute(DWDataSetDaoImpl.java:560)
at com.XXXXXXX.CreateInventoryBalanceDetailInfoService.doInventoryBalanceDetailInfo(CreateInventoryBalanceDetailInfoService.java:107)
at com.XXXXXXX.CreateInventoryBalanceDetailInfoService.createInventoryBalanceDetailInfo(CreateInventoryBalanceDetailInfoService.java:52)
at com.XXXXXXX.CreateInventoryBalanceDetailInfoService$$FastClassBySpringCGLIB$$e1a4789.invoke(
其实我是把与seata相关的重点贴上去了 全部的都在这儿了,XXXXXXX 是我修改的,这个不影响分析问题
没有rm的堆栈,看起来这个是从rm侧抛出,被tm截取的异常,还不是最完成的,请从对应抛异常的rm侧复制完整异常堆栈
2023/02/10 10:49:28 DEBUG [116] bind 172.16.10.234:8091:5963119461354472011
2023/02/10 10:49:28 INFO [116] Begin new global transaction [172.16.10.234:8091:5963119461354472011]
2023/02/10 10:49:28 INFO [116] io>invoke[1675997368366]{116}>xxx.dc.inv.inventory.service.impl.business.CreateItemWarehouseInfoService.createItemWarehouseInfo(headers,messageBody) input: ({x-request-id=f367d3e99098c553ef7ba64206cee334, content-length=267, x-forwarded-proto=http, postman-token=f3a28e03-50fb-4126-8538-c0bd85620a6f,xxx)
2023/02/10 10:49:28 INFO [116] excute, xid:172.16.10.234:8091:5963119461354472011
2023/02/10 10:49:28 DEBUG [116] Returning cached instance of singleton bean 'dw-queryRunner'
2023/02/10 10:49:28 DEBUG [116] The same extension io.seata.sqlparser.druid.mysql.MySQLOperateRecognizerHolder has already been loaded, skipped
2023/02/10 10:49:28 DEBUG [116] The same extension io.seata.sqlparser.druid.oracle.OracleOperateRecognizerHolder has already been loaded, skipped
2023/02/10 10:49:28 DEBUG [116] The same extension io.seata.sqlparser.druid.postgresql.PostgresqlOperateRecognizerHolder has already been loaded, skipped
2023/02/10 10:49:28 DEBUG [116] Returning cached instance of singleton bean 'dw-queryRunner'
2023/02/10 10:49:28 DEBUG [116] Returning cached instance of singleton bean 'dw-queryRunner'
2023/02/10 10:49:28 DEBUG [116] [SQL.statement]INSERT INTO item_warehouse(item_no, item_name, item_spec, item_feature_no, item_feature_spec, warehouse_no, warehouse_name, inventory_qty, inv_unit_no, inventory_unit_name, last_stock_out_date, last_stock_in_date, safety_inventory_qty, highest_inventory_qty, replenish_point, economy_batch_qty, lately_stock_in_storage_spaces_no, lately_stock_in_storage_spaces_name, first_storage_date, standard_inventory_qty, standard_turnover_rate, remark, eoc_company_id, eoc_site_id, create_by, create_date, tenantsid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2023/02/10 10:49:28 DEBUG [116] [SQL.params][row=1]ITEM01121(String), (String), (String), (String), (String), DH003(String), (String), 0(Integer), (String), (String), 1900-01-01(String), 1900-01-01(String), 0(Integer), 0(Integer), 0(Integer), 0(Integer), (String), (String), 1900-01-01(String), 0(Integer), 0(Integer), (String), 1(String), 1(String), LXQ0406(String), 2023-02-10 10:49:28.551(Timestamp), 509432491012672(Long)
2023/02/10 10:49:28 DEBUG [52] will send ping msg,channel [id: 0x5f6d64a3, L:/172.16.10.105:52990 - R:/172.16.10.151:8091]
2023/02/10 10:49:28 DEBUG [52] write message:services ping, channel:[id: 0x5f6d64a3, L:/172.16.10.105:52990 - R:/172.16.10.151:8091],active?true,writable?true,isopen?true
2023/02/10 10:49:28 DEBUG [52] will send ping msg,channel [id: 0x08453ade, L:/172.16.10.105:42426 - R:/172.16.10.234:8091]
2023/02/10 10:49:28 DEBUG [52] write message:services ping, channel:[id: 0x08453ade, L:/172.16.10.105:42426 - R:/172.16.10.234:8091],active?true,writable?true,isopen?true
2023/02/10 10:49:28 DEBUG [52] io.seata.core.rpc.netty.RmNettyRemotingClient@59872777 msgId:283, body:services pong
2023/02/10 10:49:28 DEBUG [52] received PONG from /172.16.10.151:8091
2023/02/10 10:49:28 DEBUG [52] io.seata.core.rpc.netty.RmNettyRemotingClient@59872777 msgId:284, body:services pong
2023/02/10 10:49:28 DEBUG [52] received PONG from /172.16.10.234:8091
2023/02/10 10:49:28 INFO [116] [fixed-nacos-0.nacos-headless.nacos.svc.cluster.local_8848-nacos-1.nacos-headless.nacos.svc.cluster.local_8848-nacos-2.nacos-headless.nacos.svc.cluster.local_8848-9a9386ce-d7eb-4f3a-a4eb-c3ef94444316] [subscribe] client.rm.lock.retryInterval+SEATA_GROUP+9a9386ce-d7eb-4f3a-a4eb-c3ef94444316
2023/02/10 10:49:28 INFO [116] [fixed-nacos-0.nacos-headless.nacos.svc.cluster.local_8848-nacos-1.nacos-headless.nacos.svc.cluster.local_8848-nacos-2.nacos-headless.nacos.svc.cluster.local_8848-9a9386ce-d7eb-4f3a-a4eb-c3ef94444316] [add-listener] ok, tenant=9a9386ce-d7eb-4f3a-a4eb-c3ef94444316, dataId=client.rm.lock.retryInterval, group=SEATA_GROUP, cnt=1
2023/02/10 10:49:28 INFO [116] [fixed-nacos-0.nacos-headless.nacos.svc.cluster.local_8848-nacos-1.nacos-headless.nacos.svc.cluster.local_8848-nacos-2.nacos-headless.nacos.svc.cluster.local_8848-9a9386ce-d7eb-4f3a-a4eb-c3ef94444316] [add-listener] ok, tenant=9a9386ce-d7eb-4f3a-a4eb-c3ef94444316, dataId=client.rm.lock.retryInterval, group=SEATA_GROUP, cnt=2
2023/02/10 10:49:28 INFO [116] [fixed-nacos-0.nacos-headless.nacos.svc.cluster.local_8848-nacos-1.nacos-headless.nacos.svc.cluster.local_8848-nacos-2.nacos-headless.nacos.svc.cluster.local_8848-9a9386ce-d7eb-4f3a-a4eb-c3ef94444316] [subscribe] client.rm.lock.retryTimes+SEATA_GROUP+9a9386ce-d7eb-4f3a-a4eb-c3ef94444316
2023/02/10 10:49:28 INFO [116] [fixed-nacos-0.nacos-headless.nacos.svc.cluster.local_8848-nacos-1.nacos-headless.nacos.svc.cluster.local_8848-nacos-2.nacos-headless.nacos.svc.cluster.local_8848-9a9386ce-d7eb-4f3a-a4eb-c3ef94444316] [add-listener] ok, tenant=9a9386ce-d7eb-4f3a-a4eb-c3ef94444316, dataId=client.rm.lock.retryTimes, group=SEATA_GROUP, cnt=1
2023/02/10 10:49:28 INFO [116] [fixed-nacos-0.nacos-headless.nacos.svc.cluster.local_8848-nacos-1.nacos-headless.nacos.svc.cluster.local_8848-nacos-2.nacos-headless.nacos.svc.cluster.local_8848-9a9386ce-d7eb-4f3a-a4eb-c3ef94444316] [add-listener] ok, tenant=9a9386ce-d7eb-4f3a-a4eb-c3ef94444316, dataId=client.rm.lock.retryTimes, group=SEATA_GROUP, cnt=2
2023/02/10 10:49:28 ERROR [116] execute executeAutoCommitTrue error:null
io.seata.common.exception.ShouldNeverHappenException: null
at io.seata.rm.datasource.exec.mysql.MySQLInsertExecutor.getPkValuesByAuto(MySQLInsertExecutor.java:130) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.exec.mysql.MySQLInsertExecutor.getPkValues(MySQLInsertExecutor.java:92) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.exec.BaseInsertExecutor.afterImage(BaseInsertExecutor.java:76) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitFalse(AbstractDMLBaseExecutor.java:101) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.lambda$executeAutoCommitTrue$2(AbstractDMLBaseExecutor.java:140) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.ConnectionProxy$LockRetryPolicy.doRetryOnLockConflict(ConnectionProxy.java:343) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor$LockRetryPolicy.execute(AbstractDMLBaseExecutor.java:184) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitTrue(AbstractDMLBaseExecutor.java:139) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.doExecute(AbstractDMLBaseExecutor.java:82) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.exec.BaseTransactionalExecutor.execute(BaseTransactionalExecutor.java:113) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:111) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:50) ~[seata-all-1.4.2.jar:1.4.2]
at io.seata.rm.datasource.StatementProxy.executeBatch(StatementProxy.java:129) ~[seata-all-1.4.2.jar:1.4.2]
at org.apache.commons.dbutils.QueryRunner.batch(QueryRunner.java:152) ~[commons-dbutils-1.6.jar:1.6]
at org.apache.commons.dbutils.QueryRunner.batch(QueryRunner.java:111) ~[commons-dbutils-1.6.jar:1.6]
at xxx.app.dao.basic.DWBasicDaoImpl.innerBatch(DWBasicDaoImpl.java:225) ~[dwapiplatform-dao-5.0.2.1019.jar:5.0.2.1019]
at xxx.app.dao.generic.DWDataSetDaoImpl.insert(DWDataSetDaoImpl.java:573) ~[dwapiplatform-dao-5.0.2.1019.jar:5.0.2.1019]
at xxx.app.dao.generic.DWDataSetDaoImpl.execute(DWDataSetDaoImpl.java:522) ~[dwapiplatform-dao-5.0.2.1019.jar:5.0.2.1019]
at xxx.dc.inv.inventory.service.impl.business.CreateItemWarehouseInfoService.doCreateItemWarehouseInfo(CreateItemWarehouseInfoService.java:105) ~[dc-inv-service-impl-inventory-1.0.0.jar:?]
at xxx.dc.inv.inventory.service.impl.business.CreateItemWarehouseInfoService.createItemWarehouseInfo(CreateItemWarehouseInfoService.java:45) ~[dc-inv-service-impl-inventory-1.0.0.jar:?]
at xxx.dc.inv.inventory.service.impl.business.CreateItemWarehouseInfoService$$FastClassBySpringCGLIB$$5748d44.invoke(
麻烦看下这段补充的日志,(* ̄︶ ̄)
这应该是个兼容性问题,seata在你的插入列中没有找到主键时,会通过获取你的自增列获取主键值,但是你是AUTO_RANDOM看起来没有被识别为自增列,所以被拦截了,如果不拦截我个人认为statementProxy.getGeneratedKeys() 是可以获取到的,我们想下如何支持这个AUTO_RANDOM的特性
另外咨询下AUTO_RANDOM设置为主键,难道插入数据不会存在冲突的可能性吗?
另外咨询下AUTO_RANDOM设置为主键,难道插入数据不会存在冲突的可能性吗?
不会的,AUTO_RANDOM tidb的PD会生成全局唯一的主键,不存在冲突的可能;tidb本身就是分布式的数据库;反而手工生成主键会存在冲突的可能;
另外问下,如果修复的话,大概要多久?
Ⅰ. Issue Description
TIDB接Seata,数据库表结构主键字段,按照TIDB官方建议设置的是AUTO_RANDOM,没有设置AUTO_INCREMENT,主要是规避数据热点问题(PS:如果设置AUTO_INCREMENT seata能正常运作) CREATE TABLE
inventory_balance_detail
(inventory_balance_detail_id
bigint(20) NOT NULL /T![auto_rand] AUTO_RANDOM(5) /,tenantsid
bigint(20) NOT NULL DEFAULT '0' COMMENT '租户ID',item_no
varchar(40) NOT NULL DEFAULT '' COMMENT '品号',item_name
varchar(60) NOT NULL DEFAULT '' COMMENT '品名'modified_date
datetime DEFAULT NULL COMMENT '修改时间', PRIMARY KEY (inventory_balance_detail_id
) /T![clustered_index] CLUSTERED /, UNIQUE KEYinventory_balance_detail_uk
(item_no
) ) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin /T![auto_rand_base] AUTO_RANDOM_BASE=30001 / COMMENT = 'XXXX'Ⅱ. Describe what happened
测试分布式事务报错如下: "message": "SQLException: io.seata.common.exception.ShouldNeverHappenException
Just paste your stack trace here! Caused by: com.XXXXXXX.exceptions.DWDataException: In DWDataSet. The DWDataTableName : inventory_balance_detail -> DWDataRowState : C -> DWDataRowIndex : 0 is error. io.seata.common.exception.ShouldNeverHappenException Query: INSERT INTO inventory_balance_detail(item_no, item_name, item_spec, item_feature_no, item_feature_spec, warehouse_no, warehouse_name, inventory_qty, inv_unit_no, inventory_unit_name, last_stock_out_date, last_stock_in_date, storage_spaces_no, storage_spaces_name, lot_no, lot_description, remark, eoc_company_id, eoc_site_id, create_by, create_date, tenantsid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) Parameters: [[001005, , , , , 001, , 0, , , 1900-01-01, 1900-01-01, , , , , , 1, 1, LXQ0406, 2023-02-08 14:22:58.608, 509432491012672]] at com.XXXXXXX.exceptions.DWDataException.rethrow(DWDataException.java:55) at com.XXXXXXX.dao.generic.DWDataSetDaoImpl.execute(DWDataSetDaoImpl.java:560) at com.XXXXXXX.CreateInventoryBalanceDetailInfoService.doInventoryBalanceDetailInfo(CreateInventoryBalanceDetailInfoService.java:107) at com.XXXXXXX.CreateInventoryBalanceDetailInfoService.createInventoryBalanceDetailInfo(CreateInventoryBalanceDetailInfoService.java:52) at com.XXXXXXX.CreateInventoryBalanceDetailInfoService$$FastClassBySpringCGLIB$$e1a4789.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:747)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at com.XXXXXXX.container.ServicePublicMethodLogInterceptor.invoke(ServicePublicMethodLogInterceptor.java:57)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at io.seata.spring.annotation.GlobalTransactionalInterceptor$2.execute(GlobalTransactionalInterceptor.java:184)
at io.seata.tm.api.TransactionalTemplate.execute(TransactionalTemplate.java:127)
at io.seata.spring.annotation.GlobalTransactionalInterceptor.handleGlobalTransaction(GlobalTransactionalInterceptor.java:181)
at io.seata.spring.annotation.GlobalTransactionalInterceptor.invoke(GlobalTransactionalInterceptor.java:150)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
at com.XXXXXXX.CreateInventoryBalanceDetailInfoService$$EnhancerBySpringCGLIB$$ae6b3e1d.createInventoryBalanceDetailInfo()
at com.XXXXXXX.createInventoryBalanceDetailInfo(InventoryService.java:51)
at com.XXXXXXX.InventoryService$$FastClassBySpringCGLIB$$67118c36.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
Ⅲ. Describe what you expected to happen
数据能正常新增到DB
Ⅳ. How to reproduce it (as minimally and precisely as possible)
Ⅴ. Anything else we need to know?
Ⅵ. Environment: