From d07516b0eafa3e8d5d10a6cb8468f77a79421dc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?WangLiang/=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Sun, 18 Dec 2022 13:41:05 +0800 Subject: [PATCH 1/9] optimize: First support `spring:6.x` and `spring-boot:3.x` (#5115) --- .github/workflows/test.yml | 43 ++++++-- all/pom.xml | 5 + changes/en-us/develop.md | 3 +- changes/zh-cn/develop.md | 5 +- console/pom.xml | 33 ++++++ dependencies/pom.xml | 18 +++ integration/http-jakarta/pom.xml | 51 +++++++++ .../http/JakartaSeataWebMvcConfigurer.java | 31 ++++++ ...artaTransactionPropagationInterceptor.java | 41 +++++++ integration/http/pom.xml | 6 + ...er.java => HandlerInterceptorAdapter.java} | 20 ++-- .../http/SeataWebMvcConfigurer.java | 23 +--- .../TransactionPropagationInterceptor.java | 30 +++-- .../http/WebMvcConfigurerAdapter.java | 104 ++++++++++++++++++ .../seata/integration/http/MockWebServer.java | 30 ++++- pom.xml | 1 + ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../boot/autoconfigure/StarterConstants.java | 1 + ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../SeataHttpAutoConfiguration.java | 65 +++++++++++ .../spring-configuration-metadata.json | 13 +++ .../main/resources/META-INF/spring.factories | 4 +- ...ot.autoconfigure.AutoConfiguration.imports | 4 + server/pom.xml | 33 ++++++ 24 files changed, 509 insertions(+), 57 deletions(-) create mode 100644 integration/http-jakarta/pom.xml create mode 100644 integration/http-jakarta/src/main/java/io/seata/integration/http/JakartaSeataWebMvcConfigurer.java create mode 100644 integration/http-jakarta/src/main/java/io/seata/integration/http/JakartaTransactionPropagationInterceptor.java rename integration/http/src/main/java/io/seata/integration/http/{HttpHandlerExceptionResolver.java => HandlerInterceptorAdapter.java} (54%) rename seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/HttpAutoConfiguration.java => integration/http/src/main/java/io/seata/integration/http/SeataWebMvcConfigurer.java (50%) create mode 100644 integration/http/src/main/java/io/seata/integration/http/WebMvcConfigurerAdapter.java create mode 100644 seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataHttpAutoConfiguration.java create mode 100644 seata-spring-boot-starter/src/main/resources/META-INF/spring-configuration-metadata.json create mode 100644 seata-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3b6dad73ca5..418102858b1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,6 +5,7 @@ on: branches: [ test*, "*.*.*" ] jobs: + # job 1 test: name: "test" runs-on: ubuntu-latest @@ -13,8 +14,8 @@ jobs: matrix: java: [ 8, 11, 17 ] springboot: [ - 2.7.2 -Dspring-framework.version=5.3.22, - 2.6.10 -Dspring-framework.version=5.3.22, + 2.7.6 -Dspring-framework.version=5.3.24, + 2.6.14 -Dspring-framework.version=5.3.24, 2.5.14 -Dspring-framework.version=5.3.20, 2.4.13 -Dspring-framework.version=5.3.13, 2.3.12.RELEASE -Dspring-framework.version=5.2.15.RELEASE, @@ -32,14 +33,12 @@ jobs: # step 1 - name: "Checkout" uses: actions/checkout@v2.4.0 - # step 2 - name: "Set up Java JDK" uses: actions/setup-java@v2.5.0 with: distribution: 'zulu' java-version: ${{ matrix.java }} - # step 3 - name: "Test with Maven" # https://docs.github.com/cn/free-pro-team@latest/actions/reference/context-and-expression-syntax-for-github-actions#github-context @@ -49,14 +48,42 @@ jobs: else ./mvnw -T 4C clean test -Dspring-boot.version=${{ matrix.springboot }} -Dcheckstyle.skip=true -Dlicense.skip=true -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; fi - arm64-test: + + # job 2 + test-springboot3x: + name: "test-springboot3.x" + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + java: [ 17 ] + springboot: [ + 3.0.0 -Dspring-framework.version=6.0.2 -Dspring-boot-for-server.version=2.4.13 -Dspring-framework-for-server.version=5.3.18 -Dkotlin-maven-plugin.version=1.7.22 + ] + steps: + # step 1 + - name: "Checkout" + uses: actions/checkout@v2.4.0 + # step 2 + - name: "Set up Java JDK" + uses: actions/setup-java@v2.5.0 + with: + distribution: 'zulu' + java-version: ${{ matrix.java }} + # step 3 + - name: "Test with Maven" + run: | + ./mvnw -T 4C clean test -Dspring-boot.version=${{ matrix.springboot }} -Dcheckstyle.skip=false -Dlicense.skip=false -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; + + # job 3 + arm64-test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: springboot: [ - 2.7.2 -Dspring-framework.version=5.3.22, - 2.6.10 -Dspring-framework.version=5.3.22, + 2.7.6 -Dspring-framework.version=5.3.24, + 2.6.14 -Dspring-framework.version=5.3.24, 2.5.14 -Dspring-framework.version=5.3.20, 2.4.13 -Dspring-framework.version=5.3.13, 2.3.12.RELEASE -Dspring-framework.version=5.2.15.RELEASE, @@ -69,7 +96,7 @@ jobs: #1.2.8.RELEASE, #1.1.12.RELEASE, #1.0.2.RELEASE - ] + ] steps: - uses: actions/checkout@v2 - name: Set up QEMU diff --git a/all/pom.xml b/all/pom.xml index 3f2ac74ddd1..b87fe16cec9 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -148,6 +148,11 @@ seata-http ${project.version} + + io.seata + seata-http-jakarta + ${project.version} + io.seata seata-dubbo-alibaba diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 03ffeb016a1..c019266f3cc 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -9,7 +9,7 @@ Add changes here for all PR submitted to the develop branch. - [[#xxx](https://github.com/seata/seata/pull/xxx)] fix xxx ### optimize: -- [[#xxx](https://github.com/seata/seata/pull/xxx)] optimize xxx +- [[#5115](https://github.com/seata/seata/pull/5115)] compatible with the `spring-boot:3.x` ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] add test for xxx @@ -18,5 +18,6 @@ Thanks to these contributors for their code commits. Please report an unintended - [slievrly](https://github.com/slievrly) +- [wangliang181230](https://github.com/wangliang181230) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 499d8e8c469..f4cbecca042 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -8,8 +8,8 @@ ### bugfix: - [[#xxx](https://github.com/seata/seata/pull/xxx)] 修复 xxx -### optimize: -- [[#xxx](https://github.com/seata/seata/pull/xxx)] 优化 xxx +### optimize: +- [[#5115](https://github.com/seata/seata/pull/5115)] 兼容 `spring-boot:3.x` ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] 增加 xxx 测试 @@ -18,5 +18,6 @@ - [slievrly](https://github.com/slievrly) +- [wangliang181230](https://github.com/wangliang181230) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/console/pom.xml b/console/pom.xml index 4e70c7e7b0f..46fd8335c6b 100644 --- a/console/pom.xml +++ b/console/pom.xml @@ -28,6 +28,39 @@ seata-console ${project.version} console for Seata built with Maven + + ${spring-boot.version} + ${spring-framework.version} + + + + + + + org.springframework + spring-framework-bom + ${spring-framework-for-server.version} + pom + import + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot-for-server.version} + + + org.springframework + spring-framework-bom + + + pom + import + + + + org.springframework.boot diff --git a/dependencies/pom.xml b/dependencies/pom.xml index 5b0266b9a9d..3dea6c12f56 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -57,6 +57,9 @@ 1.11.2 27.0.1-jre 1 + 1.3.2 + 4.0.1 + 5.0.0 0.7.6 5.2.0 1.0.0 @@ -423,6 +426,21 @@ javax.inject ${javax-inject.version} + + javax.annotation + javax.annotation-api + ${javax.annotation-api.version} + + + javax.servlet + javax.servlet-api + ${javax.servlet-api.version} + + + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet-api.version} + com.weibo motan-core diff --git a/integration/http-jakarta/pom.xml b/integration/http-jakarta/pom.xml new file mode 100644 index 00000000000..c67ad004208 --- /dev/null +++ b/integration/http-jakarta/pom.xml @@ -0,0 +1,51 @@ + + + + + io.seata + seata-parent + ${revision} + ../../pom.xml + + 4.0.0 + seata-http-jakarta + jar + seata-http ${project.version} + http-client integration for Seata built with Maven + + + + ${project.groupId} + seata-http + ${project.version} + + + + org.springframework + spring-webmvc + provided + + + + jakarta.servlet + jakarta.servlet-api + provided + + + diff --git a/integration/http-jakarta/src/main/java/io/seata/integration/http/JakartaSeataWebMvcConfigurer.java b/integration/http-jakarta/src/main/java/io/seata/integration/http/JakartaSeataWebMvcConfigurer.java new file mode 100644 index 00000000000..eaf5e227817 --- /dev/null +++ b/integration/http-jakarta/src/main/java/io/seata/integration/http/JakartaSeataWebMvcConfigurer.java @@ -0,0 +1,31 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.http; + +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; + +/** + * The Jakarta Seata Web Mvc Configurer + * + * @author wang.liang + */ +public class JakartaSeataWebMvcConfigurer extends SeataWebMvcConfigurer { + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(new JakartaTransactionPropagationInterceptor()); + } +} diff --git a/integration/http-jakarta/src/main/java/io/seata/integration/http/JakartaTransactionPropagationInterceptor.java b/integration/http-jakarta/src/main/java/io/seata/integration/http/JakartaTransactionPropagationInterceptor.java new file mode 100644 index 00000000000..e3c2f198050 --- /dev/null +++ b/integration/http-jakarta/src/main/java/io/seata/integration/http/JakartaTransactionPropagationInterceptor.java @@ -0,0 +1,41 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.http; + +import io.seata.core.context.RootContext; + +/** + * The Jakarta SpringMVC Interceptor. + * + * @author wangxb + * @author wang.liang + */ +public class JakartaTransactionPropagationInterceptor extends TransactionPropagationInterceptor { + + //@Override + public boolean preHandle(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Object handler) { + String rpcXid = request.getHeader(RootContext.KEY_XID); + return this.bindXid(rpcXid); + } + + //@Override + public void afterCompletion(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Object handler, Exception ex) throws Exception { + if (RootContext.inGlobalTransaction()) { + String rpcXid = request.getHeader(RootContext.KEY_XID); + this.cleanXid(rpcXid); + } + } +} diff --git a/integration/http/pom.xml b/integration/http/pom.xml index f9bb2c65e8a..64ed3840b18 100644 --- a/integration/http/pom.xml +++ b/integration/http/pom.xml @@ -46,6 +46,12 @@ javax.servlet-api provided + + jakarta.servlet + jakarta.servlet-api + true + test + org.apache.httpcomponents httpclient diff --git a/integration/http/src/main/java/io/seata/integration/http/HttpHandlerExceptionResolver.java b/integration/http/src/main/java/io/seata/integration/http/HandlerInterceptorAdapter.java similarity index 54% rename from integration/http/src/main/java/io/seata/integration/http/HttpHandlerExceptionResolver.java rename to integration/http/src/main/java/io/seata/integration/http/HandlerInterceptorAdapter.java index 6b3d22c9ec5..b43e4420dec 100644 --- a/integration/http/src/main/java/io/seata/integration/http/HttpHandlerExceptionResolver.java +++ b/integration/http/src/main/java/io/seata/integration/http/HandlerInterceptorAdapter.java @@ -15,25 +15,27 @@ */ package io.seata.integration.http; -import io.seata.core.context.RootContext; +import org.springframework.lang.Nullable; +import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** - * Http exception handle. + * The Handler Interceptor Adapter * - * @author wangxb + * @author wang.liang */ -public class HttpHandlerExceptionResolver extends AbstractHandlerExceptionResolver { +public interface HandlerInterceptorAdapter extends HandlerInterceptor { + default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + return true; + } - @Override - protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse httpServletResponse, Object o, Exception e) { + default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception { + } - XidResource.cleanXid(request.getHeader(RootContext.KEY_XID)); - return null; + default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception { } } diff --git a/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/HttpAutoConfiguration.java b/integration/http/src/main/java/io/seata/integration/http/SeataWebMvcConfigurer.java similarity index 50% rename from seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/HttpAutoConfiguration.java rename to integration/http/src/main/java/io/seata/integration/http/SeataWebMvcConfigurer.java index ddaffc91275..b6e11f4067e 100644 --- a/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/HttpAutoConfiguration.java +++ b/integration/http/src/main/java/io/seata/integration/http/SeataWebMvcConfigurer.java @@ -13,35 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.boot.autoconfigure; +package io.seata.integration.http; -import io.seata.integration.http.HttpHandlerExceptionResolver; -import io.seata.integration.http.TransactionPropagationInterceptor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; - -import java.util.List; /** - * Auto bean add for spring context if in springboot env. + * The Seata Web Mvc Configurer * * @author wangxb + * @author wang.liang */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnWebApplication -public class HttpAutoConfiguration extends WebMvcConfigurerAdapter { +public class SeataWebMvcConfigurer implements WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new TransactionPropagationInterceptor()); } - - @Override - public void extendHandlerExceptionResolvers(List exceptionResolvers) { - exceptionResolvers.add(new HttpHandlerExceptionResolver()); - } - } diff --git a/integration/http/src/main/java/io/seata/integration/http/TransactionPropagationInterceptor.java b/integration/http/src/main/java/io/seata/integration/http/TransactionPropagationInterceptor.java index 9bea3bb67b6..d4251ca4384 100644 --- a/integration/http/src/main/java/io/seata/integration/http/TransactionPropagationInterceptor.java +++ b/integration/http/src/main/java/io/seata/integration/http/TransactionPropagationInterceptor.java @@ -22,22 +22,35 @@ import io.seata.core.context.RootContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; - /** - * Springmvc Intercepter. + * The SpringMVC Interceptor. * * @author wangxb + * @author wang.liang */ -public class TransactionPropagationInterceptor extends HandlerInterceptorAdapter { +public class TransactionPropagationInterceptor implements HandlerInterceptorAdapter { private static final Logger LOGGER = LoggerFactory.getLogger(TransactionPropagationInterceptor.class); + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { - String xid = RootContext.getXID(); String rpcXid = request.getHeader(RootContext.KEY_XID); + return this.bindXid(rpcXid); + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + if (RootContext.inGlobalTransaction()) { + String rpcXid = request.getHeader(RootContext.KEY_XID); + this.cleanXid(rpcXid); + } + } + + + protected boolean bindXid(String rpcXid) { + String xid = RootContext.getXID(); if (LOGGER.isDebugEnabled()) { LOGGER.debug("xid in RootContext[{}] xid in HttpContext[{}]", xid, rpcXid); @@ -52,11 +65,8 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons return true; } - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - if (RootContext.inGlobalTransaction()) { - XidResource.cleanXid(request.getHeader(RootContext.KEY_XID)); - } + protected void cleanXid(String rpcXid) { + XidResource.cleanXid(rpcXid); } } diff --git a/integration/http/src/main/java/io/seata/integration/http/WebMvcConfigurerAdapter.java b/integration/http/src/main/java/io/seata/integration/http/WebMvcConfigurerAdapter.java new file mode 100644 index 00000000000..ed9c2ea7146 --- /dev/null +++ b/integration/http/src/main/java/io/seata/integration/http/WebMvcConfigurerAdapter.java @@ -0,0 +1,104 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.http; + +import java.util.List; + +import org.springframework.format.FormatterRegistry; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.lang.Nullable; +import org.springframework.validation.MessageCodesResolver; +import org.springframework.validation.Validator; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.method.support.HandlerMethodReturnValueHandler; +import org.springframework.web.servlet.HandlerExceptionResolver; +import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer; +import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * The Web Mvc Configurer Adapter + * + * @author wang.liang + */ +public interface WebMvcConfigurerAdapter extends WebMvcConfigurer { + + default void configurePathMatch(PathMatchConfigurer configurer) { + } + + default void configureContentNegotiation(ContentNegotiationConfigurer configurer) { + } + + default void configureAsyncSupport(AsyncSupportConfigurer configurer) { + } + + default void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { + } + + default void addFormatters(FormatterRegistry registry) { + } + + default void addInterceptors(InterceptorRegistry registry) { + } + + default void addResourceHandlers(ResourceHandlerRegistry registry) { + } + + default void addCorsMappings(CorsRegistry registry) { + } + + default void addViewControllers(ViewControllerRegistry registry) { + } + + default void configureViewResolvers(ViewResolverRegistry registry) { + } + + default void addArgumentResolvers(List argumentResolvers) { + } + + default void addReturnValueHandlers(List returnValueHandlers) { + } + + default void configureMessageConverters(List> converters) { + } + + default void extendMessageConverters(List> converters) { + } + + default void configureHandlerExceptionResolvers(List exceptionResolvers) { + } + + default void extendHandlerExceptionResolvers(List exceptionResolvers) { + } + + @Nullable + default Validator getValidator() { + return null; + } + + @Nullable + default MessageCodesResolver getMessageCodesResolver() { + return null; + } + +} diff --git a/integration/http/src/test/java/io/seata/integration/http/MockWebServer.java b/integration/http/src/test/java/io/seata/integration/http/MockWebServer.java index 1d1c16afdb2..11f4e2aa122 100644 --- a/integration/http/src/test/java/io/seata/integration/http/MockWebServer.java +++ b/integration/http/src/test/java/io/seata/integration/http/MockWebServer.java @@ -56,6 +56,8 @@ public void start(int port) { socket.close(); } catch (IOException e) { e.printStackTrace(); + } catch (Exception e) { + throw new RuntimeException(e); } finally { if (serverSocket != null) { try { @@ -79,22 +81,38 @@ public String dispatch(MockRequest myRequest, MockResponse mockResponse) { String clazz = urlServletMap.get(myRequest.getPath()).split("_")[0]; String methodName = urlServletMap.get(myRequest.getPath()).split("_")[1]; HttpServletRequest request = new MockHttpServletRequest(myRequest); + + /* mock request interceptor */ + TransactionPropagationInterceptor interceptor = new TransactionPropagationInterceptor(); try { Class myServletClass = (Class) Class.forName(clazz); MockController myServlet = myServletClass.newInstance(); HttpTest.Person person = boxing(myRequest); Method method = myServletClass.getDeclaredMethod(methodName, HttpTest.Person.class); - /* mock request intercepter */ - TransactionPropagationInterceptor intercepter = new TransactionPropagationInterceptor(); + // pre + interceptor.preHandle(request, null, null); - intercepter.preHandle(request, null, null); Object result = method.invoke(myServlet, person); + String response = mockResponse.write(result.toString()); + + // post + interceptor.postHandle(request, null, null, null); + // afterCompletion without exception + try { + interceptor.afterCompletion(request, null, null, null); + } catch (Exception ex) { + throw new RuntimeException(ex); + } - return mockResponse.write(result.toString()); + return response; } catch (Exception e) { - HttpHandlerExceptionResolver resolver = new HttpHandlerExceptionResolver(); - resolver.doResolveException(request, null, null, e); + // afterCompletion with exception + try { + interceptor.afterCompletion(request, null, null, e); + } catch (Exception ex) { + throw new RuntimeException(ex); + } if (RootContext.getXID() == null) { try { return mockResponse.write("Callee remove local xid success"); diff --git a/pom.xml b/pom.xml index b63a62c9961..764cb6e129a 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,7 @@ integration/motan integration/grpc integration/http + integration/http-jakarta integration/hsf integration/brpc rm diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000000..c1a34a216be --- /dev/null +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +io.seata.spring.boot.autoconfigure.SeataTCCFenceAutoConfiguration diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/StarterConstants.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/StarterConstants.java index 1fa541f7d99..b04d7582081 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/StarterConstants.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/StarterConstants.java @@ -38,6 +38,7 @@ public interface StarterConstants { String UNDO_PREFIX = CLIENT_PREFIX + ".undo"; String LOAD_BALANCE_PREFIX_KEBAB_STYLE = CLIENT_PREFIX + ".load-balance"; String LOAD_BALANCE_PREFIX = CLIENT_PREFIX + ".loadBalance"; + String HTTP_PREFIX = CLIENT_PREFIX + ".http"; String LOG_PREFIX = SEATA_PREFIX + ".log"; String COMPRESS_PREFIX = UNDO_PREFIX + ".compress"; String TCC_PREFIX = SEATA_PREFIX + ".tcc"; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000000..b37b5d230b3 --- /dev/null +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +io.seata.spring.boot.autoconfigure.SeataCoreAutoConfiguration diff --git a/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataHttpAutoConfiguration.java b/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataHttpAutoConfiguration.java new file mode 100644 index 00000000000..bd5b541b2bb --- /dev/null +++ b/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataHttpAutoConfiguration.java @@ -0,0 +1,65 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.spring.boot.autoconfigure; + +import io.seata.integration.http.JakartaSeataWebMvcConfigurer; +import io.seata.integration.http.SeataWebMvcConfigurer; +import org.springframework.boot.autoconfigure.AutoConfigureOrder; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; + +import static io.seata.spring.boot.autoconfigure.StarterConstants.HTTP_PREFIX; + +/** + * Auto bean add for spring webmvc if in springboot env. + * + * @author wangxb + * @author wang.liang + */ +@Configuration(proxyBeanMethods = false) +@ConditionalOnWebApplication +@ConditionalOnMissingBean(SeataWebMvcConfigurer.class) +@ConditionalOnProperty(prefix = HTTP_PREFIX, name = "interceptor-enabled", havingValue = "true", matchIfMissing = true) +@AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE) +public class SeataHttpAutoConfiguration { + + /** + * The Jakarta seata web mvc configurer. + * + * @return the seata web mvc configurer + */ + @Bean + @ConditionalOnClass(name = "jakarta.servlet.http.HttpServletRequest") + public JakartaSeataWebMvcConfigurer jakartaSeataWebMvcConfigurer() { + return new JakartaSeataWebMvcConfigurer(); + } + + /** + * The Javax seata web mvc configurer. + * + * @return the seata web mvc configurer + */ + @Bean + @ConditionalOnMissingBean(JakartaSeataWebMvcConfigurer.class) + public SeataWebMvcConfigurer seataWebMvcConfigurer() { + return new SeataWebMvcConfigurer(); + } +} diff --git a/seata-spring-boot-starter/src/main/resources/META-INF/spring-configuration-metadata.json b/seata-spring-boot-starter/src/main/resources/META-INF/spring-configuration-metadata.json new file mode 100644 index 00000000000..660d7681dd9 --- /dev/null +++ b/seata-spring-boot-starter/src/main/resources/META-INF/spring-configuration-metadata.json @@ -0,0 +1,13 @@ +{ + "groups": [], + "properties": [ + { + "name": "seata.client.http.interceptor-enabled", + "type": "java.lang.Boolean", + "description": "Whether to enable the seata TransactionPropagationInterceptor", + "sourceType": "io.seata.spring.boot.autoconfigure.SeataHttpAutoConfiguration", + "defaultValue": true + } + ], + "hints": [] +} \ No newline at end of file diff --git a/seata-spring-boot-starter/src/main/resources/META-INF/spring.factories b/seata-spring-boot-starter/src/main/resources/META-INF/spring.factories index 4f7d18c07b0..b83ade816ef 100644 --- a/seata-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ b/seata-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -1,6 +1,6 @@ # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -io.seata.spring.boot.autoconfigure.SeataDataSourceAutoConfiguration,\ io.seata.spring.boot.autoconfigure.SeataAutoConfiguration,\ -io.seata.spring.boot.autoconfigure.HttpAutoConfiguration,\ +io.seata.spring.boot.autoconfigure.SeataDataSourceAutoConfiguration,\ +io.seata.spring.boot.autoconfigure.SeataHttpAutoConfiguration,\ io.seata.spring.boot.autoconfigure.SeataSagaAutoConfiguration diff --git a/seata-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/seata-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000000..8a983ec92b5 --- /dev/null +++ b/seata-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,4 @@ +io.seata.spring.boot.autoconfigure.SeataAutoConfiguration +io.seata.spring.boot.autoconfigure.SeataDataSourceAutoConfiguration +io.seata.spring.boot.autoconfigure.SeataHttpAutoConfiguration +io.seata.spring.boot.autoconfigure.SeataSagaAutoConfiguration diff --git a/server/pom.xml b/server/pom.xml index c66261bf7a5..9911f321a86 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -28,6 +28,39 @@ seata-server ${project.version} server for Seata built with Maven + + ${spring-boot.version} + ${spring-framework.version} + + + + + + + org.springframework + spring-framework-bom + ${spring-framework-for-server.version} + pom + import + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot-for-server.version} + + + org.springframework + spring-framework-bom + + + pom + import + + + + From 0827ee514d778ec2e6d2d96dfc698ddebe0287c3 Mon Sep 17 00:00:00 2001 From: FUNKYE <364176773@qq.com> Date: Sun, 18 Dec 2022 21:15:46 +0800 Subject: [PATCH 2/9] optimize: change the version to 1.6.1-SNAPSHOT (#5166) --- build/pom.xml | 2 +- core/src/main/java/io/seata/core/protocol/Version.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/pom.xml b/build/pom.xml index b8b7e778b4c..c636523d872 100644 --- a/build/pom.xml +++ b/build/pom.xml @@ -63,7 +63,7 @@ - 1.6.0 + 1.6.1-SNAPSHOT 1.8 diff --git a/core/src/main/java/io/seata/core/protocol/Version.java b/core/src/main/java/io/seata/core/protocol/Version.java index 2fdc55d9bf4..287c1334e7a 100644 --- a/core/src/main/java/io/seata/core/protocol/Version.java +++ b/core/src/main/java/io/seata/core/protocol/Version.java @@ -36,7 +36,7 @@ public class Version { /** * The constant CURRENT. */ - private static final String CURRENT = "1.6.0"; + private static final String CURRENT = "1.6.1-SNAPSHOT"; private static final String VERSION_0_7_1 = "0.7.1"; private static final String VERSION_1_5_0 = "1.5.0"; private static final int MAX_VERSION_DOT = 3; From 80001959a6d2702d1c9336fe78e44082e884bc3d Mon Sep 17 00:00:00 2001 From: xingfudeshi Date: Wed, 21 Dec 2022 12:42:44 +0800 Subject: [PATCH 3/9] optimize:unify the format of configuration items in yml files (#5120) --- changes/en-us/develop.md | 32 ++++++++++++++ changes/zh-cn/develop.md | 36 +++++++++++++++ script/client/spring/application.yml | 44 +++++++++---------- .../config/ConfigApolloProperties.java | 2 +- .../config/ConfigConsulProperties.java | 2 +- .../config/ConfigCustomProperties.java | 2 +- .../config/ConfigNacosProperties.java | 12 ++--- .../config/ConfigZooKeeperProperties.java | 4 +- .../registry/RegistryConsulProperties.java | 2 +- .../registry/RegistryCustomProperties.java | 2 +- .../registry/RegistryNacosProperties.java | 14 +++--- .../registry/RegistryRedisProperties.java | 2 +- .../registry/RegistryZooKeeperProperties.java | 4 +- .../autoconfigure/CorePropertiesTest.java | 10 ++--- .../server/store/StoreProperties.java | 2 +- .../server/store/StoreRedisProperties.java | 6 +-- .../autoconfigure/ServerPropertiesTest.java | 2 +- .../main/resources/application.example.yml | 12 ++--- 18 files changed, 129 insertions(+), 61 deletions(-) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index c019266f3cc..6e6827ef52e 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -9,6 +9,38 @@ Add changes here for all PR submitted to the develop branch. - [[#xxx](https://github.com/seata/seata/pull/xxx)] fix xxx ### optimize: +- [[#4774](https://github.com/seata/seata/pull/4774)] optimize mysql8 dependencies for seataio/seata-server image +- [[#4790](https://github.com/seata/seata/pull/4790)] Add a github action to publish Seata to OSSRH +- [[#4765](https://github.com/seata/seata/pull/4765)] mysql 8.0.29 not should be hold for connection +- [[#4750](https://github.com/seata/seata/pull/4750)] optimize unBranchLock romove xid +- [[#4797](https://github.com/seata/seata/pull/4797)] optimize the github actions +- [[#4800](https://github.com/seata/seata/pull/4800)] Add NOTICE as Apache License V2 +- [[#4681](https://github.com/seata/seata/pull/4681)] optimize the check lock during global transaction +- [[#4761](https://github.com/seata/seata/pull/4761)] use hget replace hmget because only one field +- [[#4414](https://github.com/seata/seata/pull/4414)] exclude log4j dependencies +- [[#4836](https://github.com/seata/seata/pull/4836)] optimize BaseTransactionalExecutor#buildLockKey(TableRecords rowsIncludingPK) method more readable +- [[#4865](https://github.com/seata/seata/pull/4865)] fix some security vulnerabilities in GGEditor +- [[#4590](https://github.com/seata/seata/pull/4590)] auto degrade enable to dynamic configure +- [[#4490](https://github.com/seata/seata/pull/4490)] tccfence log table delete by index +- [[#4911](https://github.com/seata/seata/pull/4911)] add license checker workflow +- [[#4917](https://github.com/seata/seata/pull/4917)] upgrade package-lock.json fix vulnerabilities +- [[#4924](https://github.com/seata/seata/pull/4924)] optimize pom dependencies +- [[#4932](https://github.com/seata/seata/pull/4932)] extract the default values for some properties +- [[#4925](https://github.com/seata/seata/pull/4925)] optimize java doc warning +- [[#4921](https://github.com/seata/seata/pull/4921)] fix some vulnerabilities in console and upgrade skywalking-eyes +- [[#4936](https://github.com/seata/seata/pull/4936)] optimize read of storage configuration +- [[#4946](https://github.com/seata/seata/pull/4946)] pass the sqlexception to client when get lock +- [[#4962](https://github.com/seata/seata/pull/4962)] optimize build and fix the base image +- [[#4974](https://github.com/seata/seata/pull/4974)] optimize cancel the limit on the number of globalStatus queries in Redis mode +- [[#4981](https://github.com/seata/seata/pull/4981)] optimize tcc fence record not exists errMessage +- [[#4985](https://github.com/seata/seata/pull/4985)] fix undo_log id repeat +- [[#4995](https://github.com/seata/seata/pull/4995)] fix mysql InsertOnDuplicateUpdate duplicate pk condition in after image query sql +- [[#5047](https://github.com/seata/seata/pull/5047)] remove useless code +- [[#5051](https://github.com/seata/seata/pull/5051)] undo log dirty throw BranchRollbackFailed_Unretriable +- [[#5075](https://github.com/seata/seata/pull/5075)] intercept the InsertOnDuplicateUpdate statement which has no primary key and unique index value +- [[#5104](https://github.com/seata/seata/pull/5104)] remove the druid dependency in ConnectionProxy +- [[#5120](https://github.com/seata/seata/pull/5120)] unify the format of configuration items in yml files +- [[#5124](https://github.com/seata/seata/pull/5124)] support oracle on delete tccfence logs - [[#5115](https://github.com/seata/seata/pull/5115)] compatible with the `spring-boot:3.x` ### test: diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index f4cbecca042..65933891fe5 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -9,8 +9,44 @@ - [[#xxx](https://github.com/seata/seata/pull/xxx)] 修复 xxx ### optimize: +- [[#4681](https://github.com/seata/seata/pull/4681)] 优化竞争锁过程 +- [[#4774](https://github.com/seata/seata/pull/4774)] 优化 seataio/seata-server 镜像中的 mysql8 依赖 +- [[#4750](https://github.com/seata/seata/pull/4750)] 优化AT分支释放全局锁不使用xid +- [[#4790](https://github.com/seata/seata/pull/4790)] 添加一个 github action,用于自动发布Seata到OSSRH +- [[#4765](https://github.com/seata/seata/pull/4765)] mysql8.0.29版本及以上XA模式不持connection至二阶段 +- [[#4797](https://github.com/seata/seata/pull/4797)] 优化所有github actions脚本 +- [[#4800](https://github.com/seata/seata/pull/4800)] 按照 Apache 协议规范,添加 NOTICE 文件 +- [[#4761](https://github.com/seata/seata/pull/4761)] 使用 hget 代替 RedisLocker 中的 hmget, 因为只有一个 field +- [[#4414](https://github.com/seata/seata/pull/4414)] 移除log4j依赖 +- [[#4836](https://github.com/seata/seata/pull/4836)] 优化 BaseTransactionalExecutor#buildLockKey(TableRecords rowsIncludingPK) 方法可读性 +- [[#4865](https://github.com/seata/seata/pull/4865)] 修复 Saga 可视化设计器 GGEditor 安全漏洞 +- [[#4590](https://github.com/seata/seata/pull/4590)] 自动降级支持开关支持动态配置 +- [[#4490](https://github.com/seata/seata/pull/4490)] tccfence 记录表优化成按索引删除 +- [[#4911](https://github.com/seata/seata/pull/4911)] 添加 header 和license 检测 +- [[#4917](https://github.com/seata/seata/pull/4917)] 升级 package-lock.json 修复漏洞 +- [[#4924](https://github.com/seata/seata/pull/4924)] 优化 pom 依赖 +- [[#4932](https://github.com/seata/seata/pull/4932)] 抽取部分配置的默认值 +- [[#4925](https://github.com/seata/seata/pull/4925)] 优化 javadoc 注释 +- [[#4921](https://github.com/seata/seata/pull/4921)] 修复控制台模块安全漏洞和升级 skywalking-eyes 版本 +- [[#4936](https://github.com/seata/seata/pull/4936)] 优化存储配置的读取 +- [[#4946](https://github.com/seata/seata/pull/4946)] 将获取锁时遇到的sql异常传递给客户端 +- [[#4962](https://github.com/seata/seata/pull/4962)] 优化构建配置,并修正docker镜像的基础镜像 +- [[#4974](https://github.com/seata/seata/pull/4974)] 取消redis模式下,查询globalStatus条数的限制 +- [[#4981](https://github.com/seata/seata/pull/4981)] 优化当tcc栅栏记录查不到时的错误提示 +- [[#4995](https://github.com/seata/seata/pull/4995)] 修复mysql InsertOnDuplicateUpdate后置镜像查询SQL中重复的主键查询条件 +- [[#5047](https://github.com/seata/seata/pull/5047)] 移除无用代码 +- [[#5051](https://github.com/seata/seata/pull/5051)] 回滚时undolog产生脏写需要抛出不再重试(BranchRollbackFailed_Unretriable)的异常 +- [[#5075](https://github.com/seata/seata/pull/5075)] 拦截没有主键及唯一索引值的insert on duplicate update语句 +- [[#5104](https://github.com/seata/seata/pull/5104)] ConnectionProxy脱离对druid的依赖 +- [[#5120](https://github.com/seata/seata/pull/5120)] 统一yml文件中的配置项格式 +- [[#5124](https://github.com/seata/seata/pull/5124)] 支持oracle删除tccfence记录表 - [[#5115](https://github.com/seata/seata/pull/5115)] 兼容 `spring-boot:3.x` +### test: +- [[#4411](https://github.com/seata/seata/pull/4411)] 测试Oracle数据库AT模式下类型支持 +- [[#4794](https://github.com/seata/seata/pull/4794)] 重构代码,尝试修复单元测试 `DataSourceProxyTest.getResourceIdTest()` +- [[#5101](https://github.com/seata/seata/pull/5101)] 修复zk注册和配置中心报ClassNotFoundException的问题 `DataSourceProxyTest.getResourceIdTest()` + ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] 增加 xxx 测试 diff --git a/script/client/spring/application.yml b/script/client/spring/application.yml index 8ee2b52628f..6f8f59cede4 100755 --- a/script/client/spring/application.yml +++ b/script/client/spring/application.yml @@ -83,36 +83,36 @@ seata: apollo-meta: http://192.168.1.204:8801 app-id: seata-server namespace: application - apollo-accesskey-secret: "" + apollo-accesskey-secret: etcd3: server-addr: http://localhost:2379 nacos: - namespace: "" + namespace: server-addr: 127.0.0.1:8848 group: SEATA_GROUP - username: "" - password: "" - context-path: "" + username: + password: + context-path: ##if use MSE Nacos with auth, mutex with username/password attribute - #access-key: "" - #secret-key: "" + #access-key: + #secret-key: data-id: seata.properties zk: server-addr: 127.0.0.1:2181 session-timeout: 6000 connect-timeout: 2000 - username: "" - password: "" + username: + password: node-path: /seata/seata.properties custom: - name: "" + name: registry: type: file file: name: file.conf consul: server-addr: 127.0.0.1:8500 - acl-token: "" + acl-token: etcd3: server-addr: http://localhost:2379 eureka: @@ -122,19 +122,19 @@ seata: application: seata-server server-addr: 127.0.0.1:8848 group : "SEATA_GROUP" - namespace: "" - username: "" - password: "" - context-path: "" + namespace: + username: + password: + context-path: ##if use MSE Nacos with auth, mutex with username/password attribute - #access-key: "" - #secret-key: "" + #access-key: + #secret-key: ##if use Nacos naming meta-data for SLB service registry, specify nacos address pattern rules here - #slbPattern = "" + #slbPattern = redis: server-addr: localhost:6379 db: 0 - password: "" + password: timeout: 0 sofa: server-addr: 127.0.0.1:9603 @@ -147,10 +147,10 @@ seata: server-addr: 127.0.0.1:2181 session-timeout: 6000 connect-timeout: 2000 - username: "" - password: "" + username: + password: custom: - name: "" + name: log: exception-rate: 100 tcc: diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigApolloProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigApolloProperties.java index e1a569cace1..4b42e6ef6d5 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigApolloProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigApolloProperties.java @@ -29,7 +29,7 @@ public class ConfigApolloProperties { private String appId = "seata-server"; private String apolloMeta; private String namespace = "application"; - private String apolloAccessKeySecret = ""; + private String apolloAccessKeySecret; private String apolloConfigService; private String cluster; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigConsulProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigConsulProperties.java index effd8db1967..876ac475932 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigConsulProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigConsulProperties.java @@ -28,7 +28,7 @@ public class ConfigConsulProperties { private String serverAddr; private String key = "seata.properties"; - private String aclToken = ""; + private String aclToken; public String getServerAddr() { return serverAddr; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigCustomProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigCustomProperties.java index eff9649cd21..915cdcf8da0 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigCustomProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigCustomProperties.java @@ -26,7 +26,7 @@ @Component @ConfigurationProperties(prefix = CONFIG_CUSTOM_PREFIX) public class ConfigCustomProperties { - private String name = ""; + private String name; public String getName() { return name; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigNacosProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigNacosProperties.java index 5680f658621..06c46252f54 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigNacosProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigNacosProperties.java @@ -27,14 +27,14 @@ @ConfigurationProperties(prefix = CONFIG_NACOS_PREFIX) public class ConfigNacosProperties { private String serverAddr; - private String namespace = ""; + private String namespace; private String group = "SEATA_GROUP"; - private String username = ""; - private String password = ""; - private String accessKey = ""; - private String secretKey = ""; + private String username; + private String password; + private String accessKey; + private String secretKey; private String dataId = "seata.properties"; - private String contextPath = ""; + private String contextPath; public String getServerAddr() { return serverAddr; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigZooKeeperProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigZooKeeperProperties.java index 12a70c0c9b9..897f97eb5ac 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigZooKeeperProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigZooKeeperProperties.java @@ -29,8 +29,8 @@ public class ConfigZooKeeperProperties { private String serverAddr; private long sessionTimeout = 6000L; private long connectTimeout = 2000L; - private String username = ""; - private String password = ""; + private String username; + private String password; private String nodePath = "/seata/seata.properties"; public String getServerAddr() { diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryConsulProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryConsulProperties.java index a597cdf4407..35ef0949e4b 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryConsulProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryConsulProperties.java @@ -28,7 +28,7 @@ public class RegistryConsulProperties { private String cluster = "default"; private String serverAddr = "127.0.0.1:8500"; - private String aclToken = ""; + private String aclToken; public String getCluster() { return cluster; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryCustomProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryCustomProperties.java index 4f503a80c75..a9d9182b91a 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryCustomProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryCustomProperties.java @@ -26,7 +26,7 @@ @Component @ConfigurationProperties(prefix = REGISTRY_CUSTOM_PREFIX) public class RegistryCustomProperties { - private String name = ""; + private String name; public String getName() { return name; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryNacosProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryNacosProperties.java index aec1910d179..1d881b7fb5e 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryNacosProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryNacosProperties.java @@ -27,16 +27,16 @@ @ConfigurationProperties(prefix = REGISTRY_NACOS_PREFIX) public class RegistryNacosProperties { private String serverAddr = "localhost:8848"; - private String namespace = ""; + private String namespace; private String group = "SEATA_GROUP"; private String cluster = "default"; - private String username = ""; - private String password = ""; - private String accessKey = ""; - private String secretKey = ""; + private String username; + private String password; + private String accessKey; + private String secretKey; private String application = "seata-server"; - private String slbPattern = ""; - private String contextPath = ""; + private String slbPattern; + private String contextPath; public String getServerAddr() { return serverAddr; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryRedisProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryRedisProperties.java index 03cacad8987..33f4ad78b4c 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryRedisProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryRedisProperties.java @@ -28,7 +28,7 @@ public class RegistryRedisProperties { private String serverAddr = "localhost:6379"; private int db = 0; - private String password = ""; + private String password; private String cluster = "default"; private int timeout = 0; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryZooKeeperProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryZooKeeperProperties.java index b96d2587efa..dcb0c407a86 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryZooKeeperProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryZooKeeperProperties.java @@ -30,8 +30,8 @@ public class RegistryZooKeeperProperties { private String serverAddr = "127.0.0.1:2181"; private long sessionTimeout = 6000L; private long connectTimeout = 2000L; - private String username = ""; - private String password = ""; + private String username; + private String password; public String getCluster() { return cluster; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/CorePropertiesTest.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/CorePropertiesTest.java index 210a778309f..3d5de56606b 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/CorePropertiesTest.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/CorePropertiesTest.java @@ -105,11 +105,11 @@ public void testRegistryEurekaProperties() { @Test public void testRegistryNacosProperties() { assertEquals("localhost:8848", context.getBean(RegistryNacosProperties.class).getServerAddr()); - assertEquals("", context.getBean(RegistryNacosProperties.class).getNamespace()); + assertEquals(null, context.getBean(RegistryNacosProperties.class).getNamespace()); assertEquals("SEATA_GROUP", context.getBean(RegistryNacosProperties.class).getGroup()); assertEquals("default", context.getBean(RegistryNacosProperties.class).getCluster()); - assertEquals("", context.getBean(RegistryNacosProperties.class).getUsername()); - assertEquals("", context.getBean(RegistryNacosProperties.class).getPassword()); + assertEquals(null, context.getBean(RegistryNacosProperties.class).getUsername()); + assertEquals(null, context.getBean(RegistryNacosProperties.class).getPassword()); assertEquals("seata-server", context.getBean(RegistryNacosProperties.class).getApplication()); } @@ -123,7 +123,7 @@ public void testRegistryProperties() { public void testRegistryRedisProperties() { assertEquals("localhost:6379", context.getBean(RegistryRedisProperties.class).getServerAddr()); assertEquals(0, context.getBean(RegistryRedisProperties.class).getDb()); - assertEquals("", context.getBean(RegistryRedisProperties.class).getPassword()); + assertEquals(null, context.getBean(RegistryRedisProperties.class).getPassword()); assertEquals("default", context.getBean(RegistryRedisProperties.class).getCluster()); assertEquals(0, context.getBean(RegistryRedisProperties.class).getTimeout()); } @@ -149,7 +149,7 @@ public void testRegistryZooKeeperProperties() { @Test public void testRegistryCustomProperties() { - assertEquals("", context.getBean(RegistryCustomProperties.class).getName()); + assertEquals(null, context.getBean(RegistryCustomProperties.class).getName()); } diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreProperties.java index 11de509c051..19000a1268b 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreProperties.java @@ -33,7 +33,7 @@ public class StoreProperties { */ private String mode = "file"; - private String publicKey = ""; + private String publicKey; public String getMode() { return mode; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java index d7d28e1175e..d695699abf5 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java @@ -32,7 +32,7 @@ public class StoreRedisProperties { * single, sentinel */ private String mode = "single"; - private String password = null; + private String password; private Integer maxConn = 10; private Integer minConn = 1; private Integer database = 0; @@ -133,11 +133,11 @@ public Single setPort(Integer port) { @Component @ConfigurationProperties(prefix = STORE_REDIS_SENTINEL_PREFIX) public static class Sentinel { - private String masterName = ""; + private String masterName; /** * such as "10.28.235.65:26379,10.28.235.65:26380,10.28.235.65:26381" */ - private String sentinelHosts = ""; + private String sentinelHosts; public String getMasterName() { return masterName; diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/test/java/io/seata/spring/boot/autoconfigure/ServerPropertiesTest.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/test/java/io/seata/spring/boot/autoconfigure/ServerPropertiesTest.java index 8bddb7acde7..043babc6ed9 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/test/java/io/seata/spring/boot/autoconfigure/ServerPropertiesTest.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/test/java/io/seata/spring/boot/autoconfigure/ServerPropertiesTest.java @@ -95,7 +95,7 @@ public void testStoreRedisPropertiesSingle() { @Test public void testStoreRedisPropertiesSentinel() { - assertEquals(context.getBean(StoreRedisProperties.Sentinel.class).getSentinelHosts(), ""); + assertEquals(context.getBean(StoreRedisProperties.Sentinel.class).getSentinelHosts(), null); } @AfterAll diff --git a/server/src/main/resources/application.example.yml b/server/src/main/resources/application.example.yml index d8f5f1f2fab..f42f934f3a2 100644 --- a/server/src/main/resources/application.example.yml +++ b/server/src/main/resources/application.example.yml @@ -42,8 +42,8 @@ seata: password: context-path: ##if use MSE Nacos with auth, mutex with username/password attribute - #access-key: "" - #secret-key: "" + #access-key: + #secret-key: data-id: seataServer.properties consul: server-addr: 127.0.0.1:8500 @@ -80,8 +80,8 @@ seata: password: context-path: ##if use MSE Nacos with auth, mutex with username/password attribute - #access-key: "" - #secret-key: "" + #access-key: + #secret-key: eureka: service-url: http://localhost:8761/eureka application: default @@ -97,8 +97,8 @@ seata: server-addr: 127.0.0.1:2181 session-timeout: 6000 connect-timeout: 2000 - username: "" - password: "" + username: + password: consul: cluster: default server-addr: 127.0.0.1:8500 From 07753df739cd16db1a44662fcfeae12adacf6849 Mon Sep 17 00:00:00 2001 From: whxxxxx <90163464+whxxxxx@users.noreply.github.com> Date: Wed, 21 Dec 2022 15:26:00 +0800 Subject: [PATCH 4/9] optimize: declare @Bean methods as static (#5180) --- changes/en-us/develop.md | 34 ++----------------- changes/zh-cn/develop.md | 33 ++---------------- .../autoconfigure/SeataAutoConfiguration.java | 2 +- .../SeataDataSourceAutoConfiguration.java | 2 +- 4 files changed, 8 insertions(+), 63 deletions(-) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 6e6827ef52e..0046408cd52 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -9,39 +9,9 @@ Add changes here for all PR submitted to the develop branch. - [[#xxx](https://github.com/seata/seata/pull/xxx)] fix xxx ### optimize: -- [[#4774](https://github.com/seata/seata/pull/4774)] optimize mysql8 dependencies for seataio/seata-server image -- [[#4790](https://github.com/seata/seata/pull/4790)] Add a github action to publish Seata to OSSRH -- [[#4765](https://github.com/seata/seata/pull/4765)] mysql 8.0.29 not should be hold for connection -- [[#4750](https://github.com/seata/seata/pull/4750)] optimize unBranchLock romove xid -- [[#4797](https://github.com/seata/seata/pull/4797)] optimize the github actions -- [[#4800](https://github.com/seata/seata/pull/4800)] Add NOTICE as Apache License V2 -- [[#4681](https://github.com/seata/seata/pull/4681)] optimize the check lock during global transaction -- [[#4761](https://github.com/seata/seata/pull/4761)] use hget replace hmget because only one field -- [[#4414](https://github.com/seata/seata/pull/4414)] exclude log4j dependencies -- [[#4836](https://github.com/seata/seata/pull/4836)] optimize BaseTransactionalExecutor#buildLockKey(TableRecords rowsIncludingPK) method more readable -- [[#4865](https://github.com/seata/seata/pull/4865)] fix some security vulnerabilities in GGEditor -- [[#4590](https://github.com/seata/seata/pull/4590)] auto degrade enable to dynamic configure -- [[#4490](https://github.com/seata/seata/pull/4490)] tccfence log table delete by index -- [[#4911](https://github.com/seata/seata/pull/4911)] add license checker workflow -- [[#4917](https://github.com/seata/seata/pull/4917)] upgrade package-lock.json fix vulnerabilities -- [[#4924](https://github.com/seata/seata/pull/4924)] optimize pom dependencies -- [[#4932](https://github.com/seata/seata/pull/4932)] extract the default values for some properties -- [[#4925](https://github.com/seata/seata/pull/4925)] optimize java doc warning -- [[#4921](https://github.com/seata/seata/pull/4921)] fix some vulnerabilities in console and upgrade skywalking-eyes -- [[#4936](https://github.com/seata/seata/pull/4936)] optimize read of storage configuration -- [[#4946](https://github.com/seata/seata/pull/4946)] pass the sqlexception to client when get lock -- [[#4962](https://github.com/seata/seata/pull/4962)] optimize build and fix the base image -- [[#4974](https://github.com/seata/seata/pull/4974)] optimize cancel the limit on the number of globalStatus queries in Redis mode -- [[#4981](https://github.com/seata/seata/pull/4981)] optimize tcc fence record not exists errMessage -- [[#4985](https://github.com/seata/seata/pull/4985)] fix undo_log id repeat -- [[#4995](https://github.com/seata/seata/pull/4995)] fix mysql InsertOnDuplicateUpdate duplicate pk condition in after image query sql -- [[#5047](https://github.com/seata/seata/pull/5047)] remove useless code -- [[#5051](https://github.com/seata/seata/pull/5051)] undo log dirty throw BranchRollbackFailed_Unretriable -- [[#5075](https://github.com/seata/seata/pull/5075)] intercept the InsertOnDuplicateUpdate statement which has no primary key and unique index value -- [[#5104](https://github.com/seata/seata/pull/5104)] remove the druid dependency in ConnectionProxy - [[#5120](https://github.com/seata/seata/pull/5120)] unify the format of configuration items in yml files -- [[#5124](https://github.com/seata/seata/pull/5124)] support oracle on delete tccfence logs - [[#5115](https://github.com/seata/seata/pull/5115)] compatible with the `spring-boot:3.x` +- [[#5180](https://github.com/seata/seata/pull/5180)] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator declare @bean methods as static ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] add test for xxx @@ -51,5 +21,7 @@ Thanks to these contributors for their code commits. Please report an unintended - [slievrly](https://github.com/slievrly) - [wangliang181230](https://github.com/wangliang181230) +- [xingfudeshi](https://github.com/xingfudeshi) +- [whxxxxx](https://github.com/whxxxxx) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 65933891fe5..2101723c471 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -9,38 +9,9 @@ - [[#xxx](https://github.com/seata/seata/pull/xxx)] 修复 xxx ### optimize: -- [[#4681](https://github.com/seata/seata/pull/4681)] 优化竞争锁过程 -- [[#4774](https://github.com/seata/seata/pull/4774)] 优化 seataio/seata-server 镜像中的 mysql8 依赖 -- [[#4750](https://github.com/seata/seata/pull/4750)] 优化AT分支释放全局锁不使用xid -- [[#4790](https://github.com/seata/seata/pull/4790)] 添加一个 github action,用于自动发布Seata到OSSRH -- [[#4765](https://github.com/seata/seata/pull/4765)] mysql8.0.29版本及以上XA模式不持connection至二阶段 -- [[#4797](https://github.com/seata/seata/pull/4797)] 优化所有github actions脚本 -- [[#4800](https://github.com/seata/seata/pull/4800)] 按照 Apache 协议规范,添加 NOTICE 文件 -- [[#4761](https://github.com/seata/seata/pull/4761)] 使用 hget 代替 RedisLocker 中的 hmget, 因为只有一个 field -- [[#4414](https://github.com/seata/seata/pull/4414)] 移除log4j依赖 -- [[#4836](https://github.com/seata/seata/pull/4836)] 优化 BaseTransactionalExecutor#buildLockKey(TableRecords rowsIncludingPK) 方法可读性 -- [[#4865](https://github.com/seata/seata/pull/4865)] 修复 Saga 可视化设计器 GGEditor 安全漏洞 -- [[#4590](https://github.com/seata/seata/pull/4590)] 自动降级支持开关支持动态配置 -- [[#4490](https://github.com/seata/seata/pull/4490)] tccfence 记录表优化成按索引删除 -- [[#4911](https://github.com/seata/seata/pull/4911)] 添加 header 和license 检测 -- [[#4917](https://github.com/seata/seata/pull/4917)] 升级 package-lock.json 修复漏洞 -- [[#4924](https://github.com/seata/seata/pull/4924)] 优化 pom 依赖 -- [[#4932](https://github.com/seata/seata/pull/4932)] 抽取部分配置的默认值 -- [[#4925](https://github.com/seata/seata/pull/4925)] 优化 javadoc 注释 -- [[#4921](https://github.com/seata/seata/pull/4921)] 修复控制台模块安全漏洞和升级 skywalking-eyes 版本 -- [[#4936](https://github.com/seata/seata/pull/4936)] 优化存储配置的读取 -- [[#4946](https://github.com/seata/seata/pull/4946)] 将获取锁时遇到的sql异常传递给客户端 -- [[#4962](https://github.com/seata/seata/pull/4962)] 优化构建配置,并修正docker镜像的基础镜像 -- [[#4974](https://github.com/seata/seata/pull/4974)] 取消redis模式下,查询globalStatus条数的限制 -- [[#4981](https://github.com/seata/seata/pull/4981)] 优化当tcc栅栏记录查不到时的错误提示 -- [[#4995](https://github.com/seata/seata/pull/4995)] 修复mysql InsertOnDuplicateUpdate后置镜像查询SQL中重复的主键查询条件 -- [[#5047](https://github.com/seata/seata/pull/5047)] 移除无用代码 -- [[#5051](https://github.com/seata/seata/pull/5051)] 回滚时undolog产生脏写需要抛出不再重试(BranchRollbackFailed_Unretriable)的异常 -- [[#5075](https://github.com/seata/seata/pull/5075)] 拦截没有主键及唯一索引值的insert on duplicate update语句 -- [[#5104](https://github.com/seata/seata/pull/5104)] ConnectionProxy脱离对druid的依赖 - [[#5120](https://github.com/seata/seata/pull/5120)] 统一yml文件中的配置项格式 -- [[#5124](https://github.com/seata/seata/pull/5124)] 支持oracle删除tccfence记录表 - [[#5115](https://github.com/seata/seata/pull/5115)] 兼容 `spring-boot:3.x` +- [[#5180](https://github.com/seata/seata/pull/5180)] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator 创建bean用static修饰 ### test: - [[#4411](https://github.com/seata/seata/pull/4411)] 测试Oracle数据库AT模式下类型支持 @@ -55,5 +26,7 @@ - [slievrly](https://github.com/slievrly) - [wangliang181230](https://github.com/wangliang181230) +- [xingfudeshi](https://github.com/xingfudeshi) +- [whxxxxx](https://github.com/whxxxxx) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataAutoConfiguration.java b/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataAutoConfiguration.java index a261c789790..21d058a7bde 100644 --- a/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataAutoConfiguration.java +++ b/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataAutoConfiguration.java @@ -56,7 +56,7 @@ public FailureHandler failureHandler() { @Bean @DependsOn({BEAN_NAME_SPRING_APPLICATION_CONTEXT_PROVIDER, BEAN_NAME_FAILURE_HANDLER}) @ConditionalOnMissingBean(GlobalTransactionScanner.class) - public GlobalTransactionScanner globalTransactionScanner(SeataProperties seataProperties, FailureHandler failureHandler, + public static GlobalTransactionScanner globalTransactionScanner(SeataProperties seataProperties, FailureHandler failureHandler, ConfigurableListableBeanFactory beanFactory, @Autowired(required = false) List scannerCheckers) { if (LOGGER.isInfoEnabled()) { diff --git a/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataDataSourceAutoConfiguration.java b/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataDataSourceAutoConfiguration.java index 1df129143fe..a0dd9b9eb51 100644 --- a/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataDataSourceAutoConfiguration.java +++ b/seata-spring-boot-starter/src/main/java/io/seata/spring/boot/autoconfigure/SeataDataSourceAutoConfiguration.java @@ -45,7 +45,7 @@ public class SeataDataSourceAutoConfiguration { */ @Bean(BEAN_NAME_SEATA_AUTO_DATA_SOURCE_PROXY_CREATOR) @ConditionalOnMissingBean(SeataAutoDataSourceProxyCreator.class) - public SeataAutoDataSourceProxyCreator seataAutoDataSourceProxyCreator(SeataProperties seataProperties) { + public static SeataAutoDataSourceProxyCreator seataAutoDataSourceProxyCreator(SeataProperties seataProperties) { return new SeataAutoDataSourceProxyCreator(seataProperties.isUseJdkProxy(), seataProperties.getExcludesForAutoProxying(), seataProperties.getDataSourceProxyMode()); } From 23f16e39ba087e2da93a005cc418a265c62c81cc Mon Sep 17 00:00:00 2001 From: Richard Milllions <2234501359@qq.com> Date: Wed, 21 Dec 2022 15:28:10 +0800 Subject: [PATCH 5/9] bugfix: fix ClassNotFoundException caused when server starts when using Eureka (#5179) --- dependencies/pom.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dependencies/pom.xml b/dependencies/pom.xml index 3dea6c12f56..de852a77cb1 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -363,10 +363,6 @@ javax.servlet servlet-api - - com.github.andrewoma.dexx - dexx-collections - From 512e6059b293b51e8d099ec8b63185bd39e89270 Mon Sep 17 00:00:00 2001 From: jimin Date: Wed, 21 Dec 2022 19:22:48 +0800 Subject: [PATCH 6/9] security: fix some security vulnerabilities in GGEditor (#5182) --- changes/en-us/develop.md | 6 +- changes/zh-cn/develop.md | 11 +- .../package-lock.json | 481 ++++++++++++------ 3 files changed, 323 insertions(+), 175 deletions(-) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 0046408cd52..31856e9f535 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -3,15 +3,15 @@ Add changes here for all PR submitted to the develop branch. ### feature: -- [[#xxx](https://github.com/seata/seata/pull/xxx)] support xxx +- [[#5115](https://github.com/seata/seata/pull/5115)] support for `spring-boot:3.x` ### bugfix: -- [[#xxx](https://github.com/seata/seata/pull/xxx)] fix xxx +- [[#5179](https://github.com/seata/seata/pull/5179)] fix ClassNotFoundException when server starts using Eureka ### optimize: - [[#5120](https://github.com/seata/seata/pull/5120)] unify the format of configuration items in yml files -- [[#5115](https://github.com/seata/seata/pull/5115)] compatible with the `spring-boot:3.x` - [[#5180](https://github.com/seata/seata/pull/5180)] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator declare @bean methods as static +- [[#5182](https://github.com/seata/seata/pull/5182)] fix some security vulnerabilities in GGEditor ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] add test for xxx diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 2101723c471..e7b5aadc792 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -3,20 +3,15 @@ ### feature: -- [[#xxx](https://github.com/seata/seata/pull/xxx)] 支持 xxx +- [[#5115](https://github.com/seata/seata/pull/5115)] 支持 `spring-boot:3.x` ### bugfix: -- [[#xxx](https://github.com/seata/seata/pull/xxx)] 修复 xxx +- [[#5179](https://github.com/seata/seata/pull/5179)] 修复使用Eureka作为注册中心ClassNotFoundException问题 ### optimize: - [[#5120](https://github.com/seata/seata/pull/5120)] 统一yml文件中的配置项格式 -- [[#5115](https://github.com/seata/seata/pull/5115)] 兼容 `spring-boot:3.x` - [[#5180](https://github.com/seata/seata/pull/5180)] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator 创建bean用static修饰 - -### test: -- [[#4411](https://github.com/seata/seata/pull/4411)] 测试Oracle数据库AT模式下类型支持 -- [[#4794](https://github.com/seata/seata/pull/4794)] 重构代码,尝试修复单元测试 `DataSourceProxyTest.getResourceIdTest()` -- [[#5101](https://github.com/seata/seata/pull/5101)] 修复zk注册和配置中心报ClassNotFoundException的问题 `DataSourceProxyTest.getResourceIdTest()` +- [[#5182](https://github.com/seata/seata/pull/5182)] 修复 Saga 可视化设计器 GGEditor 安全漏洞 ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] 增加 xxx 测试 diff --git a/saga/seata-saga-statemachine-designer/package-lock.json b/saga/seata-saga-statemachine-designer/package-lock.json index 1d8faad8089..c7b524146c0 100644 --- a/saga/seata-saga-statemachine-designer/package-lock.json +++ b/saga/seata-saga-statemachine-designer/package-lock.json @@ -2364,8 +2364,8 @@ "dependencies": { "emojis-list": { "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz", - "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "fast-deep-equal": { @@ -2375,17 +2375,17 @@ }, "json5": { "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz?cache=0&sync_timestamp=1586046271069&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-1.0.1.tgz", - "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { "minimist": "^1.2.0" } }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz", - "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -2569,34 +2569,62 @@ "dev": true }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz", - "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbytes%2Fdownload%2Fbytes-3.1.0.tgz", - "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz", - "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } } } }, @@ -2872,6 +2900,16 @@ "unset-value": "^1.0.0" } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -3203,18 +3241,26 @@ "dev": true }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcontent-disposition%2Fdownload%2Fcontent-disposition-0.5.3.tgz", - "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "content-type": { "version": "1.0.4", - "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, "conventional-commit-types": { @@ -3233,15 +3279,15 @@ } }, "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz", - "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true }, "cookie-signature": { "version": "1.0.6", - "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "copy-concurrently": { @@ -4063,9 +4109,9 @@ } }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, "detect-file": { @@ -4169,8 +4215,8 @@ }, "ee-first": { "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "elliptic": { @@ -4203,15 +4249,15 @@ "dev": true }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "encodeurl": { "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, "end-of-stream": { @@ -4700,8 +4746,8 @@ }, "etag": { "version": "1.8.1", - "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "eventemitter3": { @@ -4795,53 +4841,123 @@ } }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz", - "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "dependencies": { + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, "array-flatten": { "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz", - "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } @@ -5038,18 +5154,26 @@ } }, "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz", - "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } } }, "find-babel-config": { @@ -5178,9 +5302,9 @@ } }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, "fragment-cache": { @@ -5194,8 +5318,8 @@ }, "fresh": { "version": "0.5.2", - "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, "from2": { @@ -5267,6 +5391,25 @@ "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=", "dev": true }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + } + } + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", @@ -5571,22 +5714,28 @@ "dev": true }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz?cache=0&sync_timestamp=1593407647372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.2.tgz", - "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } @@ -6397,13 +6546,13 @@ "dev": true }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", + "emojis-list": "^3.0.0", "json5": "^1.0.1" }, "dependencies": { @@ -6541,8 +6690,8 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "memory-fs": { @@ -6557,14 +6706,14 @@ }, "merge-descriptors": { "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "methods": { "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, "micromatch": { @@ -6646,9 +6795,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -7130,9 +7279,9 @@ "dev": true }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -7362,8 +7511,8 @@ }, "path-to-regexp": { "version": "0.1.7", - "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, "path-type": { @@ -8102,12 +8251,12 @@ } }, "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz", - "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, @@ -8236,21 +8385,21 @@ "dev": true }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz", - "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "dependencies": { "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbytes%2Fdownload%2Fbytes-3.1.0.tgz", - "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true } } @@ -8758,30 +8907,42 @@ "dev": true }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz", - "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.1.tgz", - "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } @@ -8837,15 +8998,15 @@ } }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz", - "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.18.0" } }, "set-blocking": { @@ -8884,9 +9045,9 @@ "dev": true }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz?cache=0&sync_timestamp=1563425414995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.1.tgz", - "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "sha.js": { @@ -9643,8 +9804,7 @@ "dependencies": { "ansi-regex": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "resolved": "", "dev": true }, "string-width": { @@ -9820,9 +9980,9 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz", - "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, "tough-cookie": { @@ -9899,8 +10059,8 @@ }, "type-is": { "version": "1.6.18", - "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz", - "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "requires": { "media-typer": "0.3.0", @@ -9979,8 +10139,8 @@ }, "unpipe": { "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, "unset-value": { @@ -10121,8 +10281,8 @@ }, "utils-merge": { "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true }, "uuid": { @@ -10386,25 +10546,19 @@ "yargs": "^13.3.2" }, "dependencies": { - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz", - "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=", - "dev": true - }, "json5": { "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz?cache=0&sync_timestamp=1586046271069&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-1.0.1.tgz", - "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { "minimist": "^1.2.0" } }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz", - "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -10711,8 +10865,7 @@ "dependencies": { "ansi-regex": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "resolved": "", "dev": true }, "string-width": { From 4bad6255f8e60e8d04dd46379c461700fee1a239 Mon Sep 17 00:00:00 2001 From: jimin Date: Wed, 21 Dec 2022 20:41:50 +0800 Subject: [PATCH 7/9] optimize: optimize the default values for some switches (#5183) --- changes/en-us/develop.md | 1 + changes/zh-cn/develop.md | 1 + .../java/io/seata/common/DefaultValues.java | 16 +++++++-- .../server/ServerOnRequestProcessor.java | 2 +- .../store/db/AbstractDataSourceProvider.java | 7 ++-- script/client/conf/file.conf | 4 ++- script/client/spring/application.properties | 2 +- script/client/spring/application.yml | 2 +- .../server/store/StoreDBProperties.java | 9 +++-- .../server/store/StoreRedisProperties.java | 9 +++-- .../DataBaseTransactionStoreManager.java | 7 ++-- .../storage/redis/JedisPooledFactory.java | 19 +++++------ .../store/RedisTransactionStoreManager.java | 34 ++++++++++--------- .../main/resources/application.example.yml | 13 +++---- 14 files changed, 75 insertions(+), 51 deletions(-) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 31856e9f535..a7a1c9427ab 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -12,6 +12,7 @@ Add changes here for all PR submitted to the develop branch. - [[#5120](https://github.com/seata/seata/pull/5120)] unify the format of configuration items in yml files - [[#5180](https://github.com/seata/seata/pull/5180)] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator declare @bean methods as static - [[#5182](https://github.com/seata/seata/pull/5182)] fix some security vulnerabilities in GGEditor +- [[#5183](https://github.com/seata/seata/pull/5183)] optimize the default values for some switches ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] add test for xxx diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index e7b5aadc792..29e66530e0e 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -12,6 +12,7 @@ - [[#5120](https://github.com/seata/seata/pull/5120)] 统一yml文件中的配置项格式 - [[#5180](https://github.com/seata/seata/pull/5180)] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator 创建bean用static修饰 - [[#5182](https://github.com/seata/seata/pull/5182)] 修复 Saga 可视化设计器 GGEditor 安全漏洞 +- [[#5183](https://github.com/seata/seata/pull/5183)] 优化配置开关的默认值 ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] 增加 xxx 测试 diff --git a/common/src/main/java/io/seata/common/DefaultValues.java b/common/src/main/java/io/seata/common/DefaultValues.java index 180d75dcfe3..8ab3777d72e 100644 --- a/common/src/main/java/io/seata/common/DefaultValues.java +++ b/common/src/main/java/io/seata/common/DefaultValues.java @@ -168,7 +168,7 @@ public interface DefaultValues { /** * the constant DEFAULT_RPC_RM_REQUEST_TIMEOUT */ - long DEFAULT_RPC_RM_REQUEST_TIMEOUT = Duration.ofSeconds(30).toMillis(); + long DEFAULT_RPC_RM_REQUEST_TIMEOUT = Duration.ofSeconds(15).toMillis(); /** * the constant DEFAULT_RPC_TM_REQUEST_TIMEOUT @@ -178,7 +178,7 @@ public interface DefaultValues { /** * the constant DEFAULT_RPC_TC_REQUEST_TIMEOUT */ - long DEFAULT_RPC_TC_REQUEST_TIMEOUT = Duration.ofSeconds(30).toMillis(); + long DEFAULT_RPC_TC_REQUEST_TIMEOUT = Duration.ofSeconds(15).toMillis(); /** * the constant DEFAULT_XAER_NOTA_RETRY_TIMEOUT @@ -269,4 +269,16 @@ public interface DefaultValues { * DEFAULT_ENABLE_BRANCH_ASYNC_REMOVE */ boolean DEFAULT_ENABLE_BRANCH_ASYNC_REMOVE = false; + + int DEFAULT_DB_MAX_CONN = 100; + + int DEFAULT_DB_MIN_CONN = 10; + + int DEFAULT_REDIS_MAX_IDLE = 100; + + int DEFAULT_REDIS_MAX_TOTAL = 100; + + int DEFAULT_REDIS_MIN_IDLE = 10; + + int DEFAULT_QUERY_LIMIT = 1000; } diff --git a/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java b/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java index 2d0207b621b..b5933444384 100644 --- a/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java +++ b/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java @@ -102,7 +102,7 @@ public class ServerOnRequestProcessor implements RemotingProcessor, Disposable { private static final long KEEP_ALIVE_TIME = Integer.MAX_VALUE; private static final String BATCH_RESPONSE_THREAD_PREFIX = "rpcBatchResponse"; private static final boolean PARALLEL_REQUEST_HANDLE = - ConfigurationFactory.getInstance().getBoolean(ConfigurationKeys.ENABLE_PARALLEL_REQUEST_HANDLE_KEY, false); + ConfigurationFactory.getInstance().getBoolean(ConfigurationKeys.ENABLE_PARALLEL_REQUEST_HANDLE_KEY, true); public ServerOnRequestProcessor(RemotingServer remotingServer, TransactionMessageHandler transactionMessageHandler) { this.remotingServer = remotingServer; diff --git a/core/src/main/java/io/seata/core/store/db/AbstractDataSourceProvider.java b/core/src/main/java/io/seata/core/store/db/AbstractDataSourceProvider.java index 45c0d69094b..fee3c98f0b7 100644 --- a/core/src/main/java/io/seata/core/store/db/AbstractDataSourceProvider.java +++ b/core/src/main/java/io/seata/core/store/db/AbstractDataSourceProvider.java @@ -35,6 +35,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static io.seata.common.DefaultValues.DEFAULT_DB_MAX_CONN; +import static io.seata.common.DefaultValues.DEFAULT_DB_MIN_CONN; + /** * The abstract datasource provider * @@ -60,10 +63,6 @@ public abstract class AbstractDataSourceProvider implements DataSourceProvider, private final static Map MYSQL_DRIVER_LOADERS; - private static final int DEFAULT_DB_MAX_CONN = 20; - - private static final int DEFAULT_DB_MIN_CONN = 1; - private static final long DEFAULT_DB_MAX_WAIT = 5000; static { diff --git a/script/client/conf/file.conf b/script/client/conf/file.conf index 69c67c58916..7c99daa059a 100644 --- a/script/client/conf/file.conf +++ b/script/client/conf/file.conf @@ -26,7 +26,9 @@ transport { # the rm client rpc request timeout rpcRmRequestTimeout = 2000 # the tm client rpc request timeout - rpcTmRequestTimeout = 10000 + rpcTmRequestTimeout = 30000 + # the rm client rpc request timeout + rpcRmRequestTimeout = 15000 #thread factory for netty threadFactory { bossThreadPrefix = "NettyBoss" diff --git a/script/client/spring/application.properties b/script/client/spring/application.properties index 3054e01c957..0c4d4b72d42 100755 --- a/script/client/spring/application.properties +++ b/script/client/spring/application.properties @@ -78,7 +78,7 @@ seata.transport.serialization=seata seata.transport.compressor=none seata.transport.enable-tm-client-batch-send-request=false seata.transport.enable-rm-client-batch-send-request=true -seata.transport.rpc-rm-request-timeout=30000 +seata.transport.rpc-rm-request-timeout=15000 seata.transport.rpc-tm-request-timeout=30000 seata.config.type=file diff --git a/script/client/spring/application.yml b/script/client/spring/application.yml index 6f8f59cede4..9a547964d57 100755 --- a/script/client/spring/application.yml +++ b/script/client/spring/application.yml @@ -73,7 +73,7 @@ seata: compressor: none enable-tm-client-batch-send-request: false enable-rm-client-batch-send-request: true - rpc-rm-request-timeout: 30000 + rpc-rm-request-timeout: 15000 rpc-tm-request-timeout: 30000 config: type: file diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreDBProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreDBProperties.java index 5d63dfb888b..0bd3c8db313 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreDBProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreDBProperties.java @@ -18,6 +18,9 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; +import static io.seata.common.DefaultValues.DEFAULT_DB_MAX_CONN; +import static io.seata.common.DefaultValues.DEFAULT_DB_MIN_CONN; +import static io.seata.common.DefaultValues.DEFAULT_QUERY_LIMIT; import static io.seata.spring.boot.autoconfigure.StarterConstants.STORE_DB_PREFIX; /** @@ -32,13 +35,13 @@ public class StoreDBProperties { private String url = "jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true"; private String user = "mysql"; private String password = "mysql"; - private Integer minConn = 5; - private Integer maxConn = 100; + private Integer minConn = DEFAULT_DB_MIN_CONN; + private Integer maxConn = DEFAULT_DB_MAX_CONN; private String globalTable = "global_table"; private String branchTable = "branch_table"; private String lockTable = "lock_table"; private String distributedLockTable = "distributed_lock"; - private Integer queryLimit = 100; + private Integer queryLimit = DEFAULT_QUERY_LIMIT; private Integer maxWait = 5000; public String getDatasource() { diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java index d695699abf5..c6420d84db7 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java @@ -18,6 +18,9 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; +import static io.seata.common.DefaultValues.DEFAULT_QUERY_LIMIT; +import static io.seata.common.DefaultValues.DEFAULT_REDIS_MAX_IDLE; +import static io.seata.common.DefaultValues.DEFAULT_REDIS_MIN_IDLE; import static io.seata.spring.boot.autoconfigure.StarterConstants.STORE_REDIS_PREFIX; import static io.seata.spring.boot.autoconfigure.StarterConstants.STORE_REDIS_SINGLE_PREFIX; import static io.seata.spring.boot.autoconfigure.StarterConstants.STORE_REDIS_SENTINEL_PREFIX; @@ -33,10 +36,10 @@ public class StoreRedisProperties { */ private String mode = "single"; private String password; - private Integer maxConn = 10; - private Integer minConn = 1; + private Integer maxConn = DEFAULT_REDIS_MAX_IDLE; + private Integer minConn = DEFAULT_REDIS_MIN_IDLE; private Integer database = 0; - private Integer queryLimit = 100; + private Integer queryLimit = DEFAULT_QUERY_LIMIT; private Integer maxTotal = 100; public String getMode() { diff --git a/server/src/main/java/io/seata/server/storage/db/store/DataBaseTransactionStoreManager.java b/server/src/main/java/io/seata/server/storage/db/store/DataBaseTransactionStoreManager.java index 2889b851abb..d4daefa23ec 100644 --- a/server/src/main/java/io/seata/server/storage/db/store/DataBaseTransactionStoreManager.java +++ b/server/src/main/java/io/seata/server/storage/db/store/DataBaseTransactionStoreManager.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; + import javax.sql.DataSource; import io.seata.common.exception.StoreException; @@ -37,12 +38,12 @@ import io.seata.core.store.db.DataSourceProvider; import io.seata.server.session.GlobalSession; import io.seata.server.session.SessionCondition; +import io.seata.server.storage.SessionConverter; import io.seata.server.store.AbstractTransactionStoreManager; import io.seata.server.store.SessionStorable; import io.seata.server.store.TransactionStoreManager; -import io.seata.server.storage.SessionConverter; -import static io.seata.core.constants.RedisKeyConstants.DEFAULT_LOG_QUERY_LIMIT; +import static io.seata.common.DefaultValues.DEFAULT_QUERY_LIMIT; /** * The type Database transaction store manager. @@ -87,7 +88,7 @@ public static DataBaseTransactionStoreManager getInstance() { * Instantiates a new Database transaction store manager. */ private DataBaseTransactionStoreManager() { - logQueryLimit = CONFIG.getInt(ConfigurationKeys.STORE_DB_LOG_QUERY_LIMIT, DEFAULT_LOG_QUERY_LIMIT); + logQueryLimit = CONFIG.getInt(ConfigurationKeys.STORE_DB_LOG_QUERY_LIMIT, DEFAULT_QUERY_LIMIT); String datasourceType = CONFIG.getConfig(ConfigurationKeys.STORE_DB_DATASOURCE_TYPE); //init dataSource DataSource logStoreDataSource = EnhancedServiceLoader.load(DataSourceProvider.class, datasourceType).provide(); diff --git a/server/src/main/java/io/seata/server/storage/redis/JedisPooledFactory.java b/server/src/main/java/io/seata/server/storage/redis/JedisPooledFactory.java index 6e580ca6568..d3d1a442eed 100644 --- a/server/src/main/java/io/seata/server/storage/redis/JedisPooledFactory.java +++ b/server/src/main/java/io/seata/server/storage/redis/JedisPooledFactory.java @@ -33,6 +33,10 @@ import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisSentinelPool; +import static io.seata.common.DefaultValues.DEFAULT_REDIS_MAX_IDLE; +import static io.seata.common.DefaultValues.DEFAULT_REDIS_MAX_TOTAL; +import static io.seata.common.DefaultValues.DEFAULT_REDIS_MIN_IDLE; + /** * @author funkye */ @@ -47,13 +51,6 @@ public class JedisPooledFactory { private static final String HOST = "127.0.0.1"; private static final int PORT = 6379; - - private static final int MINCONN = 1; - - private static final int MAXCONN = 10; - - private static final int MAXTOTAL = 100; - private static final int DATABASE = 0; private static final int SENTINEL_HOST_NUMBER = 3; @@ -87,9 +84,11 @@ public static JedisPoolAbstract getJedisPoolInstance(JedisPoolAbstract... jedisP } } JedisPoolConfig poolConfig = new JedisPoolConfig(); - poolConfig.setMinIdle(CONFIGURATION.getInt(ConfigurationKeys.STORE_REDIS_MIN_CONN, MINCONN)); - poolConfig.setMaxIdle(CONFIGURATION.getInt(ConfigurationKeys.STORE_REDIS_MAX_CONN, MAXCONN)); - poolConfig.setMaxTotal(CONFIGURATION.getInt(ConfigurationKeys.STORE_REDIS_MAX_TOTAL, MAXTOTAL)); + poolConfig.setMinIdle(CONFIGURATION.getInt(ConfigurationKeys.STORE_REDIS_MIN_CONN, + DEFAULT_REDIS_MIN_IDLE)); + poolConfig.setMaxIdle(CONFIGURATION.getInt(ConfigurationKeys.STORE_REDIS_MAX_CONN, + DEFAULT_REDIS_MAX_IDLE)); + poolConfig.setMaxTotal(CONFIGURATION.getInt(ConfigurationKeys.STORE_REDIS_MAX_TOTAL, DEFAULT_REDIS_MAX_TOTAL)); String mode = CONFIGURATION.getConfig(ConfigurationKeys.STORE_REDIS_MODE,ConfigurationKeys.REDIS_SINGLE_MODE); if (mode.equals(ConfigurationKeys.REDIS_SENTINEL_MODE)) { String masterName = CONFIGURATION.getConfig(ConfigurationKeys.STORE_REDIS_SENTINEL_MASTERNAME); diff --git a/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManager.java b/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManager.java index b4b23a79d74..dd50ca12175 100644 --- a/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManager.java +++ b/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManager.java @@ -15,25 +15,21 @@ */ package io.seata.server.storage.redis.store; -import java.util.Iterator; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.Date; import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Date; import java.util.Objects; import java.util.Optional; -import java.util.Collections; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; -import io.seata.config.Configuration; -import io.seata.config.ConfigurationFactory; -import io.seata.server.session.SessionStatusValidator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + import com.google.common.collect.ImmutableMap; import io.seata.common.XID; import io.seata.common.exception.RedisException; @@ -41,29 +37,35 @@ import io.seata.common.util.BeanUtils; import io.seata.common.util.CollectionUtils; import io.seata.common.util.StringUtils; -import io.seata.server.console.param.GlobalSessionParam; +import io.seata.config.Configuration; +import io.seata.config.ConfigurationFactory; import io.seata.core.model.GlobalStatus; import io.seata.core.store.BranchTransactionDO; import io.seata.core.store.GlobalTransactionDO; +import io.seata.server.console.param.GlobalSessionParam; import io.seata.server.session.GlobalSession; import io.seata.server.session.SessionCondition; +import io.seata.server.session.SessionStatusValidator; import io.seata.server.storage.SessionConverter; import io.seata.server.storage.redis.JedisPooledFactory; import io.seata.server.store.AbstractTransactionStoreManager; import io.seata.server.store.SessionStorable; import io.seata.server.store.TransactionStoreManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; import redis.clients.jedis.Transaction; + import static io.seata.common.ConfigurationKeys.STORE_REDIS_QUERY_LIMIT; -import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_XID; -import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_GLOBAL_XID; -import static io.seata.core.constants.RedisKeyConstants.DEFAULT_LOG_QUERY_LIMIT; +import static io.seata.common.DefaultValues.DEFAULT_QUERY_LIMIT; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_APPLICATION_DATA; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_GMT_MODIFIED; import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_STATUS; -import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_GLOBAL_STATUS; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_XID; import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_GLOBAL_GMT_MODIFIED; -import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_GMT_MODIFIED; -import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_APPLICATION_DATA; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_GLOBAL_STATUS; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_GLOBAL_XID; /** * The redis transaction store manager @@ -126,7 +128,7 @@ public RedisTransactionStoreManager() { super(); initGlobalMap(); initBranchMap(); - logQueryLimit = CONFIG.getInt(STORE_REDIS_QUERY_LIMIT, DEFAULT_LOG_QUERY_LIMIT); + logQueryLimit = CONFIG.getInt(STORE_REDIS_QUERY_LIMIT, DEFAULT_QUERY_LIMIT); } /** diff --git a/server/src/main/resources/application.example.yml b/server/src/main/resources/application.example.yml index f42f934f3a2..4e46e672825 100644 --- a/server/src/main/resources/application.example.yml +++ b/server/src/main/resources/application.example.yml @@ -124,6 +124,7 @@ seata: enable-parallel-request-handle: true retry-dead-threshold: 130000 xaer-nota-retry-timeout: 60000 + enableParallelRequestHandle: true recovery: committing-retry-period: 1000 async-committing-retry-period: 1000 @@ -156,22 +157,22 @@ seata: url: jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true user: mysql password: mysql - min-conn: 5 + min-conn: 10 max-conn: 100 global-table: global_table branch-table: branch_table lock-table: lock_table distributed-lock-table: distributed_lock - query-limit: 100 + query-limit: 1000 max-wait: 5000 redis: mode: single database: 0 - min-conn: 1 - max-conn: 10 + min-conn: 10 + max-conn: 100 password: max-total: 100 - query-limit: 100 + query-limit: 1000 single: host: 127.0.0.1 port: 6379 @@ -184,7 +185,7 @@ seata: exporter-list: prometheus exporter-prometheus-port: 9898 transport: - rpc-tc-request-timeout: 30000 + rpc-tc-request-timeout: 15000 enable-tc-server-batch-send-response: false shutdown: wait: 3 From c866966a5ba1be10f606bdb64fa70d3d0359cad6 Mon Sep 17 00:00:00 2001 From: jimin Date: Wed, 21 Dec 2022 20:57:37 +0800 Subject: [PATCH 8/9] release: release for 1.6.1 (#5184) --- README.md | 2 +- build/pom.xml | 2 +- changes/en-us/1.6.1.md | 49 +++++++++++++++++++ changes/en-us/develop.md | 12 ++--- changes/zh-cn/1.6.1.md | 49 +++++++++++++++++++ changes/zh-cn/develop.md | 14 ++---- .../java/io/seata/core/protocol/Version.java | 2 +- 7 files changed, 108 insertions(+), 22 deletions(-) create mode 100644 changes/en-us/1.6.1.md create mode 100644 changes/zh-cn/1.6.1.md diff --git a/README.md b/README.md index 911b4f964bb..19a88a3a8d7 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ For more details about principle and design, please go to [Seata wiki page](http ## Maven dependency ```xml -1.6.0 +1.6.1 io.seata seata-all diff --git a/build/pom.xml b/build/pom.xml index c636523d872..2241bb7ed14 100644 --- a/build/pom.xml +++ b/build/pom.xml @@ -63,7 +63,7 @@ - 1.6.1-SNAPSHOT + 1.6.1 1.8 diff --git a/changes/en-us/1.6.1.md b/changes/en-us/1.6.1.md new file mode 100644 index 00000000000..8752dfb9720 --- /dev/null +++ b/changes/en-us/1.6.1.md @@ -0,0 +1,49 @@ +### 1.6.1 + +[source](https://github.com/seata/seata/archive/v1.6.1.zip) | +[binary](https://github.com/seata/seata/releases/download/v1.6.1/seata-server-1.6.1.zip) + +
+ Release notes + + +### Seata 1.6.1 + +Seata 1.6.1 Released. + +Seata is an easy-to-use, high-performance, open source distributed transaction solution. + +The version is updated as follows: + +### feature: +- [[#5115](https://github.com/seata/seata/pull/5115)] support for `spring-boot:3.x` + +### bugfix: +- [[#5179](https://github.com/seata/seata/pull/5179)] fix ClassNotFoundException when server starts using Eureka + +### optimize: +- [[#5120](https://github.com/seata/seata/pull/5120)] unify the format of configuration items in yml files +- [[#5180](https://github.com/seata/seata/pull/5180)] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator declare @bean methods as static +- [[#5182](https://github.com/seata/seata/pull/5182)] fix some security vulnerabilities in GGEditor +- [[#5183](https://github.com/seata/seata/pull/5183)] optimize the default values for some switches + +Thanks to these contributors for their code commits. Please report an unintended omission. + + +- [slievrly](https://github.com/slievrly) +- [wangliang181230](https://github.com/wangliang181230) +- [xingfudeshi](https://github.com/xingfudeshi) +- [whxxxxx](https://github.com/whxxxxx) +- [xssdpgy](https://github.com/xssdpgy) + +Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. + +#### Link + +- **Seata:** https://github.com/seata/seata +- **Seata-Samples:** https://github.com/seata/seata-samples +- **Release:** https://github.com/seata/seata/releases +- **WebSite:** https://seata.io + + +
diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index a7a1c9427ab..03ffeb016a1 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -3,16 +3,13 @@ Add changes here for all PR submitted to the develop branch. ### feature: -- [[#5115](https://github.com/seata/seata/pull/5115)] support for `spring-boot:3.x` +- [[#xxx](https://github.com/seata/seata/pull/xxx)] support xxx ### bugfix: -- [[#5179](https://github.com/seata/seata/pull/5179)] fix ClassNotFoundException when server starts using Eureka +- [[#xxx](https://github.com/seata/seata/pull/xxx)] fix xxx ### optimize: -- [[#5120](https://github.com/seata/seata/pull/5120)] unify the format of configuration items in yml files -- [[#5180](https://github.com/seata/seata/pull/5180)] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator declare @bean methods as static -- [[#5182](https://github.com/seata/seata/pull/5182)] fix some security vulnerabilities in GGEditor -- [[#5183](https://github.com/seata/seata/pull/5183)] optimize the default values for some switches +- [[#xxx](https://github.com/seata/seata/pull/xxx)] optimize xxx ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] add test for xxx @@ -21,8 +18,5 @@ Thanks to these contributors for their code commits. Please report an unintended - [slievrly](https://github.com/slievrly) -- [wangliang181230](https://github.com/wangliang181230) -- [xingfudeshi](https://github.com/xingfudeshi) -- [whxxxxx](https://github.com/whxxxxx) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/1.6.1.md b/changes/zh-cn/1.6.1.md new file mode 100644 index 00000000000..23d2dcfde3c --- /dev/null +++ b/changes/zh-cn/1.6.1.md @@ -0,0 +1,49 @@ +### 1.6.1 + +[source](https://github.com/seata/seata/archive/v1.6.1.zip) | +[binary](https://github.com/seata/seata/releases/download/v1.6.1/seata-server-1.6.1.zip) + +
+ Release notes + + +### Seata 1.6.1 + +Seata 1.6.1 发布。 + +Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 + +此版本更新如下: + +### feature: +- [[#5115](https://github.com/seata/seata/pull/5115)] 支持 `spring-boot:3.x` + +### bugfix: +- [[#5179](https://github.com/seata/seata/pull/5179)] 修复使用Eureka作为注册中心ClassNotFoundException问题 + +### optimize: +- [[#5120](https://github.com/seata/seata/pull/5120)] 统一yml文件中的配置项格式 +- [[#5180](https://github.com/seata/seata/pull/5180)] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator 创建bean用static修饰 +- [[#5182](https://github.com/seata/seata/pull/5182)] 修复 Saga 可视化设计器 GGEditor 安全漏洞 +- [[#5183](https://github.com/seata/seata/pull/5183)] 优化配置开关的默认值 + +非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 + + +- [slievrly](https://github.com/slievrly) +- [wangliang181230](https://github.com/wangliang181230) +- [xingfudeshi](https://github.com/xingfudeshi) +- [whxxxxx](https://github.com/whxxxxx) +- [xssdpgy](https://github.com/xssdpgy) + +同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 + + +#### Link + +- **Seata:** https://github.com/seata/seata +- **Seata-Samples:** https://github.com/seata/seata-samples +- **Release:** https://github.com/seata/seata/releases +- **WebSite:** https://seata.io + +
diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 29e66530e0e..499d8e8c469 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -3,16 +3,13 @@ ### feature: -- [[#5115](https://github.com/seata/seata/pull/5115)] 支持 `spring-boot:3.x` +- [[#xxx](https://github.com/seata/seata/pull/xxx)] 支持 xxx ### bugfix: -- [[#5179](https://github.com/seata/seata/pull/5179)] 修复使用Eureka作为注册中心ClassNotFoundException问题 +- [[#xxx](https://github.com/seata/seata/pull/xxx)] 修复 xxx -### optimize: -- [[#5120](https://github.com/seata/seata/pull/5120)] 统一yml文件中的配置项格式 -- [[#5180](https://github.com/seata/seata/pull/5180)] GlobalTransactionScanner,SeataAutoDataSourceProxyCreator 创建bean用static修饰 -- [[#5182](https://github.com/seata/seata/pull/5182)] 修复 Saga 可视化设计器 GGEditor 安全漏洞 -- [[#5183](https://github.com/seata/seata/pull/5183)] 优化配置开关的默认值 +### optimize: +- [[#xxx](https://github.com/seata/seata/pull/xxx)] 优化 xxx ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] 增加 xxx 测试 @@ -21,8 +18,5 @@ - [slievrly](https://github.com/slievrly) -- [wangliang181230](https://github.com/wangliang181230) -- [xingfudeshi](https://github.com/xingfudeshi) -- [whxxxxx](https://github.com/whxxxxx) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/core/src/main/java/io/seata/core/protocol/Version.java b/core/src/main/java/io/seata/core/protocol/Version.java index 287c1334e7a..ec64f8816d6 100644 --- a/core/src/main/java/io/seata/core/protocol/Version.java +++ b/core/src/main/java/io/seata/core/protocol/Version.java @@ -36,7 +36,7 @@ public class Version { /** * The constant CURRENT. */ - private static final String CURRENT = "1.6.1-SNAPSHOT"; + private static final String CURRENT = "1.6.1"; private static final String VERSION_0_7_1 = "0.7.1"; private static final String VERSION_1_5_0 = "1.5.0"; private static final int MAX_VERSION_DOT = 3; From cd339cde06308a5692762a101303efcbdde32da8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?WangLiang/=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Wed, 21 Dec 2022 22:36:45 +0800 Subject: [PATCH 9/9] test: fix `test-compile` fails when the version of the `spring-boot` is lower than `2.4.0` (#5186) --- build/pom.xml | 4 ++++ dependencies/pom.xml | 53 ++++++++------------------------------------ server/pom.xml | 9 ++++++++ 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/build/pom.xml b/build/pom.xml index 2241bb7ed14..60f52896fc9 100644 --- a/build/pom.xml +++ b/build/pom.xml @@ -76,6 +76,10 @@ 2.5.13 5.3.19 + + 5.8.2 + 1.8.2 + 1.0.5 diff --git a/dependencies/pom.xml b/dependencies/pom.xml index de852a77cb1..67db5b5a7f0 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -110,8 +110,6 @@ 1.4.3 - 5.8.2 - 1.8.2 2.23.4 3.12.2 9.4.38.v20210224 @@ -119,6 +117,15 @@ + + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + + org.springframework @@ -638,48 +645,6 @@ - - org.junit - junit-bom - ${junit-jupiter.version} - pom - import - - - org.junit.jupiter - junit-jupiter - ${junit-jupiter.version} - - - org.junit.jupiter - junit-jupiter-api - ${junit-jupiter.version} - - - org.junit.jupiter - junit-jupiter-engine - ${junit-jupiter.version} - - - org.junit.jupiter - junit-jupiter-params - ${junit-jupiter.version} - - - org.junit.platform - junit-platform-commons - ${junit-platform.version} - - - org.junit.platform - junit-platform-engine - ${junit-platform.version} - - - org.junit.platform - junit-platform-launcher - ${junit-platform.version} - org.mockito mockito-core diff --git a/server/pom.xml b/server/pom.xml index 9911f321a86..d260d1a99f9 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -35,6 +35,15 @@ + + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + + org.springframework