StarHuzy opened a new issue, #28401:
URL: https://github.com/apache/shardingsphere/issues/28401

   ## Bug Report
   Using local transactions without rollback
   I used a single database sharding tables use local transaction  mode
   I have configured two tables 
   
   - product
   - order
   
   `sharding.yaml`
   i setting
   _defaultType: LOCAL_
   ```
   dataSources:
     product:
       dataSourceClassName: com.zaxxer.hikari.HikariDataSource
       driverClassName: com.mysql.jdbc.Driver
       jdbcUrl: jdbc:mysql://192.168.18.128:3310/db_order
       username: root
       password: 123456
   rules:
   - !SHARDING
     tables:
       t_product: # 分表,逻辑表名
         # 节点表添加下初始的表,后续会在新增租户的时候新增表且刷新节点
         actualDataNodes: 
product.t_product,product.t_product_1,product.t_product_2
         tableStrategy: # 配置分表策略
           standard: # 用于单分片键的标准分片场景
             shardingColumn: tenant_id
             shardingAlgorithmName: real-data-inline
       t_order: # 分表,逻辑表名
         # 节点表添加下初始的表,后续会在新增租户的时候新增表且刷新节点
         actualDataNodes: product.t_order,product.t_order_1,product.t_order_2
         tableStrategy: # 配置分表策略
           standard: # 用于单分片键的标准分片场景
             shardingColumn: tenant_id
             shardingAlgorithmName: real-data-inline
     # 分片算法配置
     shardingAlgorithms:
       real-data-inline: # 分片算法名称
         type: CLASS_BASED #自定义策略
         props:
           strategy: standard
           # 包名+类名
           algorithmClassName: org.example.utils.DataShardingAlgorithm
     bindingTables:
       - t_product,t_order
   - !TRANSACTION
       defaultType: LOCAL
   props:
     sql-show: true
   ```
   _Method implementation_
   ```
       @Transactional
       public Object addProductAndOrder(){
           Product product = new Product();
           product.setProductNo("TEST-11111");
           product.setTenantId(2);
           productMapper.insert(product);
   
           int i = 1/0;
           Order order = new Order();
           order.setOrderNo("aaaaa");
           order.setTenantId(2);
           orderMapper.insert(order);
           return "success";
       }
   ```
   
   i setting  ` int i = 1/0;`  imitate exception
   
   
   ```
   2023-09-10 16:26:37.600  INFO 9244 --- [nio-8080-exec-1] ShardingSphere-SQL  
                     : Logic SQL: INSERT INTO t_product  ( id,
   product_no,
   tenant_id )  VALUES  ( ?,
   ?,
   ? )
   2023-09-10 16:26:37.600  INFO 9244 --- [nio-8080-exec-1] ShardingSphere-SQL  
                     : Actual SQL: product ::: INSERT INTO t_product_2  ( id,
   product_no,
   tenant_id )  VALUES  (?, ?, ?) ::: [1700787847348391938, TEST-11111, 2]
   2023-09-10 16:26:37.644 ERROR 9244 --- [nio-8080-exec-1] 
o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet 
[dispatcherServlet] in context with path [] threw exception [Request processing 
failed; nested exception is java.lang.ArithmeticException: / by zero] with root 
cause
   
   java.lang.ArithmeticException: / by zero
        at 
org.example.controller.UserController.addProductAndOrder(UserController.java:65)
 ~[classes/:na]
        at 
org.example.controller.UserController$$FastClassBySpringCGLIB$$6f13626b.invoke(<generated>)
 ~[classes/:na]
        at 
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) 
~[spring-core-5.3.29.jar:5.3.29]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
 ~[spring-aop-5.3.29.jar:5.3.29]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
 ~[spring-aop-5.3.29.jar:5.3.29]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
 ~[spring-aop-5.3.29.jar:5.3.29]
        at 
org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
 ~[spring-tx-5.3.29.jar:5.3.29]
        at 
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)
 ~[spring-tx-5.3.29.jar:5.3.29]
        at 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
 ~[spring-tx-5.3.29.jar:5.3.29]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 ~[spring-aop-5.3.29.jar:5.3.29]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
 ~[spring-aop-5.3.29.jar:5.3.29]
        at 
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
 ~[spring-aop-5.3.29.jar:5.3.29]
        at 
org.example.controller.UserController$$EnhancerBySpringCGLIB$$23380ca2.addProductAndOrder(<generated>)
 ~[classes/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[na:1.8.0_131]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[na:1.8.0_131]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[na:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]
        at 
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
 ~[spring-web-5.3.29.jar:5.3.29]
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
 ~[spring-web-5.3.29.jar:5.3.29]
        at 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
 ~[spring-webmvc-5.3.29.jar:5.3.29]
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
 ~[spring-webmvc-5.3.29.jar:5.3.29]
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
 ~[spring-webmvc-5.3.29.jar:5.3.29]
        at 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
 ~[spring-webmvc-5.3.29.jar:5.3.29]
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
 ~[spring-webmvc-5.3.29.jar:5.3.29]
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
 ~[spring-webmvc-5.3.29.jar:5.3.29]
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
 ~[spring-webmvc-5.3.29.jar:5.3.29]
        at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
 ~[spring-webmvc-5.3.29.jar:5.3.29]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:529) 
~[tomcat-embed-core-9.0.78.jar:4.0.FR]
        at 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
 ~[spring-webmvc-5.3.29.jar:5.3.29]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) 
~[tomcat-embed-core-9.0.78.jar:4.0.FR]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
~[tomcat-embed-websocket-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
 ~[spring-web-5.3.29.jar:5.3.29]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.29.jar:5.3.29]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
 ~[spring-web-5.3.29.jar:5.3.29]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.29.jar:5.3.29]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
 ~[spring-web-5.3.29.jar:5.3.29]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.29.jar:5.3.29]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
 ~[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
 [tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
 [tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) 
[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) 
[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
 [tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) 
[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) 
[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
 [tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
 [tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
 [tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) 
[tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
 [tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
 [tomcat-embed-core-9.0.78.jar:9.0.78]
        at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 [tomcat-embed-core-9.0.78.jar:9.0.78]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
   ```
   
![image](https://github.com/apache/shardingsphere/assets/42610282/cbe40b06-e4cc-45f2-b847-17ea6b517027)
   
![image](https://github.com/apache/shardingsphere/assets/42610282/7f45f049-5c4d-4eb1-bc2a-769ac26851cb)
   
   
   
   The execution results are shown above,Transaction not rolled back, How can I 
configure to solve the above problem?
   
   very Thank you.
   ### Which version of ShardingSphere did you use?
   
   shardingsphere-jdbc 5.3.2 + JDK 17 + spring-boot 2.7.14
   ### Which project did you use? ShardingSphere-JDBC or ShardingSphere-Proxy?
   ShardingSphere-JDBC 
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: 
[email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to