Repository: apache/incubator-seata Branch: 2.x Commit: a63866fcea40 Files: 3985 Total size: 21.3 MB Directory structure: gitextract_qphifn7i/ ├── .asf.yaml ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── BUG_REPORT.yml │ │ ├── FEATURE_REQUEST.yml │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── build.yml │ ├── codeql-analysis.yml │ ├── license-checker.yaml │ ├── publish-docker.yml │ ├── publish-ossrh.yml │ ├── rerun-build.yml │ ├── spotless-check.yml │ ├── test-druid.yml │ ├── test-ubuntu.yml │ └── test.yml ├── .gitignore ├── .licenserc.yaml ├── .mvn/ │ └── wrapper/ │ └── maven-wrapper.properties ├── .travis.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── CONTRIBUTING_CN.md ├── DISCLAIMER ├── LICENSE ├── NOTICE ├── README.md ├── SECURITY.md ├── all/ │ └── pom.xml ├── bom/ │ └── pom.xml ├── build/ │ └── pom.xml ├── changeVersion.sh ├── changes/ │ ├── en-us/ │ │ ├── 1.4.2.md │ │ ├── 1.5.0.md │ │ ├── 1.5.2.md │ │ ├── 1.6.0.md │ │ ├── 1.6.1.md │ │ ├── 1.7.0.md │ │ ├── 1.7.1.md │ │ ├── 1.8.0.md │ │ ├── 2.0.0.md │ │ ├── 2.1.0.md │ │ ├── 2.2.0.md │ │ ├── 2.3.0.md │ │ ├── 2.4.0.md │ │ ├── 2.5.0.md │ │ ├── 2.6.0.md │ │ └── 2.x.md │ └── zh-cn/ │ ├── 1.4.2.md │ ├── 1.5.0.md │ ├── 1.5.2.md │ ├── 1.6.0.md │ ├── 1.6.1.md │ ├── 1.7.0.md │ ├── 1.7.1.md │ ├── 1.8.0.md │ ├── 2.0.0.md │ ├── 2.1.0.md │ ├── 2.2.0.md │ ├── 2.3.0.md │ ├── 2.4.0.md │ ├── 2.5.0.md │ ├── 2.6.0.md │ └── 2.x.md ├── codecov.yml ├── common/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ ├── common/ │ │ │ │ ├── ConfigurationKeys.java │ │ │ │ ├── Constants.java │ │ │ │ ├── DefaultValues.java │ │ │ │ ├── LockStrategyMode.java │ │ │ │ ├── NamingServerConstants.java │ │ │ │ ├── NamingServerLocalMarker.java │ │ │ │ ├── XID.java │ │ │ │ ├── exception/ │ │ │ │ │ ├── AbstractRemoteResourceBundle.java │ │ │ │ │ ├── AuthenticationFailedException.java │ │ │ │ │ ├── DataAccessException.java │ │ │ │ │ ├── ErrorCode.java │ │ │ │ │ ├── EurekaRegistryException.java │ │ │ │ │ ├── ExceptionUtil.java │ │ │ │ │ ├── FrameworkErrorCode.java │ │ │ │ │ ├── FrameworkException.java │ │ │ │ │ ├── JsonParseException.java │ │ │ │ │ ├── NotSupportYetException.java │ │ │ │ │ ├── ParseEndpointException.java │ │ │ │ │ ├── RedisException.java │ │ │ │ │ ├── RepeatRegistrationException.java │ │ │ │ │ ├── ResourceBundleUtil.java │ │ │ │ │ ├── RetryableException.java │ │ │ │ │ ├── SeataRuntimeException.java │ │ │ │ │ ├── ShouldNeverHappenException.java │ │ │ │ │ ├── SkipCallbackWrapperException.java │ │ │ │ │ └── StoreException.java │ │ │ │ ├── executor/ │ │ │ │ │ ├── Callback.java │ │ │ │ │ └── Initialize.java │ │ │ │ ├── holder/ │ │ │ │ │ └── ObjectHolder.java │ │ │ │ ├── io/ │ │ │ │ │ └── FileLoader.java │ │ │ │ ├── loader/ │ │ │ │ │ ├── EnhancedServiceLoader.java │ │ │ │ │ ├── EnhancedServiceNotFoundException.java │ │ │ │ │ ├── ExtensionDefinition.java │ │ │ │ │ ├── LoadLevel.java │ │ │ │ │ └── Scope.java │ │ │ │ ├── lock/ │ │ │ │ │ └── ResourceLock.java │ │ │ │ ├── metadata/ │ │ │ │ │ ├── Cluster.java │ │ │ │ │ ├── ClusterRole.java │ │ │ │ │ ├── ClusterWatchEvent.java │ │ │ │ │ ├── Instance.java │ │ │ │ │ ├── Metadata.java │ │ │ │ │ ├── MetadataResponse.java │ │ │ │ │ ├── Node.java │ │ │ │ │ └── namingserver/ │ │ │ │ │ ├── MetaResponse.java │ │ │ │ │ ├── NamingServerNode.java │ │ │ │ │ └── Unit.java │ │ │ │ ├── result/ │ │ │ │ │ ├── BaseParam.java │ │ │ │ │ ├── Code.java │ │ │ │ │ ├── PageResult.java │ │ │ │ │ ├── Result.java │ │ │ │ │ └── SingleResult.java │ │ │ │ ├── rpc/ │ │ │ │ │ ├── RpcStatus.java │ │ │ │ │ └── http/ │ │ │ │ │ └── HttpContext.java │ │ │ │ ├── store/ │ │ │ │ │ ├── LockMode.java │ │ │ │ │ ├── SessionMode.java │ │ │ │ │ └── StoreMode.java │ │ │ │ ├── thread/ │ │ │ │ │ ├── NamedThreadFactory.java │ │ │ │ │ ├── PositiveAtomicCounter.java │ │ │ │ │ └── RejectedPolicies.java │ │ │ │ └── util/ │ │ │ │ ├── ArrayUtils.java │ │ │ │ ├── BeanUtils.java │ │ │ │ ├── BlobUtils.java │ │ │ │ ├── BufferUtils.java │ │ │ │ ├── CollectionUtils.java │ │ │ │ ├── CompressUtil.java │ │ │ │ ├── ConfigTools.java │ │ │ │ ├── CycleDependencyHandler.java │ │ │ │ ├── DateUtil.java │ │ │ │ ├── DurationUtil.java │ │ │ │ ├── HttpClientUtil.java │ │ │ │ ├── IOUtil.java │ │ │ │ ├── IdWorker.java │ │ │ │ ├── LambdaUtils.java │ │ │ │ ├── LowerCaseLinkHashMap.java │ │ │ │ ├── MapUtil.java │ │ │ │ ├── NetAddressValidatorUtil.java │ │ │ │ ├── NetUtil.java │ │ │ │ ├── NumberUtils.java │ │ │ │ ├── PageUtil.java │ │ │ │ ├── ReflectionUtil.java │ │ │ │ ├── SeataHttpWatch.java │ │ │ │ ├── SizeUtil.java │ │ │ │ ├── StringFormatUtils.java │ │ │ │ ├── StringUtils.java │ │ │ │ └── UUIDGenerator.java │ │ │ ├── core/ │ │ │ │ ├── constants/ │ │ │ │ │ └── ServerTableColumnsName.java │ │ │ │ └── model/ │ │ │ │ └── GlobalStatus.java │ │ │ └── server/ │ │ │ └── console/ │ │ │ └── entity/ │ │ │ ├── param/ │ │ │ │ ├── GlobalLockParam.java │ │ │ │ └── GlobalSessionParam.java │ │ │ └── vo/ │ │ │ ├── BranchSessionVO.java │ │ │ └── GlobalSessionVO.java │ │ └── resources/ │ │ └── error/ │ │ └── ErrorCode_en.properties │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── common/ │ │ ├── BranchDO.java │ │ ├── ConstantsTest.java │ │ ├── LockStrategyModeTest.java │ │ ├── NamingServerConstantsTest.java │ │ ├── XIDTest.java │ │ ├── code/ │ │ │ └── CodeTest.java │ │ ├── exception/ │ │ │ ├── AbstractRemoteResourceBundleTest.java │ │ │ ├── AuthenticationFailedExceptionTest.java │ │ │ ├── DataAccessExceptionTest.java │ │ │ ├── EurekaRegistryExceptionTest.java │ │ │ ├── ExceptionUtilTest.java │ │ │ ├── FrameworkErrorCodeTest.java │ │ │ ├── FrameworkExceptionTest.java │ │ │ ├── JsonParseExceptionTest.java │ │ │ ├── Message.java │ │ │ ├── NotSupportYetExceptionTest.java │ │ │ ├── ParseEndpointExceptionTest.java │ │ │ ├── RedisExceptionTest.java │ │ │ ├── RepeatRegistrationExceptionTest.java │ │ │ ├── ResourceBundleUtilTest.java │ │ │ ├── RetryableExceptionTest.java │ │ │ ├── SeataRuntimeExceptionTest.java │ │ │ ├── ShouldNeverHappenExceptionTest.java │ │ │ ├── SkipCallbackWrapperExceptionTest.java │ │ │ └── StoreExceptionTest.java │ │ ├── holder/ │ │ │ └── ObjectHolderTest.java │ │ ├── io/ │ │ │ └── FileLoaderTest.java │ │ ├── loader/ │ │ │ ├── ChineseHello.java │ │ │ ├── EnglishHello.java │ │ │ ├── EnhancedServiceLoaderTest.java │ │ │ ├── EnhancedServiceNotFoundExceptionTest.java │ │ │ ├── ExtensionDefinitionTest.java │ │ │ ├── FrenchHello.java │ │ │ ├── Hello.java │ │ │ ├── Hello1.java │ │ │ ├── Hello2.java │ │ │ ├── JapaneseHello.java │ │ │ ├── LatinHello.java │ │ │ ├── LoadLevelTest.java │ │ │ └── ScopeTest.java │ │ ├── lock/ │ │ │ └── ResourceLockTest.java │ │ ├── metadata/ │ │ │ ├── ClusterRoleTest.java │ │ │ ├── MetadataTest.java │ │ │ ├── NodeTest.java │ │ │ └── namingserver/ │ │ │ ├── InstanceTest.java │ │ │ ├── MetaResponseTest.java │ │ │ ├── NamingServerNodeTest.java │ │ │ └── UnitTest.java │ │ ├── result/ │ │ │ ├── BaseParamTest.java │ │ │ ├── PageResultTest.java │ │ │ ├── ResultTest.java │ │ │ └── SingleResultTest.java │ │ ├── rpc/ │ │ │ └── RpcStatusTest.java │ │ ├── store/ │ │ │ ├── LockModeTest.java │ │ │ ├── SessionModeTest.java │ │ │ └── StoreModeTest.java │ │ ├── thread/ │ │ │ ├── NamedThreadFactoryTest.java │ │ │ ├── PositiveAtomicCounterTest.java │ │ │ └── RejectedPoliciesTest.java │ │ └── util/ │ │ ├── ArrayUtilsTest.java │ │ ├── BeanUtilsTest.java │ │ ├── BlobUtilsTest.java │ │ ├── BufferUtilsTest.java │ │ ├── CollectionUtilsTest.java │ │ ├── CompressUtilTest.java │ │ ├── ConfigToolsTest.java │ │ ├── CycleDependencyHandlerTest.java │ │ ├── DateUtilTest.java │ │ ├── DurationUtilTest.java │ │ ├── HttpClientUtilTest.java │ │ ├── IOUtilTest.java │ │ ├── IdWorkerTest.java │ │ ├── LambdaUtilsTest.java │ │ ├── LowerCaseLinkHashMapTest.java │ │ ├── MapUtilTest.java │ │ ├── NetAddressValidatorUtilTest.java │ │ ├── NetUtilTest.java │ │ ├── NumberUtilsTest.java │ │ ├── PageUtilTest.java │ │ ├── ReflectionUtilTest.java │ │ ├── SeataHttpWatchTest.java │ │ ├── SizeUtilTest.java │ │ ├── StringFormatUtilsTest.java │ │ ├── StringUtilsTest.java │ │ └── UUIDGeneratorTest.java │ └── resources/ │ ├── META-INF/ │ │ ├── seata/ │ │ │ ├── frenchhello/ │ │ │ │ └── org.apache.seata.common.loader.Hello │ │ │ ├── org.apache.seata.common.loader.Hello │ │ │ ├── org.apache.seata.common.loader.Hello1 │ │ │ └── org.apache.seata.common.loader.Hello2 │ │ └── services/ │ │ └── org.apache.seata.common.loader.Hello │ ├── error/ │ │ └── ErrorCode_en.properties │ └── io/ │ └── TestFile.txt ├── compatible/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── io/ │ │ │ └── seata/ │ │ │ ├── common/ │ │ │ │ ├── LockStrategyMode.java │ │ │ │ └── util/ │ │ │ │ └── StringUtils.java │ │ │ ├── core/ │ │ │ │ ├── auth/ │ │ │ │ │ └── AuthSigner.java │ │ │ │ ├── compressor/ │ │ │ │ │ └── Compressor.java │ │ │ │ ├── constants/ │ │ │ │ │ └── DubboConstants.java │ │ │ │ ├── context/ │ │ │ │ │ ├── ContextCore.java │ │ │ │ │ └── RootContext.java │ │ │ │ ├── exception/ │ │ │ │ │ ├── TransactionException.java │ │ │ │ │ └── TransactionExceptionCode.java │ │ │ │ ├── model/ │ │ │ │ │ ├── BranchType.java │ │ │ │ │ ├── GlobalStatus.java │ │ │ │ │ └── ResourceManager.java │ │ │ │ ├── rpc/ │ │ │ │ │ └── netty/ │ │ │ │ │ ├── RmNettyRemotingClient.java │ │ │ │ │ └── TmNettyRemotingClient.java │ │ │ │ ├── serializer/ │ │ │ │ │ └── Serializer.java │ │ │ │ └── store/ │ │ │ │ └── db/ │ │ │ │ └── sql/ │ │ │ │ ├── lock/ │ │ │ │ │ └── LockStoreSql.java │ │ │ │ └── log/ │ │ │ │ └── LogStoreSqls.java │ │ │ ├── discovery/ │ │ │ │ ├── loadbalance/ │ │ │ │ │ └── LoadBalance.java │ │ │ │ └── registry/ │ │ │ │ ├── RegistryProvider.java │ │ │ │ └── RegistryService.java │ │ │ ├── integration/ │ │ │ │ ├── grpc/ │ │ │ │ │ └── interceptor/ │ │ │ │ │ ├── client/ │ │ │ │ │ │ └── ClientTransactionInterceptor.java │ │ │ │ │ └── server/ │ │ │ │ │ └── ServerTransactionInterceptor.java │ │ │ │ ├── http/ │ │ │ │ │ ├── DefaultHttpExecutor.java │ │ │ │ │ ├── JakartaSeataWebMvcConfigurer.java │ │ │ │ │ ├── JakartaTransactionPropagationInterceptor.java │ │ │ │ │ ├── SeataWebMvcConfigurer.java │ │ │ │ │ └── TransactionPropagationInterceptor.java │ │ │ │ └── tx/ │ │ │ │ └── api/ │ │ │ │ ├── interceptor/ │ │ │ │ │ ├── ActionContextUtil.java │ │ │ │ │ ├── ActionInterceptorHandler.java │ │ │ │ │ ├── handler/ │ │ │ │ │ │ └── GlobalTransactionalInterceptorHandler.java │ │ │ │ │ └── parser/ │ │ │ │ │ └── GlobalTransactionalInterceptorParser.java │ │ │ │ ├── json/ │ │ │ │ │ └── JsonParser.java │ │ │ │ └── remoting/ │ │ │ │ └── RemotingParser.java │ │ │ ├── rm/ │ │ │ │ ├── RMClient.java │ │ │ │ ├── datasource/ │ │ │ │ │ ├── DataSourceProxy.java │ │ │ │ │ ├── exec/ │ │ │ │ │ │ └── InsertExecutor.java │ │ │ │ │ ├── undo/ │ │ │ │ │ │ └── parser/ │ │ │ │ │ │ └── spi/ │ │ │ │ │ │ ├── JacksonSerializer.java │ │ │ │ │ │ ├── KryoTypeSerializer.java │ │ │ │ │ │ └── ProtostuffDelegate.java │ │ │ │ │ └── xa/ │ │ │ │ │ └── DataSourceProxyXA.java │ │ │ │ └── tcc/ │ │ │ │ ├── TCCResourceManager.java │ │ │ │ ├── api/ │ │ │ │ │ ├── BusinessActionContext.java │ │ │ │ │ ├── BusinessActionContextParameter.java │ │ │ │ │ ├── LocalTCC.java │ │ │ │ │ └── TwoPhaseBusinessAction.java │ │ │ │ ├── interceptor/ │ │ │ │ │ ├── TccActionInterceptorHandler.java │ │ │ │ │ └── parser/ │ │ │ │ │ └── TccActionInterceptorParser.java │ │ │ │ └── remoting/ │ │ │ │ └── parser/ │ │ │ │ └── LocalTCCRemotingParser.java │ │ │ ├── saga/ │ │ │ │ ├── engine/ │ │ │ │ │ ├── AsyncCallback.java │ │ │ │ │ ├── StateMachineConfig.java │ │ │ │ │ ├── StateMachineEngine.java │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── DbStateMachineConfig.java │ │ │ │ │ ├── expression/ │ │ │ │ │ │ ├── Expression.java │ │ │ │ │ │ ├── ExpressionFactory.java │ │ │ │ │ │ └── ExpressionFactoryManager.java │ │ │ │ │ ├── impl/ │ │ │ │ │ │ ├── DefaultStateMachineConfig.java │ │ │ │ │ │ └── ProcessCtrlStateMachineEngine.java │ │ │ │ │ ├── pcext/ │ │ │ │ │ │ ├── StateHandlerInterceptor.java │ │ │ │ │ │ └── StateRouterInterceptor.java │ │ │ │ │ ├── repo/ │ │ │ │ │ │ ├── StateLogRepository.java │ │ │ │ │ │ └── StateMachineRepository.java │ │ │ │ │ └── store/ │ │ │ │ │ ├── StateLogStore.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── StateLogStoreImpl.java │ │ │ │ ├── proctrl/ │ │ │ │ │ ├── HierarchicalProcessContext.java │ │ │ │ │ ├── ProcessContext.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── ProcessContextImpl.java │ │ │ │ ├── rm/ │ │ │ │ │ ├── SagaResourceManager.java │ │ │ │ │ └── StateMachineEngineHolder.java │ │ │ │ └── statelang/ │ │ │ │ ├── domain/ │ │ │ │ │ ├── DomainConstants.java │ │ │ │ │ ├── ExecutionStatus.java │ │ │ │ │ ├── RecoverStrategy.java │ │ │ │ │ ├── State.java │ │ │ │ │ ├── StateInstance.java │ │ │ │ │ ├── StateMachine.java │ │ │ │ │ ├── StateMachineInstance.java │ │ │ │ │ ├── StateType.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── StateImpl.java │ │ │ │ │ ├── StateInstanceImpl.java │ │ │ │ │ ├── StateMachineImpl.java │ │ │ │ │ └── StateMachineInstanceImpl.java │ │ │ │ ├── parser/ │ │ │ │ │ └── JsonParser.java │ │ │ │ └── validator/ │ │ │ │ └── Rule.java │ │ │ ├── spring/ │ │ │ │ └── annotation/ │ │ │ │ ├── GlobalLock.java │ │ │ │ ├── GlobalTransactionScanner.java │ │ │ │ ├── GlobalTransactional.java │ │ │ │ ├── ScannerChecker.java │ │ │ │ └── datasource/ │ │ │ │ ├── AutoDataSourceProxyRegistrar.java │ │ │ │ └── EnableAutoDataSourceProxy.java │ │ │ └── tm/ │ │ │ ├── TMClient.java │ │ │ └── api/ │ │ │ ├── DefaultFailureHandlerImpl.java │ │ │ ├── DefaultGlobalTransaction.java │ │ │ ├── FailureHandler.java │ │ │ ├── GlobalTransaction.java │ │ │ ├── GlobalTransactionContext.java │ │ │ ├── GlobalTransactionRole.java │ │ │ ├── TransactionalTemplate.java │ │ │ └── transaction/ │ │ │ ├── Propagation.java │ │ │ └── SuspendedResourcesHolder.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ ├── io.seata.core.model.ResourceManager │ │ ├── org.apache.seata.integration.tx.api.interceptor.parser.InterfaceParser │ │ └── org.apache.seata.integration.tx.api.remoting.RemotingParser │ └── test/ │ ├── java/ │ │ └── io/ │ │ └── seata/ │ │ ├── common/ │ │ │ ├── LockAndCallback.java │ │ │ ├── LockStrategyModeTest.java │ │ │ └── util/ │ │ │ └── StringUtilsTest.java │ │ ├── core/ │ │ │ ├── auth/ │ │ │ │ └── AuthSignerTest.java │ │ │ ├── compressor/ │ │ │ │ └── CompressorTest.java │ │ │ ├── constants/ │ │ │ │ └── DubboConstantsTest.java │ │ │ ├── context/ │ │ │ │ ├── ContextCoreTest.java │ │ │ │ └── RootContextTest.java │ │ │ ├── exception/ │ │ │ │ ├── TransactionExceptionCodeTest.java │ │ │ │ └── TransactionExceptionTest.java │ │ │ ├── model/ │ │ │ │ ├── BranchTypeTest.java │ │ │ │ ├── GlobalStatusTest.java │ │ │ │ └── ResourceManagerTest.java │ │ │ ├── serializer/ │ │ │ │ └── SerializerTest.java │ │ │ └── store/ │ │ │ └── db/ │ │ │ └── sql/ │ │ │ ├── lock/ │ │ │ │ └── LockStoreSqlTest.java │ │ │ └── log/ │ │ │ └── LogStoreSqlsTest.java │ │ ├── integration/ │ │ │ ├── grpc/ │ │ │ │ └── interceptor/ │ │ │ │ ├── client/ │ │ │ │ │ └── ClientTransactionInterceptorTest.java │ │ │ │ └── server/ │ │ │ │ └── ServerTransactionInterceptorTest.java │ │ │ ├── http/ │ │ │ │ ├── DefaultHttpExecutorTest.java │ │ │ │ ├── JakartaSeataWebMvcConfigurerTest.java │ │ │ │ ├── JakartaTransactionPropagationInterceptorTest.java │ │ │ │ ├── SeataWebMvcConfigurerTest.java │ │ │ │ └── TransactionPropagationInterceptorTest.java │ │ │ └── tx/ │ │ │ └── api/ │ │ │ ├── interceptor/ │ │ │ │ ├── ActionContextUtilTest.java │ │ │ │ ├── ActionInterceptorHandlerTest.java │ │ │ │ ├── handler/ │ │ │ │ │ └── GlobalTransactionalInterceptorHandlerTest.java │ │ │ │ └── parser/ │ │ │ │ ├── Business.java │ │ │ │ ├── BusinessImpl.java │ │ │ │ └── GlobalTransactionalInterceptorParserTest.java │ │ │ ├── json/ │ │ │ │ └── JsonParserTest.java │ │ │ └── remoting/ │ │ │ └── RemotingParserTest.java │ │ ├── rm/ │ │ │ ├── RMClientTest.java │ │ │ ├── datasource/ │ │ │ │ ├── DataSourceProxyTest.java │ │ │ │ ├── mock/ │ │ │ │ │ ├── MockBlob.java │ │ │ │ │ ├── MockClob.java │ │ │ │ │ ├── MockConnection.java │ │ │ │ │ ├── MockDataSource.java │ │ │ │ │ ├── MockDatabaseMetaData.java │ │ │ │ │ ├── MockDriver.java │ │ │ │ │ ├── MockExecuteHandlerImpl.java │ │ │ │ │ ├── MockParameterMetaData.java │ │ │ │ │ ├── MockPreparedStatement.java │ │ │ │ │ ├── MockResultSet.java │ │ │ │ │ └── MockResultSetMetaData.java │ │ │ │ └── xa/ │ │ │ │ └── DataSourceProxyXATest.java │ │ │ └── tcc/ │ │ │ ├── BranchSessionMock.java │ │ │ ├── NestTccAction.java │ │ │ ├── NestTccActionImpl.java │ │ │ ├── NormalTccAction.java │ │ │ ├── NormalTccActionImpl.java │ │ │ ├── Param.java │ │ │ ├── TCCResourceManagerTest.java │ │ │ ├── TccAction.java │ │ │ ├── TccActionImpl.java │ │ │ ├── TccParam.java │ │ │ ├── api/ │ │ │ │ ├── BusinessActionContextParameterTest.java │ │ │ │ ├── BusinessActionContextTest.java │ │ │ │ ├── LocalTCCTest.java │ │ │ │ └── TwoPhaseBusinessActionTest.java │ │ │ ├── interceptor/ │ │ │ │ ├── ProxyUtilsTccTest.java │ │ │ │ ├── TccActionInterceptorHandlerTest.java │ │ │ │ └── parser/ │ │ │ │ └── TccActionInterceptorParserTest.java │ │ │ └── remoting/ │ │ │ └── parser/ │ │ │ └── LocalTCCRemotingParserTest.java │ │ ├── saga/ │ │ │ ├── SagaCostPrint.java │ │ │ ├── engine/ │ │ │ │ ├── AsyncCallbackTest.java │ │ │ │ ├── StateMachineConfigTest.java │ │ │ │ ├── StateMachineEngineTest.java │ │ │ │ ├── StateMachineTests.java │ │ │ │ ├── config/ │ │ │ │ │ └── DbStateMachineConfigTest.java │ │ │ │ ├── db/ │ │ │ │ │ └── mockserver/ │ │ │ │ │ ├── StateMachineAsyncDBMockServerTests.java │ │ │ │ │ └── StateMachineDBMockServerTests.java │ │ │ │ ├── expression/ │ │ │ │ │ ├── ExpressionFactoryManagerTest.java │ │ │ │ │ ├── ExpressionFactoryTest.java │ │ │ │ │ └── ExpressionTest.java │ │ │ │ ├── impl/ │ │ │ │ │ ├── DefaultStateMachineConfigTest.java │ │ │ │ │ └── ProcessCtrlStateMachineEngineTest.java │ │ │ │ ├── mock/ │ │ │ │ │ ├── DemoException.java │ │ │ │ │ ├── DemoService.java │ │ │ │ │ ├── MockGlobalTransaction.java │ │ │ │ │ ├── MockSagaTransactionTemplate.java │ │ │ │ │ ├── MockStateHandlerInterceptor.java │ │ │ │ │ └── MockStateRouterInterceptor.java │ │ │ │ ├── pcext/ │ │ │ │ │ ├── StateHandlerInterceptorTest.java │ │ │ │ │ └── StateRouterInterceptorTest.java │ │ │ │ ├── repo/ │ │ │ │ │ ├── StateLogRepositoryTest.java │ │ │ │ │ └── StateMachineRepositoryTest.java │ │ │ │ └── store/ │ │ │ │ ├── StateLogStoreTest.java │ │ │ │ └── impl/ │ │ │ │ └── StateLogStoreImplTest.java │ │ │ ├── proctrl/ │ │ │ │ ├── HierarchicalProcessContextTest.java │ │ │ │ ├── ProcessContextTest.java │ │ │ │ └── impl/ │ │ │ │ └── ProcessContextImplTest.java │ │ │ ├── rm/ │ │ │ │ └── SagaResourceManagerTest.java │ │ │ └── statelang/ │ │ │ ├── domain/ │ │ │ │ ├── DomainConstantsTest.java │ │ │ │ ├── ExecutionStatusTest.java │ │ │ │ ├── RecoverStrategyTest.java │ │ │ │ ├── StateInstanceTest.java │ │ │ │ ├── StateMachineInstanceTest.java │ │ │ │ ├── StateMachineTest.java │ │ │ │ ├── StateTest.java │ │ │ │ ├── StateTypeTest.java │ │ │ │ └── impl/ │ │ │ │ ├── StateImplTest.java │ │ │ │ ├── StateInstanceImplTest.java │ │ │ │ ├── StateMachineImplTest.java │ │ │ │ └── StateMachineInstanceImplTest.java │ │ │ ├── parser/ │ │ │ │ └── JsonParserTest.java │ │ │ └── validator/ │ │ │ └── RuleTest.java │ │ ├── spi/ │ │ │ └── SPITest.java │ │ ├── spring/ │ │ │ └── annotation/ │ │ │ ├── GlobalLockTest.java │ │ │ ├── GlobalTransactionScannerTest.java │ │ │ ├── GlobalTransactionalTest.java │ │ │ ├── ScannerCheckerTest.java │ │ │ └── datasource/ │ │ │ ├── AutoDataSourceProxyRegistrarTest.java │ │ │ └── EnableAutoDataSourceProxyTest.java │ │ └── tm/ │ │ ├── TMClientTest.java │ │ └── api/ │ │ ├── DefaultFailureHandlerImplTest.java │ │ ├── DefaultGlobalTransactionTest.java │ │ ├── GlobalTransactionContextTest.java │ │ ├── GlobalTransactionRoleTest.java │ │ ├── GlobalTransactionTest.java │ │ └── transaction/ │ │ └── MyRuntimeException.java │ └── resources/ │ ├── file.conf │ ├── registry.conf │ └── saga/ │ ├── spring/ │ │ ├── statemachine_engine_db_mockserver_test.xml │ │ ├── statemachine_engine_db_test.xml │ │ └── statemachine_engine_test.xml │ ├── sql/ │ │ ├── db2_init.sql │ │ ├── h2_init.sql │ │ ├── mysql_init.sql │ │ └── oracle_init.sql │ └── statelang/ │ ├── simple_statelang.json │ ├── simple_statelang_param_assignment.json │ ├── simple_statelang_with_async_state.json │ ├── simple_statelang_with_catches.json │ ├── simple_statelang_with_choice.json │ ├── simple_statelang_with_choice_and_end.json │ ├── simple_statelang_with_choice_no_default.json │ ├── simple_statelang_with_compensation.json │ ├── simple_statelang_with_compensation_and_sub_machine.json │ ├── simple_statelang_with_compensation_for_recovery.json │ ├── simple_statelang_with_complex_params.json │ ├── simple_statelang_with_complex_params_jackson.json │ ├── simple_statelang_with_loop.json │ ├── simple_statelang_with_persist_update_mode.json │ ├── simple_statelang_with_recover_strategy.json │ ├── simple_statelang_with_retry.json │ ├── simple_statelang_with_script.json │ ├── simple_statelang_with_status_matches.json │ ├── simple_statelang_with_userdef_sub_machine_compensation.json │ └── simple_statemachine_with_layout.json ├── compressor/ │ ├── pom.xml │ ├── seata-compressor-all/ │ │ └── pom.xml │ ├── seata-compressor-bzip2/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── compressor/ │ │ │ │ └── bzip2/ │ │ │ │ ├── BZip2Compressor.java │ │ │ │ └── BZip2Util.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.core.compressor.Compressor │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── compressor/ │ │ └── bzip2/ │ │ ├── BZip2CompressorTest.java │ │ └── BZip2UtilTest.java │ ├── seata-compressor-deflater/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── compressor/ │ │ │ │ └── deflater/ │ │ │ │ ├── DeflaterCompressor.java │ │ │ │ └── DeflaterUtil.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.core.compressor.Compressor │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── compressor/ │ │ └── deflater/ │ │ ├── DeflaterCompressorTest.java │ │ └── DeflaterUtilTest.java │ ├── seata-compressor-gzip/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── compressor/ │ │ │ │ └── gzip/ │ │ │ │ ├── GzipCompressor.java │ │ │ │ └── GzipUtil.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.core.compressor.Compressor │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── compressor/ │ │ └── gzip/ │ │ ├── GzipCompressorTest.java │ │ └── GzipUtilTest.java │ ├── seata-compressor-lz4/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── compressor/ │ │ │ │ └── lz4/ │ │ │ │ ├── Lz4Compressor.java │ │ │ │ └── Lz4Util.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.core.compressor.Compressor │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── compressor/ │ │ └── lz4/ │ │ ├── Lz4CompressorTest.java │ │ └── Lz4UtilTest.java │ ├── seata-compressor-zip/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── compressor/ │ │ │ │ └── zip/ │ │ │ │ ├── ZipCompressor.java │ │ │ │ └── ZipUtil.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.core.compressor.Compressor │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── compressor/ │ │ └── zip/ │ │ ├── ZipCompressorTest.java │ │ └── ZipUtilTest.java │ └── seata-compressor-zstd/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── compressor/ │ │ │ └── zstd/ │ │ │ ├── ZstdCompressor.java │ │ │ └── ZstdUtil.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── org.apache.seata.core.compressor.Compressor │ └── test/ │ └── java/ │ └── org/ │ └── apache/ │ └── seata/ │ └── compressor/ │ └── zstd/ │ ├── ZstdCompressorTest.java │ └── ZstdUtilTest.java ├── config/ │ ├── pom.xml │ ├── seata-config-all/ │ │ └── pom.xml │ ├── seata-config-apollo/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── config/ │ │ │ │ └── apollo/ │ │ │ │ ├── ApolloConfiguration.java │ │ │ │ └── ApolloConfigurationProvider.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.config.ConfigurationProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── config/ │ │ │ └── apollo/ │ │ │ ├── ApolloConfigurationTest.java │ │ │ └── ApolloMockServer.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.config.ConfigurationProvider │ │ ├── mock-application.properties │ │ └── registry-test.conf │ ├── seata-config-consul/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── config/ │ │ │ │ └── consul/ │ │ │ │ ├── ConsulConfiguration.java │ │ │ │ └── ConsulConfigurationProvider.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.config.ConfigurationProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── config/ │ │ │ └── consul/ │ │ │ └── ConsulConfigurationTest.java │ │ └── resources/ │ │ └── registry-test.conf │ ├── seata-config-core/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ ├── io/ │ │ │ │ │ └── seata/ │ │ │ │ │ └── config/ │ │ │ │ │ ├── AbstractConfiguration.java │ │ │ │ │ ├── Configuration.java │ │ │ │ │ ├── ConfigurationChangeEvent.java │ │ │ │ │ ├── ConfigurationChangeListener.java │ │ │ │ │ ├── ConfigurationChangeType.java │ │ │ │ │ ├── ConfigurationProvider.java │ │ │ │ │ ├── ExtConfigurationProvider.java │ │ │ │ │ ├── FileConfiguration.java │ │ │ │ │ └── Processor.java │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── config/ │ │ │ │ ├── AbstractConfiguration.java │ │ │ │ ├── CachedConfigurationChangeListener.java │ │ │ │ ├── ConfigChangeListener.java │ │ │ │ ├── ConfigFuture.java │ │ │ │ ├── ConfigType.java │ │ │ │ ├── Configuration.java │ │ │ │ ├── ConfigurationCache.java │ │ │ │ ├── ConfigurationChangeEvent.java │ │ │ │ ├── ConfigurationChangeListener.java │ │ │ │ ├── ConfigurationChangeType.java │ │ │ │ ├── ConfigurationFactory.java │ │ │ │ ├── ConfigurationKeys.java │ │ │ │ ├── ConfigurationProvider.java │ │ │ │ ├── Dispose.java │ │ │ │ ├── ExtConfigurationProvider.java │ │ │ │ ├── FileConfigFactory.java │ │ │ │ ├── FileConfiguration.java │ │ │ │ ├── exception/ │ │ │ │ │ └── ConfigNotFoundException.java │ │ │ │ ├── file/ │ │ │ │ │ ├── FileConfig.java │ │ │ │ │ ├── SimpleFileConfig.java │ │ │ │ │ └── YamlFileConfig.java │ │ │ │ └── processor/ │ │ │ │ ├── ConfigDataType.java │ │ │ │ ├── ConfigProcessor.java │ │ │ │ ├── Processor.java │ │ │ │ ├── ProcessorProperties.java │ │ │ │ └── ProcessorYaml.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── org.apache.seata.config.file.FileConfig │ │ │ └── org.apache.seata.config.processor.Processor │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── config/ │ │ │ ├── AbstractConfigurationTest.java │ │ │ ├── ConcurrentConfigurationTest.java │ │ │ ├── ConfigFutureTest.java │ │ │ ├── ConfigProperty.java │ │ │ ├── ConfigTypeTest.java │ │ │ ├── ConfigurationCacheTest.java │ │ │ ├── ConfigurationCacheTests.java │ │ │ ├── ConfigurationChangeEventTest.java │ │ │ ├── ConfigurationChangeListenerTest.java │ │ │ ├── ConfigurationFactoryTest.java │ │ │ ├── FileConfigFactoryTest.java │ │ │ ├── FileConfigurationTest.java │ │ │ ├── ProConfigurationFactoryTest.java │ │ │ ├── RegistryConfigurationFactoryTest.java │ │ │ ├── YamlConfigurationFactoryTest.java │ │ │ ├── file/ │ │ │ │ ├── SimpleFileConfigTest.java │ │ │ │ └── YamlFileConfigTest.java │ │ │ └── processor/ │ │ │ ├── ConfigDataTypeTest.java │ │ │ ├── ConfigProcessorTest.java │ │ │ ├── ProcessorPropertiesTest.java │ │ │ └── ProcessorYamlTest.java │ │ └── resources/ │ │ ├── file-test-pro.conf │ │ ├── file-test-yaml.conf │ │ ├── file-test.conf │ │ ├── file.conf │ │ ├── registry-test-pro.properties │ │ ├── registry-test-yaml.yml │ │ ├── registry-test.conf │ │ └── registry.conf │ ├── seata-config-custom/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── config/ │ │ │ │ └── custom/ │ │ │ │ └── CustomConfigurationProvider.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.config.ConfigurationProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── config/ │ │ │ ├── ConfigurationTest.java │ │ │ ├── CustomConfigurationForTest.java │ │ │ ├── CustomConfigurationProviderForTest.java │ │ │ └── CustomConfigurationTest.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.config.ConfigurationProvider │ │ ├── custom_for_test.properties │ │ └── registry.conf │ ├── seata-config-etcd3/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── config/ │ │ │ │ └── etcd3/ │ │ │ │ ├── EtcdConfiguration.java │ │ │ │ └── EtcdConfigurationProvider.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.config.ConfigurationProvider │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── config/ │ │ └── etcd3/ │ │ └── EtcdConfigurationTest.java │ ├── seata-config-nacos/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── config/ │ │ │ │ └── nacos/ │ │ │ │ ├── NacosConfiguration.java │ │ │ │ └── NacosConfigurationProvider.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.config.ConfigurationProvider │ │ └── test/ │ │ ├── java/ │ │ │ ├── io/ │ │ │ │ └── seata/ │ │ │ │ └── config/ │ │ │ │ └── extend/ │ │ │ │ ├── NacosConfiguration.java │ │ │ │ ├── NacosConfigurationProvider.java │ │ │ │ └── TestConfigFromExtendSPI.java │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── config/ │ │ │ └── nacos/ │ │ │ ├── NacosConfigurationTest.java │ │ │ └── NacosMockTest.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── services/ │ │ │ ├── io.seata.config.ConfigurationProvider │ │ │ └── org.apache.seata.config.ConfigurationProvider │ │ ├── registry-mock.conf │ │ ├── registry-test.conf │ │ └── registry.conf │ ├── seata-config-spring-cloud/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── config/ │ │ │ │ └── springcloud/ │ │ │ │ ├── EnableSeataSpringConfig.java │ │ │ │ ├── SpringApplicationContextProvider.java │ │ │ │ ├── SpringApplicationContextProviderRegistrar.java │ │ │ │ ├── SpringCloudConfiguration.java │ │ │ │ └── SpringCloudConfigurationProvider.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.config.ConfigurationProvider │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── config/ │ │ └── springcloud/ │ │ ├── SpringApplicationContextProviderTest.java │ │ ├── SpringCloudConfigurationProviderTest.java │ │ └── SpringCloudConfigurationTest.java │ └── seata-config-zk/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── config/ │ │ │ └── zk/ │ │ │ ├── ZookeeperConfiguration.java │ │ │ └── ZookeeperConfigurationProvider.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── org.apache.seata.config.ConfigurationProvider │ └── test/ │ └── java/ │ └── org/ │ └── apache/ │ └── seata/ │ └── config/ │ └── zk/ │ └── ZkConfigurationTest.java ├── console/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ ├── console/ │ │ │ ├── config/ │ │ │ │ ├── JacksonConfig.java │ │ │ │ └── WebSecurityConfig.java │ │ │ ├── controller/ │ │ │ │ ├── AuthController.java │ │ │ │ └── OverviewController.java │ │ │ ├── filter/ │ │ │ │ └── JwtAuthenticationTokenFilter.java │ │ │ ├── security/ │ │ │ │ ├── CustomAuthenticationProvider.java │ │ │ │ ├── CustomUserDetails.java │ │ │ │ ├── CustomUserDetailsServiceImpl.java │ │ │ │ ├── JwtAuthenticationEntryPoint.java │ │ │ │ └── User.java │ │ │ └── utils/ │ │ │ └── JwtTokenUtils.java │ │ └── mcp/ │ │ ├── core/ │ │ │ ├── config/ │ │ │ │ └── TimestampToStringDeserializer.java │ │ │ ├── constant/ │ │ │ │ └── RPCConstant.java │ │ │ ├── props/ │ │ │ │ ├── MCPProperties.java │ │ │ │ ├── NameSpaceDetail.java │ │ │ │ └── NamingServerProperties.java │ │ │ └── utils/ │ │ │ ├── DateUtils.java │ │ │ └── UrlUtils.java │ │ ├── entity/ │ │ │ ├── dto/ │ │ │ │ ├── McpGlobalLockParamDto.java │ │ │ │ └── McpGlobalSessionParamDto.java │ │ │ ├── param/ │ │ │ │ ├── McpGlobalAbnormalSessionParam.java │ │ │ │ ├── McpGlobalLockDeleteParam.java │ │ │ │ ├── McpGlobalLockParam.java │ │ │ │ └── McpGlobalSessionParam.java │ │ │ └── vo/ │ │ │ ├── McpBranchSessionVO.java │ │ │ ├── McpGlobalLockVO.java │ │ │ └── McpGlobalSessionVO.java │ │ ├── exception/ │ │ │ └── ServiceCallException.java │ │ ├── service/ │ │ │ ├── ConsoleApiService.java │ │ │ ├── ModifyConfirmService.java │ │ │ └── impl/ │ │ │ ├── ConsoleRemoteServiceImpl.java │ │ │ └── ModifyConfirmServiceImpl.java │ │ └── tools/ │ │ ├── BranchSessionTools.java │ │ ├── GlobalLockTools.java │ │ ├── GlobalSessionTools.java │ │ ├── ModifyConfirmTools.java │ │ └── NameSpaceTools.java │ └── resources/ │ └── static/ │ └── console-fe/ │ ├── .babelrc │ ├── .editorconfig │ ├── .eslintignore │ ├── .eslintrc │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc │ ├── README.md │ ├── build/ │ │ ├── copy-dist.js │ │ ├── copyDesigner.js │ │ ├── copyFile.js │ │ ├── version-plugin.js │ │ ├── webpack.base.conf.js │ │ ├── webpack.dev.conf.js │ │ └── webpack.prod.conf.js │ ├── package.json │ ├── public/ │ │ ├── css/ │ │ │ ├── bootstrap.css │ │ │ ├── console1412.css │ │ │ ├── font-awesome.css │ │ │ └── icon.css │ │ └── index.html │ ├── src/ │ │ ├── app.tsx │ │ ├── components/ │ │ │ ├── Header/ │ │ │ │ ├── Header.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.ts │ │ │ ├── Iframe/ │ │ │ │ ├── Iframe.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.ts │ │ │ └── Page/ │ │ │ ├── Page.tsx │ │ │ ├── PageContent.tsx │ │ │ ├── PageHeader.tsx │ │ │ └── index.ts │ │ ├── config.ts │ │ ├── contants/ │ │ │ └── index.ts │ │ ├── index.scss │ │ ├── index.tsx │ │ ├── layout/ │ │ │ ├── index.scss │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ ├── locales/ │ │ │ ├── en-us.ts │ │ │ ├── index.d.ts │ │ │ ├── index.ts │ │ │ └── zh-cn.ts │ │ ├── module.d.ts │ │ ├── pages/ │ │ │ ├── ClusterManager/ │ │ │ │ ├── ClusterManager.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.ts │ │ │ ├── GlobalLockInfo/ │ │ │ │ ├── GlobalLockInfo.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.ts │ │ │ ├── Login/ │ │ │ │ ├── Login.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.ts │ │ │ ├── Overview/ │ │ │ │ ├── Overview.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.ts │ │ │ └── TransactionInfo/ │ │ │ ├── TransactionInfo.tsx │ │ │ ├── index.scss │ │ │ └── index.ts │ │ ├── reducers/ │ │ │ ├── base.ts │ │ │ ├── index.ts │ │ │ ├── locale.ts │ │ │ ├── login.ts │ │ │ └── overview.ts │ │ ├── router.tsx │ │ ├── service/ │ │ │ ├── base.ts │ │ │ ├── clusterManager.ts │ │ │ ├── globalLockInfo.ts │ │ │ ├── login.ts │ │ │ ├── overview.ts │ │ │ └── transactionInfo.ts │ │ └── utils/ │ │ ├── common.ts │ │ ├── cookie.ts │ │ ├── localstorage.ts │ │ ├── request.ts │ │ └── requestV2.ts │ ├── test/ │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── commons/ │ │ │ └── commons.md │ │ ├── config.json │ │ ├── install.sh │ │ ├── package.json │ │ ├── run.bat │ │ ├── run.sh │ │ ├── sample/ │ │ │ └── configurationManagement.spec.js │ │ └── uploadfiles/ │ │ └── uploadfiles.md │ └── tsconfig.json ├── core/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── core/ │ │ │ ├── README.md │ │ │ ├── auth/ │ │ │ │ ├── AuthSigner.java │ │ │ │ ├── DefaultAuthSigner.java │ │ │ │ └── RamSignAdapter.java │ │ │ ├── compressor/ │ │ │ │ ├── Compressor.java │ │ │ │ ├── CompressorFactory.java │ │ │ │ └── CompressorType.java │ │ │ ├── constants/ │ │ │ │ ├── ClientTableColumnsName.java │ │ │ │ ├── ConfigurationKeys.java │ │ │ │ ├── DBType.java │ │ │ │ ├── DubboConstants.java │ │ │ │ ├── RedisKeyConstants.java │ │ │ │ └── RpcMessageConstants.java │ │ │ ├── context/ │ │ │ │ ├── ContextCore.java │ │ │ │ ├── ContextCoreLoader.java │ │ │ │ ├── FastThreadLocalContextCore.java │ │ │ │ ├── GlobalLockConfigHolder.java │ │ │ │ ├── RootContext.java │ │ │ │ └── ThreadLocalContextCore.java │ │ │ ├── event/ │ │ │ │ ├── Event.java │ │ │ │ ├── EventBus.java │ │ │ │ ├── ExceptionEvent.java │ │ │ │ ├── GlobalTransactionEvent.java │ │ │ │ ├── GuavaEventBus.java │ │ │ │ └── RateLimitEvent.java │ │ │ ├── exception/ │ │ │ │ ├── AbstractExceptionHandler.java │ │ │ │ ├── BranchTransactionException.java │ │ │ │ ├── DecodeException.java │ │ │ │ ├── GlobalTransactionException.java │ │ │ │ ├── HttpRequestFilterException.java │ │ │ │ ├── RmTransactionException.java │ │ │ │ ├── TmTransactionException.java │ │ │ │ ├── TransactionException.java │ │ │ │ └── TransactionExceptionCode.java │ │ │ ├── lock/ │ │ │ │ ├── AbstractLocker.java │ │ │ │ ├── LocalDBLocker.java │ │ │ │ ├── Locker.java │ │ │ │ └── RowLock.java │ │ │ ├── logger/ │ │ │ │ └── StackTraceLogger.java │ │ │ ├── model/ │ │ │ │ ├── BranchStatus.java │ │ │ │ ├── BranchType.java │ │ │ │ ├── GlobalLockConfig.java │ │ │ │ ├── LockStatus.java │ │ │ │ ├── Resource.java │ │ │ │ ├── ResourceManager.java │ │ │ │ ├── ResourceManagerInbound.java │ │ │ │ ├── ResourceManagerOutbound.java │ │ │ │ ├── Result.java │ │ │ │ └── TransactionManager.java │ │ │ ├── protocol/ │ │ │ │ ├── AbstractIdentifyRequest.java │ │ │ │ ├── AbstractIdentifyResponse.java │ │ │ │ ├── AbstractMessage.java │ │ │ │ ├── AbstractResultMessage.java │ │ │ │ ├── BatchResultMessage.java │ │ │ │ ├── HeartbeatMessage.java │ │ │ │ ├── IncompatibleVersionException.java │ │ │ │ ├── MergeMessage.java │ │ │ │ ├── MergeResultMessage.java │ │ │ │ ├── MergedWarpMessage.java │ │ │ │ ├── MessageFuture.java │ │ │ │ ├── MessageType.java │ │ │ │ ├── MessageTypeAware.java │ │ │ │ ├── Protocol.java │ │ │ │ ├── ProtocolConstants.java │ │ │ │ ├── RegisterRMRequest.java │ │ │ │ ├── RegisterRMResponse.java │ │ │ │ ├── RegisterTMRequest.java │ │ │ │ ├── RegisterTMResponse.java │ │ │ │ ├── ResultCode.java │ │ │ │ ├── RpcMessage.java │ │ │ │ ├── Version.java │ │ │ │ ├── VersionInfo.java.template │ │ │ │ ├── VersionNotSupportMessage.java │ │ │ │ ├── detector/ │ │ │ │ │ ├── Http2Detector.java │ │ │ │ │ ├── HttpDetector.java │ │ │ │ │ ├── ProtocolDetector.java │ │ │ │ │ └── SeataDetector.java │ │ │ │ └── transaction/ │ │ │ │ ├── AbstractBranchEndRequest.java │ │ │ │ ├── AbstractBranchEndResponse.java │ │ │ │ ├── AbstractGlobalEndRequest.java │ │ │ │ ├── AbstractGlobalEndResponse.java │ │ │ │ ├── AbstractTransactionRequest.java │ │ │ │ ├── AbstractTransactionRequestToRM.java │ │ │ │ ├── AbstractTransactionRequestToTC.java │ │ │ │ ├── AbstractTransactionResponse.java │ │ │ │ ├── BranchCommitRequest.java │ │ │ │ ├── BranchCommitResponse.java │ │ │ │ ├── BranchRegisterRequest.java │ │ │ │ ├── BranchRegisterResponse.java │ │ │ │ ├── BranchReportRequest.java │ │ │ │ ├── BranchReportResponse.java │ │ │ │ ├── BranchRollbackRequest.java │ │ │ │ ├── BranchRollbackResponse.java │ │ │ │ ├── GlobalBeginRequest.java │ │ │ │ ├── GlobalBeginResponse.java │ │ │ │ ├── GlobalCommitRequest.java │ │ │ │ ├── GlobalCommitResponse.java │ │ │ │ ├── GlobalLockQueryRequest.java │ │ │ │ ├── GlobalLockQueryResponse.java │ │ │ │ ├── GlobalReportRequest.java │ │ │ │ ├── GlobalReportResponse.java │ │ │ │ ├── GlobalRollbackRequest.java │ │ │ │ ├── GlobalRollbackResponse.java │ │ │ │ ├── GlobalStatusRequest.java │ │ │ │ ├── GlobalStatusResponse.java │ │ │ │ ├── RMInboundHandler.java │ │ │ │ ├── TCInboundHandler.java │ │ │ │ └── UndoLogDeleteRequest.java │ │ │ ├── rpc/ │ │ │ │ ├── ClientMessageListener.java │ │ │ │ ├── ClientMessageSender.java │ │ │ │ ├── ClientType.java │ │ │ │ ├── DefaultServerMessageListenerImpl.java │ │ │ │ ├── Disposable.java │ │ │ │ ├── MsgVersionHelper.java │ │ │ │ ├── RegisterCheckAuthHandler.java │ │ │ │ ├── RemotingBootstrap.java │ │ │ │ ├── RemotingClient.java │ │ │ │ ├── RemotingServer.java │ │ │ │ ├── RemotingService.java │ │ │ │ ├── RpcContext.java │ │ │ │ ├── ServerMessageListener.java │ │ │ │ ├── ServerMessageSender.java │ │ │ │ ├── ShutdownHook.java │ │ │ │ ├── TransactionMessageHandler.java │ │ │ │ ├── hook/ │ │ │ │ │ ├── RpcHook.java │ │ │ │ │ └── StatusRpcHook.java │ │ │ │ ├── netty/ │ │ │ │ │ ├── AbstractNettyRemoting.java │ │ │ │ │ ├── AbstractNettyRemotingClient.java │ │ │ │ │ ├── AbstractNettyRemotingServer.java │ │ │ │ │ ├── ChannelAuthHealthChecker.java │ │ │ │ │ ├── ChannelEventHandler.java │ │ │ │ │ ├── ChannelEventListener.java │ │ │ │ │ ├── ChannelEventType.java │ │ │ │ │ ├── ChannelManager.java │ │ │ │ │ ├── ChannelUtil.java │ │ │ │ │ ├── MultiProtocolDecoder.java │ │ │ │ │ ├── NettyBaseConfig.java │ │ │ │ │ ├── NettyClientBootstrap.java │ │ │ │ │ ├── NettyClientChannelManager.java │ │ │ │ │ ├── NettyClientConfig.java │ │ │ │ │ ├── NettyPoolKey.java │ │ │ │ │ ├── NettyPoolableFactory.java │ │ │ │ │ ├── NettyRemotingServer.java │ │ │ │ │ ├── NettyServerBootstrap.java │ │ │ │ │ ├── NettyServerConfig.java │ │ │ │ │ ├── ProtocolDecoder.java │ │ │ │ │ ├── ProtocolDetectHandler.java │ │ │ │ │ ├── ProtocolEncoder.java │ │ │ │ │ ├── ProtocolRpcMessage.java │ │ │ │ │ ├── RegisterMsgListener.java │ │ │ │ │ ├── RmNettyRemotingClient.java │ │ │ │ │ ├── RpcEventLoopGroup.java │ │ │ │ │ ├── TmNettyRemotingClient.java │ │ │ │ │ ├── grpc/ │ │ │ │ │ │ ├── GrpcDecoder.java │ │ │ │ │ │ ├── GrpcEncoder.java │ │ │ │ │ │ └── GrpcHeaderEnum.java │ │ │ │ │ ├── http/ │ │ │ │ │ │ ├── BaseHttpChannelHandler.java │ │ │ │ │ │ ├── ControllerManager.java │ │ │ │ │ │ ├── Http2HttpHandler.java │ │ │ │ │ │ ├── HttpDispatchHandler.java │ │ │ │ │ │ ├── HttpInvocation.java │ │ │ │ │ │ ├── ParamMetaData.java │ │ │ │ │ │ ├── ParameterParser.java │ │ │ │ │ │ ├── RequestParseUtils.java │ │ │ │ │ │ ├── SimpleHttp2Request.java │ │ │ │ │ │ └── filter/ │ │ │ │ │ │ ├── HttpFilterContext.java │ │ │ │ │ │ ├── HttpRequestFilter.java │ │ │ │ │ │ ├── HttpRequestFilterChain.java │ │ │ │ │ │ ├── HttpRequestFilterManager.java │ │ │ │ │ │ └── HttpRequestParamWrapper.java │ │ │ │ │ ├── v0/ │ │ │ │ │ │ ├── MessageCodecV0.java │ │ │ │ │ │ ├── ProtocolConstantsV0.java │ │ │ │ │ │ ├── ProtocolDecoderV0.java │ │ │ │ │ │ ├── ProtocolEncoderV0.java │ │ │ │ │ │ └── ProtocolRpcMessageV0.java │ │ │ │ │ ├── v1/ │ │ │ │ │ │ ├── HeadMapSerializer.java │ │ │ │ │ │ ├── ProtocolDecoderV1.java │ │ │ │ │ │ ├── ProtocolEncoderV1.java │ │ │ │ │ │ └── ProtocolRpcMessageV1.java │ │ │ │ │ └── v2/ │ │ │ │ │ ├── ProtocolDecoderV2.java │ │ │ │ │ └── ProtocolEncoderV2.java │ │ │ │ └── processor/ │ │ │ │ ├── Pair.java │ │ │ │ ├── RemotingProcessor.java │ │ │ │ ├── client/ │ │ │ │ │ ├── ClientHeartbeatProcessor.java │ │ │ │ │ ├── ClientOnResponseProcessor.java │ │ │ │ │ ├── RmBranchCommitProcessor.java │ │ │ │ │ ├── RmBranchRollbackProcessor.java │ │ │ │ │ └── RmUndoLogProcessor.java │ │ │ │ └── server/ │ │ │ │ ├── BatchLogHandler.java │ │ │ │ ├── RegRmProcessor.java │ │ │ │ ├── RegTmProcessor.java │ │ │ │ ├── ServerHeartbeatProcessor.java │ │ │ │ ├── ServerOnRequestProcessor.java │ │ │ │ └── ServerOnResponseProcessor.java │ │ │ ├── serializer/ │ │ │ │ ├── Serializer.java │ │ │ │ ├── SerializerSecurityRegistry.java │ │ │ │ ├── SerializerServiceLoader.java │ │ │ │ └── SerializerType.java │ │ │ └── store/ │ │ │ ├── BranchTransactionDO.java │ │ │ ├── DefaultDistributedLocker.java │ │ │ ├── DistributedLockDO.java │ │ │ ├── DistributedLocker.java │ │ │ ├── GlobalTransactionDO.java │ │ │ ├── LockDO.java │ │ │ ├── LockStore.java │ │ │ ├── LogStore.java │ │ │ ├── MappingDO.java │ │ │ └── db/ │ │ │ ├── AbstractDataSourceProvider.java │ │ │ ├── DataSourceProvider.java │ │ │ └── sql/ │ │ │ ├── distributed/ │ │ │ │ └── lock/ │ │ │ │ ├── BaseDistributedLockSql.java │ │ │ │ ├── BaseDistributedLockSqlServer.java │ │ │ │ ├── DistributedLockSql.java │ │ │ │ └── DistributedLockSqlFactory.java │ │ │ ├── lock/ │ │ │ │ ├── AbstractLockStoreSql.java │ │ │ │ ├── DmLockStoreSql.java │ │ │ │ ├── H2LockStoreSql.java │ │ │ │ ├── KingbaseLockStoreSql.java │ │ │ │ ├── LockStoreSql.java │ │ │ │ ├── LockStoreSqlFactory.java │ │ │ │ ├── MariadbLockStoreSql.java │ │ │ │ ├── MysqlLockStoreSql.java │ │ │ │ ├── OceanbaseLockStoreSql.java │ │ │ │ ├── OracleLockStoreSql.java │ │ │ │ ├── OscarLockStoreSql.java │ │ │ │ ├── PolarDBXLockStoreSql.java │ │ │ │ ├── PostgresqlLockStoreSql.java │ │ │ │ └── SqlServerLockStoreSql.java │ │ │ └── log/ │ │ │ ├── AbstractLogStoreSqls.java │ │ │ ├── DmLogStoreSqls.java │ │ │ ├── H2LogStoreSqls.java │ │ │ ├── KingbaseLogStoreSqls.java │ │ │ ├── LogStoreSqls.java │ │ │ ├── LogStoreSqlsFactory.java │ │ │ ├── MariadbLogStoreSqls.java │ │ │ ├── MysqlLogStoreSqls.java │ │ │ ├── OceanbaseLogStoreSqls.java │ │ │ ├── OracleLogStoreSqls.java │ │ │ ├── OscarLogStoreSqls.java │ │ │ ├── PolarDBXLogStoreSqls.java │ │ │ ├── PostgresqlLogStoreSqls.java │ │ │ └── SqlServerLogStoreSqls.java │ │ ├── log4j.properties │ │ ├── logback.xml │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── services/ │ │ │ ├── org.apache.seata.core.auth.AuthSigner │ │ │ ├── org.apache.seata.core.context.ContextCore │ │ │ ├── org.apache.seata.core.rpc.hook.RpcHook │ │ │ ├── org.apache.seata.core.store.db.sql.distributed.lock.DistributedLockSql │ │ │ ├── org.apache.seata.core.store.db.sql.lock.LockStoreSql │ │ │ └── org.apache.seata.core.store.db.sql.log.LogStoreSqls │ │ └── protobuf/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── protocol/ │ │ └── transcation/ │ │ └── grpcMessage.proto │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── core/ │ │ ├── auth/ │ │ │ ├── DefaultAuthSignerTest.java │ │ │ └── RamSignAdapterTest.java │ │ ├── compressor/ │ │ │ ├── CompressorFactoryTest.java │ │ │ └── CompressorTypeTest.java │ │ ├── constants/ │ │ │ ├── DBTypeTest.java │ │ │ └── RedisKeyConstantsTest.java │ │ ├── context/ │ │ │ ├── ContextCoreTest.java │ │ │ ├── GlobalLockConfigHolderTest.java │ │ │ ├── RootContextTest.java │ │ │ └── ThreadLocalContextCoreTest.java │ │ ├── event/ │ │ │ ├── ExceptionEventTest.java │ │ │ ├── GlobalTransactionEventTest.java │ │ │ ├── GuavaEventBusTest.java │ │ │ └── RateLimitEventTest.java │ │ ├── exception/ │ │ │ ├── BranchTransactionExceptionTest.java │ │ │ ├── DecodeExceptionTest.java │ │ │ ├── GlobalTransactionExceptionTest.java │ │ │ ├── RmTransactionExceptionTest.java │ │ │ ├── TmTransactionExceptionTest.java │ │ │ └── TransactionExceptionTest.java │ │ ├── lock/ │ │ │ ├── AbstractLockerTest.java │ │ │ └── LocalDBLockerTest.java │ │ ├── logger/ │ │ │ └── StackTraceLoggerTest.java │ │ ├── message/ │ │ │ ├── BranchCommitRequestTest.java │ │ │ ├── BranchCommitResponseTest.java │ │ │ ├── BranchRegisterRequestTest.java │ │ │ ├── BranchRegisterResponseTest.java │ │ │ ├── BranchReportRequestTest.java │ │ │ ├── GlobalBeginRequestTest.java │ │ │ ├── GlobalCommitResponseTest.java │ │ │ ├── GlobalRollbackRequestTest.java │ │ │ ├── RegisterTMRequestTest.java │ │ │ └── RegisterTMResponseTest.java │ │ ├── model/ │ │ │ ├── BranchStatusTest.java │ │ │ ├── BranchTypeTest.java │ │ │ ├── GlobalLockConfigTest.java │ │ │ ├── GlobalStatusTest.java │ │ │ ├── LockStatusTest.java │ │ │ ├── ResultTest.java │ │ │ └── TransactionExceptionCodeTest.java │ │ ├── protocol/ │ │ │ ├── BatchResultMessageTest.java │ │ │ ├── HeartbeatMessageTest.java │ │ │ ├── MergeResultMessageTest.java │ │ │ ├── MergedWarpMessageTest.java │ │ │ ├── MessageFutureTest.java │ │ │ ├── MessageTypeTest.java │ │ │ ├── ProtocolConstantsTest.java │ │ │ ├── RegisterRMRequestTest.java │ │ │ ├── RegisterRMResponseTest.java │ │ │ ├── RegisterTMRequestTest.java │ │ │ ├── ResultCodeTest.java │ │ │ ├── RpcMessageTest.java │ │ │ ├── VersionTest.java │ │ │ ├── detector/ │ │ │ │ ├── Http2DetectorTest.java │ │ │ │ └── HttpDetectorTest.java │ │ │ └── transaction/ │ │ │ ├── BranchRollbackRequestTest.java │ │ │ ├── BranchRollbackResponseTest.java │ │ │ └── GlobalBeginResponseTest.java │ │ ├── rpc/ │ │ │ ├── ClientTypeTest.java │ │ │ ├── DefaultServerMessageListenerImplTest.java │ │ │ ├── MsgVersionHelperTest.java │ │ │ ├── RpcContextTest.java │ │ │ ├── ShutdownHookTest.java │ │ │ ├── hook/ │ │ │ │ └── StatusRpcHookTest.java │ │ │ ├── netty/ │ │ │ │ ├── AbstractNettyRemotingClientTest.java │ │ │ │ ├── AbstractNettyRemotingServerTest.java │ │ │ │ ├── AbstractNettyRemotingTest.java │ │ │ │ ├── ChannelEventHandlerIntegrationTest.java │ │ │ │ ├── ChannelEventListenerTest.java │ │ │ │ ├── ChannelEventTypeTest.java │ │ │ │ ├── ChannelManagerTest.java │ │ │ │ ├── ChannelUtilTest.java │ │ │ │ ├── MultiProtocolDecoderTest.java │ │ │ │ ├── NettyBaseConfigTest.java │ │ │ │ ├── NettyClientBootstrapTest.java │ │ │ │ ├── NettyClientChannelManagerTest.java │ │ │ │ ├── NettyClientConfigTest.java │ │ │ │ ├── NettyClientTestSuite.java │ │ │ │ ├── NettyPoolKeyTest.java │ │ │ │ ├── NettyPoolableFactoryTest.java │ │ │ │ ├── NettyRemotingServerTest.java │ │ │ │ ├── NettyServerConfigTest.java │ │ │ │ ├── ResourceCleanupTest.java │ │ │ │ ├── RmNettyClientTest.java │ │ │ │ ├── TmNettyClientTest.java │ │ │ │ ├── grpc/ │ │ │ │ │ ├── GrpcDecoderTest.java │ │ │ │ │ ├── GrpcEncoderTest.java │ │ │ │ │ └── GrpcHeaderEnumTest.java │ │ │ │ ├── http/ │ │ │ │ │ ├── Http2HttpHandlerTest.java │ │ │ │ │ ├── HttpDispatchHandlerTest.java │ │ │ │ │ ├── ParameterParserTest.java │ │ │ │ │ └── filter/ │ │ │ │ │ ├── HttpRequestFilterManagerTest.java │ │ │ │ │ └── HttpRequestParamWrapperTest.java │ │ │ │ ├── v0/ │ │ │ │ │ ├── ProtocolConstantsV0Test.java │ │ │ │ │ ├── ProtocolDecoderV0Test.java │ │ │ │ │ ├── ProtocolEncoderV0Test.java │ │ │ │ │ └── ProtocolRpcMessageV0Test.java │ │ │ │ └── v1/ │ │ │ │ ├── HeadMapSerializerTest.java │ │ │ │ └── ProtocolDecoderV1Test.java │ │ │ └── processor/ │ │ │ ├── PairTest.java │ │ │ ├── client/ │ │ │ │ ├── ClientHeartbeatProcessorTest.java │ │ │ │ ├── ClientOnResponseProcessorTest.java │ │ │ │ ├── RmBranchCommitProcessorTest.java │ │ │ │ ├── RmBranchRollbackProcessorTest.java │ │ │ │ └── RmUndoLogProcessorTest.java │ │ │ └── server/ │ │ │ ├── BatchLogHandlerTest.java │ │ │ ├── MockRegisterCheckAuthHandler.java │ │ │ ├── RegRmProcessorTest.java │ │ │ ├── RegTmProcessorTest.java │ │ │ ├── ServerHeartbeatProcessorTest.java │ │ │ ├── ServerOnRequestProcessorTest.java │ │ │ └── ServerOnResponseProcessorTest.java │ │ ├── serializer/ │ │ │ ├── SerializerSecurityRegistryTest.java │ │ │ ├── SerializerServiceLoaderTest.java │ │ │ └── SerializerTypeTest.java │ │ └── store/ │ │ ├── BranchTransactionDOTest.java │ │ ├── GlobalTransactionDOTest.java │ │ ├── LockDOTest.java │ │ └── db/ │ │ └── sql/ │ │ ├── distributed/ │ │ │ └── lock/ │ │ │ ├── BaseDistributedLockSqlServerTest.java │ │ │ ├── BaseDistributedLockSqlTest.java │ │ │ └── DistributedLockSqlFactoryTest.java │ │ ├── lock/ │ │ │ └── LockStoreSqlFactoryTest.java │ │ └── log/ │ │ └── LogStoreSqlsFactoryTest.java │ └── resources/ │ ├── META-INF/ │ │ └── services/ │ │ └── org.apache.seata.core.rpc.RegisterCheckAuthHandler │ ├── file.conf │ └── registry.conf ├── dependencies/ │ └── pom.xml ├── discovery/ │ ├── pom.xml │ ├── seata-discovery-all/ │ │ └── pom.xml │ ├── seata-discovery-consul/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── discovery/ │ │ │ │ └── registry/ │ │ │ │ └── consul/ │ │ │ │ ├── ConsulListener.java │ │ │ │ ├── ConsulRegistryProvider.java │ │ │ │ └── ConsulRegistryServiceImpl.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── discovery/ │ │ │ └── registry/ │ │ │ └── consul/ │ │ │ └── ConsulRegistryServiceImplMockTest.java │ │ └── resources/ │ │ ├── file.conf │ │ └── registry.conf │ ├── seata-discovery-core/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── discovery/ │ │ │ │ ├── loadbalance/ │ │ │ │ │ ├── ConsistentHashLoadBalance.java │ │ │ │ │ ├── LeastActiveLoadBalance.java │ │ │ │ │ ├── LoadBalance.java │ │ │ │ │ ├── LoadBalanceFactory.java │ │ │ │ │ ├── RandomLoadBalance.java │ │ │ │ │ ├── RoundRobinLoadBalance.java │ │ │ │ │ └── XIDLoadBalance.java │ │ │ │ └── registry/ │ │ │ │ ├── FileRegistryProvider.java │ │ │ │ ├── FileRegistryServiceImpl.java │ │ │ │ ├── MultiRegistryFactory.java │ │ │ │ ├── RegistryFactory.java │ │ │ │ ├── RegistryHeartBeats.java │ │ │ │ ├── RegistryProvider.java │ │ │ │ ├── RegistryService.java │ │ │ │ └── RegistryType.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── org.apache.seata.discovery.loadbalance.LoadBalance │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ ├── config/ │ │ │ │ └── ConfigurationFactoryTest.java │ │ │ └── discovery/ │ │ │ ├── loadbalance/ │ │ │ │ ├── LoadBalanceFactoryTest.java │ │ │ │ └── LoadBalanceTest.java │ │ │ └── registry/ │ │ │ ├── MockNacosRegistryProvider.java │ │ │ ├── MockNacosRegistryService.java │ │ │ ├── MultiRegistryFactoryTest.java │ │ │ └── RegistryFactoryTest.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ ├── apollo.properties │ │ ├── file.conf │ │ └── registry.conf │ ├── seata-discovery-custom/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── discovery/ │ │ │ │ └── registry/ │ │ │ │ └── custom/ │ │ │ │ └── CustomRegistryProvider.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── discovery/ │ │ │ └── registry/ │ │ │ └── custom/ │ │ │ ├── CustomRegistryProviderForTest.java │ │ │ ├── CustomRegistryServiceForTest.java │ │ │ └── CustomRegistryTest.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ └── registry.conf │ ├── seata-discovery-etcd3/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── discovery/ │ │ │ │ └── registry/ │ │ │ │ └── etcd3/ │ │ │ │ ├── EtcdRegistryProvider.java │ │ │ │ └── EtcdRegistryServiceImpl.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── discovery/ │ │ │ └── registry/ │ │ │ └── etcd3/ │ │ │ ├── EtcdRegistryProviderTest.java │ │ │ ├── EtcdRegistryServiceImplMockTest.java │ │ │ └── EtcdRegistryServiceImplTest.java │ │ └── resources/ │ │ ├── file.conf │ │ └── registry.conf │ ├── seata-discovery-eureka/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── discovery/ │ │ │ │ └── registry/ │ │ │ │ └── eureka/ │ │ │ │ ├── CustomEurekaInstanceConfig.java │ │ │ │ ├── EurekaRegistryProvider.java │ │ │ │ └── EurekaRegistryServiceImpl.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── discovery/ │ │ │ └── registry/ │ │ │ └── eureka/ │ │ │ ├── CustomEurekaInstanceConfigTest.java │ │ │ ├── EurekaRegistryProviderTest.java │ │ │ └── EurekaRegistryServiceImplTest.java │ │ └── resources/ │ │ └── registry.conf │ ├── seata-discovery-nacos/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── discovery/ │ │ │ │ └── registry/ │ │ │ │ └── nacos/ │ │ │ │ ├── NacosRegistryProvider.java │ │ │ │ └── NacosRegistryServiceImpl.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── discovery/ │ │ │ └── registry/ │ │ │ └── nacos/ │ │ │ ├── NacosRegistryProviderTest.java │ │ │ └── NacosRegistryServiceImplTest.java │ │ └── resources/ │ │ └── registry.conf │ ├── seata-discovery-namingserver/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── discovery/ │ │ │ │ └── registry/ │ │ │ │ └── namingserver/ │ │ │ │ ├── NamingListener.java │ │ │ │ ├── NamingRegistryException.java │ │ │ │ ├── NamingserverRegistryProvider.java │ │ │ │ └── NamingserverRegistryServiceImpl.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── discovery/ │ │ │ └── registry/ │ │ │ └── namingserver/ │ │ │ └── NamingserverRegistryServiceImplTest.java │ │ └── resources/ │ │ └── registry.conf │ ├── seata-discovery-raft/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── discovery/ │ │ │ │ └── registry/ │ │ │ │ └── raft/ │ │ │ │ ├── RaftRegistryProvider.java │ │ │ │ └── RaftRegistryServiceImpl.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── discovery/ │ │ │ └── registry/ │ │ │ └── raft/ │ │ │ └── RaftRegistryServiceImplTest.java │ │ └── resources/ │ │ ├── file.conf │ │ └── registry.conf │ ├── seata-discovery-redis/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── discovery/ │ │ │ │ └── registry/ │ │ │ │ └── redis/ │ │ │ │ ├── RedisListener.java │ │ │ │ ├── RedisRegistryProvider.java │ │ │ │ └── RedisRegistryServiceImpl.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── discovery/ │ │ └── registry/ │ │ └── redis/ │ │ └── RedisRegisterServiceImplTest.java │ ├── seata-discovery-sofa/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── discovery/ │ │ │ └── registry/ │ │ │ └── sofa/ │ │ │ ├── SofaRegistryProvider.java │ │ │ └── SofaRegistryServiceImpl.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ └── seata-discovery-zk/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── discovery/ │ │ │ └── registry/ │ │ │ └── zk/ │ │ │ ├── ZookeeperRegisterServiceImpl.java │ │ │ └── ZookeeperRegistryProvider.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── org.apache.seata.discovery.registry.RegistryProvider │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── discovery/ │ │ └── registry/ │ │ └── zk/ │ │ ├── ZookeeperRegisterServiceImplTest.java │ │ └── ZookeeperRegistryProviderTest.java │ └── resources/ │ ├── file.conf │ └── registry.conf ├── distribution/ │ ├── LICENSE │ ├── LICENSE-namingserver │ ├── LICENSE-server │ ├── NOTICE │ ├── NOTICE-namingserver │ ├── NOTICE-server │ ├── NOTICE.md │ ├── docker/ │ │ ├── namingserver/ │ │ │ └── Dockerfile │ │ └── server/ │ │ └── Dockerfile │ ├── licenses/ │ │ ├── Apache-1.1 │ │ ├── CDDL+GPL-1.1 │ │ ├── CDDL-1.0 │ │ ├── EPL-1.0 │ │ ├── EPL-2.0 │ │ ├── HdrHistogram-BSD-2-Clause │ │ ├── LatencyUtils-BSD-2-Clause │ │ ├── Python-2.0 │ │ ├── abego-treelayout-BSD-3-Clause │ │ ├── alicloud-console-components-MIT │ │ ├── alicloud-console-components-actions-MIT │ │ ├── alifd-field-MIT │ │ ├── alifd-next-MIT │ │ ├── alifd-validate-MIT │ │ ├── ansi-colors-MIT │ │ ├── ansi-regex-MIT │ │ ├── ansi-styles-MIT │ │ ├── antlr-ST4-BSD-3-Clause │ │ ├── antlr-runtime-BSD-3-Clause │ │ ├── antlr-stringtemplate3-BSD-3-Clause │ │ ├── antlr2-BSD-3-Clause │ │ ├── antlr3-BSD │ │ ├── antlr4-BSD │ │ ├── antlr4-ST4-BSD │ │ ├── antlr4-runtime-BSD-3-Clause │ │ ├── anymatch-ISC │ │ ├── argparse-MIT │ │ ├── asm-BSD-3-Clause │ │ ├── asn1.js-MIT │ │ ├── asynckit-MIT │ │ ├── axios-MIT │ │ ├── babel-code-frame-MIT │ │ ├── babel-compat-data-MIT │ │ ├── babel-core-MIT │ │ ├── babel-generator-MIT │ │ ├── babel-helper-annotate-as-pure-MIT │ │ ├── babel-helper-compilation-targets-MIT │ │ ├── babel-helper-environment-visitor-MIT │ │ ├── babel-helper-function-name-MIT │ │ ├── babel-helper-hoist-variables-MIT │ │ ├── babel-helper-module-imports-MIT │ │ ├── babel-helper-module-transforms-MIT │ │ ├── babel-helper-plugin-utils-MIT │ │ ├── babel-helper-simple-access-MIT │ │ ├── babel-helper-split-export-declaration-MIT │ │ ├── babel-helper-string-parser-MIT │ │ ├── babel-helper-validator-identifier-MIT │ │ ├── babel-helper-validator-option-MIT │ │ ├── babel-helpers-MIT │ │ ├── babel-highlight-MIT │ │ ├── babel-parser-MIT │ │ ├── babel-plugin-emotion-MIT │ │ ├── babel-plugin-macros-MIT │ │ ├── babel-plugin-styled-components-MIT │ │ ├── babel-plugin-syntax-jsx-MIT │ │ ├── babel-runtime-MIT │ │ ├── babel-template-MIT │ │ ├── babel-traverse-MIT │ │ ├── babel-types-MIT │ │ ├── balanced-match-MIT │ │ ├── bignumber.js-MIT │ │ ├── bn.js-MIT │ │ ├── bpmn-font-SIL │ │ ├── bpmn-io-cm-theme-MIT │ │ ├── bpmn-io-diagram-js-ui-MIT │ │ ├── bpmn-io-feel-editor-MIT │ │ ├── bpmn-io-feel-lint-MIT │ │ ├── bpmn-io-properties-panel-MIT │ │ ├── brace-expansion-MIT │ │ ├── braces-2.3.1-MIT │ │ ├── braces-3.0.2-MIT │ │ ├── braces-MIT │ │ ├── brorand-MIT │ │ ├── browser-stdout-ISC │ │ ├── browserify-aes-MIT │ │ ├── browserify-rsa-MIT │ │ ├── browserify-sign-ISC │ │ ├── browserslist-MIT │ │ ├── buffer-xor-MIT │ │ ├── callsites-MIT │ │ ├── camelcase-MIT │ │ ├── camelize-MIT │ │ ├── chalk-MIT │ │ ├── checker-qual-MIT │ │ ├── chokidar-MIT │ │ ├── cipher-base-MIT │ │ ├── classnames-2.5.1-MIT │ │ ├── classnames-MIT │ │ ├── cliui-ISC │ │ ├── clsx-MIT │ │ ├── codemirror-autocomplete-MIT │ │ ├── codemirror-commands-MIT │ │ ├── codemirror-language-MIT │ │ ├── codemirror-lint-MIT │ │ ├── codemirror-state-MIT │ │ ├── codemirror-view-MIT │ │ ├── color-convert-MIT │ │ ├── color-name-MIT │ │ ├── combined-stream-MIT │ │ ├── component-event-MIT │ │ ├── concat-map-MIT │ │ ├── convert-source-map-MIT │ │ ├── core-js-MIT │ │ ├── core-util-is-MIT │ │ ├── cosmiconfig-MIT │ │ ├── create-hash-MIT │ │ ├── create-hmac-MIT │ │ ├── crelt-MIT │ │ ├── css-color-keywords-ISC │ │ ├── css-to-react-native-MIT │ │ ├── csstype-MIT │ │ ├── dayjs-MIT │ │ ├── debug-MIT │ │ ├── decamelize-MIT │ │ ├── decode-uri-component-MIT │ │ ├── delayed-stream-MIT │ │ ├── dexx-collections-MIT │ │ ├── diagram-js-MIT │ │ ├── diagram-js-grid-MIT │ │ ├── didi-MIT │ │ ├── dom-helpers-MIT │ │ ├── dom-walk-MIT │ │ ├── dom7-MIT │ │ ├── domify-MIT │ │ ├── driver-dom-BSD-3-Clause │ │ ├── driver-miniapp-BSD-3-Clause │ │ ├── driver-universal-BSD-3-Clause │ │ ├── driver-weex-BSD-3-Clause │ │ ├── dva-MIT │ │ ├── dva-core-MIT │ │ ├── electron-to-chromium-ISC │ │ ├── elliptic-MIT │ │ ├── emotion-cache-MIT │ │ ├── emotion-core-MIT │ │ ├── emotion-css-MIT │ │ ├── emotion-hash-MIT │ │ ├── emotion-is-prop-valid-MIT │ │ ├── emotion-memoize-MIT │ │ ├── emotion-serialize-MIT │ │ ├── emotion-sheet-MIT │ │ ├── emotion-stylis-MIT │ │ ├── emotion-unitless-MIT │ │ ├── emotion-utils-MIT │ │ ├── emotion-weak-memoize-MIT │ │ ├── encoding-MIT │ │ ├── error-ex-MIT │ │ ├── escalade-MIT │ │ ├── escape-string-regexp-MIT │ │ ├── evp_bytestokey-MIT │ │ ├── feelers-MIT │ │ ├── feelin-MIT │ │ ├── fill-range-MIT │ │ ├── find-root-MIT │ │ ├── find-up-MIT │ │ ├── flat-BSD-3-Clause │ │ ├── flatten-MIT │ │ ├── focus-trap-MIT │ │ ├── follow-redirects-MIT │ │ ├── form-data-MIT │ │ ├── fs.realpath-ISC │ │ ├── fsevents-MIT │ │ ├── function-bind-MIT │ │ ├── gensync-MIT │ │ ├── get-caller-file-ISC │ │ ├── glob-ISC │ │ ├── glob-parent-ISC │ │ ├── global-MIT │ │ ├── globals-MIT │ │ ├── growl-MIT │ │ ├── h2-MPL-2.0 │ │ ├── hamcrest-BSD-3-Clause │ │ ├── hammerjs-MIT │ │ ├── has-flag-MIT │ │ ├── hash-base-MIT │ │ ├── hash.js-MIT │ │ ├── hasown-MIT │ │ ├── he-MIT │ │ ├── history-MIT │ │ ├── hmac-drbg-MIT │ │ ├── hoist-non-react-statics-BSD-3-Clause │ │ ├── iconv-lite-MIT │ │ ├── icu4j-Unicode │ │ ├── import-fresh-MIT │ │ ├── inflight-ISC │ │ ├── inherits-ISC │ │ ├── inherits-browser-ISC │ │ ├── invariant-MIT │ │ ├── is-arrayish-MIT │ │ ├── is-binary-path-MIT │ │ ├── is-core-module-MIT │ │ ├── is-extglob-MIT │ │ ├── is-fullwidth-code-point-MIT │ │ ├── is-glob-MIT │ │ ├── is-number-MIT │ │ ├── is-plain-obj-MIT │ │ ├── is-plain-object-MIT │ │ ├── is-what-MIT │ │ ├── isarray-MIT │ │ ├── isexe-ISC │ │ ├── isobject-MIT │ │ ├── isomorphic-fetch-MIT │ │ ├── janino-BSD-3-Clause │ │ ├── jedis-MIT │ │ ├── jquery-MIT │ │ ├── jridgewell-gen-mapping-MIT │ │ ├── jridgewell-resolve-uri-MIT │ │ ├── jridgewell-set-array-MIT │ │ ├── jridgewell-sourcemap-codec-MIT │ │ ├── jridgewell-trace-mapping-MIT │ │ ├── js-tokens-MIT │ │ ├── js-yaml-MIT │ │ ├── jsesc-MIT │ │ ├── json-parse-even-better-errors-MIT │ │ ├── json5-MIT │ │ ├── jtokkit-MIT │ │ ├── jul-to-slf4j-MIT │ │ ├── junit4-EPL-1.0 │ │ ├── kryo-BSD-3-Clause │ │ ├── lang-feel-MIT │ │ ├── lezer-common-MIT │ │ ├── lezer-feel-MIT │ │ ├── lezer-highlight-MIT │ │ ├── lezer-lr-MIT │ │ ├── lezer-markdown-MIT │ │ ├── lines-and-columns-MIT │ │ ├── loader-utils-MIT │ │ ├── locate-path-MIT │ │ ├── lodash-MIT │ │ ├── lodash-es-MIT │ │ ├── lodash.clonedeep-MIT │ │ ├── log-symbols-MIT │ │ ├── loose-envify-MIT │ │ ├── lru-cache-ISC │ │ ├── luxon-MIT │ │ ├── lz4-BSD-2-Clause │ │ ├── mcp-MIT │ │ ├── mcp-core-MIT │ │ ├── mcp-json-MIT │ │ ├── mcp-json-jackson2-MIT │ │ ├── mcp-spring-webmvc-MIT │ │ ├── md5.js-MIT │ │ ├── memoize-one-MIT │ │ ├── merge-anything-MIT │ │ ├── micromatch-MIT │ │ ├── mime-db-MIT │ │ ├── mime-types-MIT │ │ ├── min-dash-MIT │ │ ├── min-document-MIT │ │ ├── min-dom-MIT │ │ ├── minimalistic-assert-ISC │ │ ├── minimalistic-crypto-utils-MIT │ │ ├── minimatch-ISC │ │ ├── minlog-BSD-3-Clause │ │ ├── mocha-MIT │ │ ├── moment-MIT │ │ ├── ms-MIT │ │ ├── mxparser-IUELSL │ │ ├── nanoid-MIT │ │ ├── node-fetch-MIT │ │ ├── node-forge-BSD-3-Clause │ │ ├── node-releases-MIT │ │ ├── normalize-path-MIT │ │ ├── object-assign-MIT │ │ ├── object-refs-MIT │ │ ├── omit.js-MIT │ │ ├── once-ISC │ │ ├── p-limit-MIT │ │ ├── p-locate-MIT │ │ ├── parent-module-MIT │ │ ├── parse-asn1-ISC │ │ ├── parse-json-MIT │ │ ├── path-exists-MIT │ │ ├── path-intersection-MIT │ │ ├── path-is-absolute-MIT │ │ ├── path-parse-MIT │ │ ├── path-to-regexp-MIT │ │ ├── path-type-MIT │ │ ├── pbkdf2-MIT │ │ ├── picocolors-ISC │ │ ├── picomatch-MIT │ │ ├── postcss-value-parse-MIT │ │ ├── postcss-value-parser-MIT │ │ ├── postgresql-BSD-2-Clause │ │ ├── preact-MIT │ │ ├── process-MIT │ │ ├── process-nextick-args-MIT │ │ ├── prop-types-MIT │ │ ├── protobuf-java-BSD-3-Clause │ │ ├── proxy-from-env-MIT │ │ ├── randombytes-MIT │ │ ├── rax-BSD-3-Clause │ │ ├── react-MIT │ │ ├── react-dom-MIT │ │ ├── react-is-MIT │ │ ├── react-lifecycles-compat-MIT │ │ ├── react-loading-skeleton-MIT │ │ ├── react-redux-MIT │ │ ├── react-router-MIT │ │ ├── react-router-dom-MIT │ │ ├── react-router-redux-MIT │ │ ├── react-transition-group-BSD-3-Clause │ │ ├── reactive-streams-MIT │ │ ├── readable-stream-MIT │ │ ├── readdirp-MIT │ │ ├── redux-MIT │ │ ├── redux-saga-MIT │ │ ├── redux-thunk-MIT │ │ ├── reflectasm-BSD-3-Clause │ │ ├── regenerator-runtime-MIT │ │ ├── require-directory-MIT │ │ ├── resize-observer-polyfill-MIT │ │ ├── resolve-MIT │ │ ├── resolve-from-MIT │ │ ├── resolve-pathname-MIT │ │ ├── ripemd160-MIT │ │ ├── safe-buffer-MIT │ │ ├── safer-buffer-MIT │ │ ├── scheduler-MIT │ │ ├── semver-ISC │ │ ├── serialize-javascript-BSD-3-Clause │ │ ├── sha.js-MIT │ │ ├── shallow-element-equals-MIT │ │ ├── slf4j-api-MIT │ │ ├── source-map-BSD-3-Clause │ │ ├── sprintf-js-BSD-3-Clause │ │ ├── ssr-window-MIT │ │ ├── string-decoder-MIT │ │ ├── string-width-MIT │ │ ├── string_decoder-MIT │ │ ├── strip-ansi-MIT │ │ ├── strip-json-comments-MIT │ │ ├── style-equal-MIT │ │ ├── style-mod-MIT │ │ ├── styled-components-MIT │ │ ├── stylis-MIT │ │ ├── stylis-rule-sheet-MIT │ │ ├── supports-color-MIT │ │ ├── supports-preserve-symlinks-flag-MIT │ │ ├── svelte-MIT │ │ ├── swiper-MIT │ │ ├── symbol-observable-MIT │ │ ├── tabbable-MIT │ │ ├── tiny-invariant-MIT │ │ ├── tiny-svg-MIT │ │ ├── tiny-warning-MIT │ │ ├── to-fast-properties-MIT │ │ ├── to-regex-range-MIT │ │ ├── tr46-MIT │ │ ├── tslib-OBSD │ │ ├── types-history-MIT │ │ ├── types-hoist-non-react-statics-MIT │ │ ├── types-isomorphic-fetch-MIT │ │ ├── types-parse-json-MIT │ │ ├── types-prop-types-MIT │ │ ├── types-react-MIT │ │ ├── types-react-dom-MIT │ │ ├── types-react-router-MIT │ │ ├── types-react-router-dom-MIT │ │ ├── types-react-router-redux-MIT │ │ ├── types-scheduler-MIT │ │ ├── types-use-sync-external-store-MIT │ │ ├── ungap-ISC │ │ ├── uni-BSD-3-Clause │ │ ├── universal-BSD-3-Clause │ │ ├── update-browserslist-db-MIT │ │ ├── use-sync-external-store-MIT │ │ ├── util-deprecate-MIT │ │ ├── value-equal-MIT │ │ ├── w3c-keyname-MIT │ │ ├── warning-BSD-3-Clause │ │ ├── warning-MIT │ │ ├── webidl-conversions-BSD-2-Clause │ │ ├── whatwg-fetch-MIT │ │ ├── whatwg-url-MIT │ │ ├── which-ISC │ │ ├── wide-align-ISC │ │ ├── wrap-ansi-MIT │ │ ├── wrappy-ISC │ │ ├── xstream-BSD-3-Clause │ │ ├── y18n-ISC │ │ ├── yallist-ISC │ │ ├── yaml-ISC │ │ ├── yamljs-MIT │ │ ├── yargs-MIT │ │ ├── yargs-parser-ISC │ │ ├── yargs-unparser-MIT │ │ ├── yocto-queue-MIT │ │ └── zstd-jni-BSD-2-Clause │ ├── pom.xml │ ├── release-seata.xml │ └── source-release.xml ├── extensions/ │ ├── apm/ │ │ ├── apm-seata-skywalking-plugin/ │ │ │ ├── config/ │ │ │ │ └── agent.config │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── org/ │ │ │ │ │ └── apache/ │ │ │ │ │ └── seata/ │ │ │ │ │ └── apm/ │ │ │ │ │ └── skywalking/ │ │ │ │ │ └── plugin/ │ │ │ │ │ ├── DefaultCoreDoGlobalCommitInterceptor.java │ │ │ │ │ ├── NettyRemotingClientSendSyncInterceptor.java │ │ │ │ │ ├── RemotingProcessorProcessInterceptor.java │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── SWSeataConstants.java │ │ │ │ │ │ ├── SWSeataUtils.java │ │ │ │ │ │ └── SeataPluginConfig.java │ │ │ │ │ └── define/ │ │ │ │ │ ├── AbstractNettyRemotingInstrumentation.java │ │ │ │ │ ├── DefaultCoreInstrumentation.java │ │ │ │ │ └── RemotingProcessorInstrumentation.java │ │ │ │ └── resources/ │ │ │ │ └── skywalking-plugin.def │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── apm/ │ │ │ └── skywalking/ │ │ │ └── plugin/ │ │ │ ├── DefaultCoreDoGlobalCommitInterceptorTest.java │ │ │ ├── NettyRemotingClientSendSyncInterceptorTest.java │ │ │ ├── RemotingProcessorProcessInterceptorTest.java │ │ │ ├── common/ │ │ │ │ └── SWSeataUtilsTest.java │ │ │ └── define/ │ │ │ ├── AbstractNettyRemotingInstrumentationTest.java │ │ │ ├── DefaultCoreInstrumentationTest.java │ │ │ └── RemotingProcessorInstrumentationTest.java │ │ └── pom.xml │ ├── messaging/ │ │ ├── pom.xml │ │ └── seata-rocketmq/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── integration/ │ │ │ └── rocketmq/ │ │ │ ├── SeataMQProducer.java │ │ │ ├── SeataMQProducerFactory.java │ │ │ ├── TCCRocketMQ.java │ │ │ └── TCCRocketMQImpl.java │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── integration/ │ │ │ └── rocketmq/ │ │ │ ├── SeataMQProducerFactoryTest.java │ │ │ ├── SeataMQProducerTest.java │ │ │ └── TCCRocketMQImplTest.java │ │ └── resources/ │ │ ├── file.conf │ │ └── registry.conf │ ├── pom.xml │ └── rpc/ │ ├── pom.xml │ ├── seata-brpc/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── integration/ │ │ │ └── brpc/ │ │ │ ├── TransactionPropagationClientInterceptor.java │ │ │ └── TransactionPropagationServerInterceptor.java │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── integration/ │ │ │ └── brpc/ │ │ │ ├── TransactionInterceptorTest.java │ │ │ ├── dto/ │ │ │ │ └── Echo.java │ │ │ └── server/ │ │ │ ├── EchoService.java │ │ │ └── impl/ │ │ │ └── EchoServiceImpl.java │ │ └── proto/ │ │ └── Echo.proto │ ├── seata-dubbo/ │ │ └── pom.xml │ ├── seata-dubbo-alibaba/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── integration/ │ │ │ │ └── dubbo/ │ │ │ │ └── alibaba/ │ │ │ │ ├── AlibabaDubboTransactionConsumerFilter.java │ │ │ │ └── AlibabaDubboTransactionProviderFilter.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── com.alibaba.dubbo.rpc.Filter │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── integration/ │ │ └── dubbo/ │ │ └── alibaba/ │ │ ├── AlibabaDubboTransactionPropagationFilterTest.java │ │ ├── AlibabaDubboTransactionProviderFilterTest.java │ │ └── mock/ │ │ └── MockInvoker.java │ ├── seata-grpc/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── integration/ │ │ │ └── grpc/ │ │ │ └── interceptor/ │ │ │ ├── GrpcHeaderKey.java │ │ │ ├── client/ │ │ │ │ └── ClientTransactionInterceptor.java │ │ │ └── server/ │ │ │ ├── ServerListenerProxy.java │ │ │ └── ServerTransactionInterceptor.java │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── integration/ │ │ │ └── grpc/ │ │ │ └── interceptor/ │ │ │ ├── GrpcTest.java │ │ │ ├── client/ │ │ │ │ └── ClientTransactionInterceptorTest.java │ │ │ └── server/ │ │ │ ├── ServerListenerProxyTest.java │ │ │ └── ServerTransactionInterceptorTest.java │ │ └── proto/ │ │ └── contextTest.proto │ ├── seata-hsf/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── integration/ │ │ │ └── hsf/ │ │ │ ├── HsfTransactionConsumerFilter.java │ │ │ └── HsfTransactionProviderFilter.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.taobao.hsf.invocation.filter.RPCFilter │ ├── seata-http/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── integration/ │ │ │ └── http/ │ │ │ ├── AbstractHttpExecutor.java │ │ │ ├── DefaultHttpExecutor.java │ │ │ ├── HandlerInterceptorAdapter.java │ │ │ ├── HttpExecutor.java │ │ │ ├── SeataWebMvcConfigurer.java │ │ │ ├── TransactionPropagationInterceptor.java │ │ │ ├── WebMvcConfigurerAdapter.java │ │ │ └── XidResource.java │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── integration/ │ │ └── http/ │ │ ├── HttpTest.java │ │ ├── MockController.java │ │ ├── MockHttpExecuter.java │ │ ├── MockHttpServletRequest.java │ │ ├── MockRequest.java │ │ ├── MockResponse.java │ │ ├── MockWebServer.java │ │ └── ServletMapping.java │ ├── seata-http-jakarta/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── integration/ │ │ └── http/ │ │ ├── JakartaSeataWebMvcConfigurer.java │ │ └── jakarta/ │ │ └── JakartaTransactionPropagationInterceptor.java │ ├── seata-motan/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── integration/ │ │ │ │ └── motan/ │ │ │ │ └── MotanTransactionFilter.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── com.weibo.api.motan.filter.Filter │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── integration/ │ │ └── motan/ │ │ ├── MotanTransactionFilterTest.java │ │ ├── XIDService.java │ │ └── XIDServiceImpl.java │ ├── seata-rpc-core/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── integration/ │ │ └── rpc/ │ │ └── core/ │ │ ├── BaseRpcFilter.java │ │ ├── ConsumerRpcFilter.java │ │ └── ProviderRpcFilter.java │ └── seata-sofa-rpc/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── integration/ │ │ │ └── sofa/ │ │ │ └── rpc/ │ │ │ ├── TransactionContextConsumerFilter.java │ │ │ └── TransactionContextProviderFilter.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.alipay.sofa.rpc.filter.Filter │ └── test/ │ └── java/ │ └── org/ │ └── apache/ │ └── seata/ │ └── integration/ │ └── sofa/ │ └── rpc/ │ ├── HelloService.java │ ├── HelloServiceImpl.java │ ├── HelloServiceProxy.java │ └── TransactionContextFilterTest.java ├── integration-tx-api/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ ├── integration/ │ │ │ │ └── tx/ │ │ │ │ └── api/ │ │ │ │ ├── annotation/ │ │ │ │ │ └── AspectTransactional.java │ │ │ │ ├── event/ │ │ │ │ │ └── DegradeCheckEvent.java │ │ │ │ ├── fence/ │ │ │ │ │ ├── DefaultCommonFenceHandler.java │ │ │ │ │ ├── FenceHandler.java │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── CommonFenceConfig.java │ │ │ │ │ ├── constant/ │ │ │ │ │ │ └── CommonFenceConstant.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── CommonFenceException.java │ │ │ │ │ ├── hook/ │ │ │ │ │ │ ├── TccHook.java │ │ │ │ │ │ └── TccHookManager.java │ │ │ │ │ └── store/ │ │ │ │ │ ├── CommonFenceDO.java │ │ │ │ │ ├── CommonFenceStore.java │ │ │ │ │ └── db/ │ │ │ │ │ ├── CommonFenceStoreDataBaseDAO.java │ │ │ │ │ └── sql/ │ │ │ │ │ └── CommonFenceStoreSqls.java │ │ │ │ ├── interceptor/ │ │ │ │ │ ├── ActionContextFilter.java │ │ │ │ │ ├── ActionContextUtil.java │ │ │ │ │ ├── ActionInterceptorHandler.java │ │ │ │ │ ├── DefaultInvocationWrapper.java │ │ │ │ │ ├── InvocationHandlerType.java │ │ │ │ │ ├── InvocationWrapper.java │ │ │ │ │ ├── NestInterceptorHandlerWrapper.java │ │ │ │ │ ├── SeataInterceptor.java │ │ │ │ │ ├── SeataInterceptorPosition.java │ │ │ │ │ ├── TwoPhaseBusinessActionParam.java │ │ │ │ │ ├── TxBeanParserUtils.java │ │ │ │ │ ├── handler/ │ │ │ │ │ │ ├── AbstractProxyInvocationHandler.java │ │ │ │ │ │ ├── CombineTransactionalInterceptorHandler.java │ │ │ │ │ │ ├── DefaultInvocationHandler.java │ │ │ │ │ │ ├── GlobalTransactionalInterceptorHandler.java │ │ │ │ │ │ └── ProxyInvocationHandler.java │ │ │ │ │ └── parser/ │ │ │ │ │ ├── CombineTransactionalInterceptorParser.java │ │ │ │ │ ├── DefaultInterfaceParser.java │ │ │ │ │ ├── DefaultTargetClassParser.java │ │ │ │ │ ├── GlobalTransactionalInterceptorParser.java │ │ │ │ │ ├── IfNeedEnhanceBean.java │ │ │ │ │ ├── InterfaceParser.java │ │ │ │ │ ├── NeedEnhanceEnum.java │ │ │ │ │ └── TargetClassParser.java │ │ │ │ ├── json/ │ │ │ │ │ ├── JsonParser.java │ │ │ │ │ ├── JsonParserFactory.java │ │ │ │ │ └── JsonParserWrap.java │ │ │ │ ├── remoting/ │ │ │ │ │ ├── Protocols.java │ │ │ │ │ ├── RemotingDesc.java │ │ │ │ │ ├── RemotingParser.java │ │ │ │ │ ├── TwoPhaseResult.java │ │ │ │ │ └── parser/ │ │ │ │ │ ├── AbstractedRemotingParser.java │ │ │ │ │ ├── DefaultRemotingParser.java │ │ │ │ │ ├── DubboRemotingParser.java │ │ │ │ │ ├── HSFRemotingParser.java │ │ │ │ │ └── SofaRpcRemotingParser.java │ │ │ │ └── util/ │ │ │ │ ├── ClassUtils.java │ │ │ │ ├── DubboUtil.java │ │ │ │ ├── JsonUtil.java │ │ │ │ └── ProxyUtil.java │ │ │ ├── rm/ │ │ │ │ └── tcc/ │ │ │ │ └── api/ │ │ │ │ ├── BusinessActionContext.java │ │ │ │ ├── BusinessActionContextParameter.java │ │ │ │ ├── BusinessActionContextUtil.java │ │ │ │ └── ParamType.java │ │ │ └── spring/ │ │ │ └── annotation/ │ │ │ ├── CombineTransactional.java │ │ │ ├── GlobalLock.java │ │ │ └── GlobalTransactional.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ ├── org.apache.seata.integration.tx.api.interceptor.parser.InterfaceParser │ │ └── org.apache.seata.integration.tx.api.remoting.RemotingParser │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── integration/ │ │ └── tx/ │ │ └── api/ │ │ ├── fence/ │ │ │ └── hook/ │ │ │ └── TccHookManagerTest.java │ │ ├── interceptor/ │ │ │ ├── ActionInterceptorHandlerTest.java │ │ │ ├── DefaultInvocationWrapperTest.java │ │ │ ├── TestAction.java │ │ │ ├── TestParam.java │ │ │ ├── TwoPhaseBusinessActionParamTest.java │ │ │ └── parser/ │ │ │ ├── Business.java │ │ │ ├── BusinessCombineImpl.java │ │ │ ├── BusinessImpl.java │ │ │ ├── CombineTransactionalInterceptorParserTest.java │ │ │ ├── DefaultInterfaceParserTest.java │ │ │ ├── GlobalTransactionalInterceptorParserTest.java │ │ │ ├── IfNeedEnhanceBeanTest.java │ │ │ ├── NonPrivateMethodTestClass.java │ │ │ └── ProxyUtilsGlobalTransactionalTest.java │ │ ├── json/ │ │ │ ├── JsonParserImpl.java │ │ │ └── JsonParserWrapTest.java │ │ ├── remoting/ │ │ │ ├── TwoPhaseResultTest.java │ │ │ └── parser/ │ │ │ ├── DefaultRemotingParserTest.java │ │ │ ├── RemoteBean.java │ │ │ ├── SimpleBean.java │ │ │ ├── SimpleRemoteBean.java │ │ │ └── SimpleRemotingParser.java │ │ └── util/ │ │ ├── ClassUtilsTest.java │ │ ├── DubboUtilTest.java │ │ └── SimpleDubboProxy.java │ └── resources/ │ ├── file.conf │ └── registry.conf ├── json-common/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── common/ │ │ │ └── json/ │ │ │ ├── JsonSerializer.java │ │ │ ├── JsonSerializerFactory.java │ │ │ ├── JsonUtil.java │ │ │ └── impl/ │ │ │ ├── FastjsonJsonSerializer.java │ │ │ ├── GsonJsonSerializer.java │ │ │ └── JacksonJsonSerializer.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── org.apache.seata.common.json.JsonSerializer │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── common/ │ │ └── json/ │ │ ├── FastjsonJsonSerializerTest.java │ │ ├── GsonJsonSerializerTest.java │ │ ├── JacksonJsonSerializerTest.java │ │ └── JsonUtilTest.java │ └── resources/ │ ├── file.conf │ └── registry.conf ├── metrics/ │ ├── README.md │ ├── pom.xml │ ├── seata-metrics-all/ │ │ └── pom.xml │ ├── seata-metrics-api/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── metrics/ │ │ │ ├── Clock.java │ │ │ ├── Counter.java │ │ │ ├── Gauge.java │ │ │ ├── Id.java │ │ │ ├── IdConstants.java │ │ │ ├── Measurement.java │ │ │ ├── Meter.java │ │ │ ├── Summary.java │ │ │ ├── SystemClock.java │ │ │ ├── Timer.java │ │ │ ├── exporter/ │ │ │ │ └── Exporter.java │ │ │ └── registry/ │ │ │ └── Registry.java │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── metrics/ │ │ └── IdTest.java │ ├── seata-metrics-core/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── metrics/ │ │ │ ├── exporter/ │ │ │ │ ├── ExporterFactory.java │ │ │ │ └── ExporterType.java │ │ │ └── registry/ │ │ │ ├── RegistryFactory.java │ │ │ └── RegistryType.java │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── metrics/ │ │ ├── exporter/ │ │ │ └── ExporterTypeTest.java │ │ └── registry/ │ │ └── RegistryTypeTest.java │ ├── seata-metrics-exporter-prometheus/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── metrics/ │ │ │ │ └── exporter/ │ │ │ │ └── prometheus/ │ │ │ │ └── PrometheusExporter.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.metrics.exporter.Exporter │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── metrics/ │ │ └── exporter/ │ │ └── prometheus/ │ │ └── PrometheusExporterTest.java │ └── seata-metrics-registry-compact/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── metrics/ │ │ │ └── registry/ │ │ │ └── compact/ │ │ │ ├── CompactCounter.java │ │ │ ├── CompactGauge.java │ │ │ ├── CompactRegistry.java │ │ │ ├── CompactSummary.java │ │ │ ├── CompactTimer.java │ │ │ ├── SummaryValue.java │ │ │ └── TimerValue.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── org.apache.seata.metrics.registry.Registry │ └── test/ │ └── java/ │ └── org/ │ └── apache/ │ └── seata/ │ └── metrics/ │ └── exporter/ │ └── prometheus/ │ ├── CompactCounterTest.java │ ├── CompactGaugeTest.java │ ├── CompactRegistryTest.java │ ├── CompactSummaryTest.java │ ├── CompactTimerTest.java │ ├── SummaryValueTest.java │ └── TimerValueTest.java ├── mock-server/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── org/ │ └── apache/ │ └── seata/ │ └── mockserver/ │ ├── MockCoordinator.java │ ├── MockNettyRemotingServer.java │ ├── MockServer.java │ ├── call/ │ │ └── CallRm.java │ ├── controller/ │ │ └── MockHelpController.java │ ├── model/ │ │ ├── MockBranchSession.java │ │ └── MockGlobalSession.java │ └── processor/ │ ├── MockHeartbeatProcessor.java │ ├── MockOnReqProcessor.java │ ├── MockOnRespProcessor.java │ ├── MockRegisterProcessor.java │ └── MockRemotingProcessor.java ├── mvnw ├── mvnw.cmd ├── namingserver/ │ ├── grafana/ │ │ └── panel.json │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── namingserver/ │ │ │ ├── NamingserverApplication.java │ │ │ ├── config/ │ │ │ │ └── WebConfig.java │ │ │ ├── contants/ │ │ │ │ └── NamingConstant.java │ │ │ ├── controller/ │ │ │ │ ├── HealthController.java │ │ │ │ ├── NamingController.java │ │ │ │ └── NamingControllerV2.java │ │ │ ├── entity/ │ │ │ │ ├── bo/ │ │ │ │ │ ├── ClusterBO.java │ │ │ │ │ ├── NamespaceBO.java │ │ │ │ │ └── NamespaceData.java │ │ │ │ ├── pojo/ │ │ │ │ │ └── ClusterData.java │ │ │ │ └── vo/ │ │ │ │ ├── NamespaceVO.java │ │ │ │ ├── monitor/ │ │ │ │ │ ├── ClusterVO.java │ │ │ │ │ └── WatcherVO.java │ │ │ │ └── v2/ │ │ │ │ ├── ClusterVO.java │ │ │ │ └── NamespaceVO.java │ │ │ ├── exception/ │ │ │ │ └── ClusterNotFoundException.java │ │ │ ├── filter/ │ │ │ │ ├── CachedBodyHttpServletRequest.java │ │ │ │ └── ConsoleRemotingFilter.java │ │ │ ├── listener/ │ │ │ │ ├── ClusterChangeEvent.java │ │ │ │ ├── ClusterChangeListener.java │ │ │ │ ├── ClusterChangePushEvent.java │ │ │ │ └── Watcher.java │ │ │ ├── manager/ │ │ │ │ ├── ClusterWatcherManager.java │ │ │ │ └── NamingManager.java │ │ │ ├── metrics/ │ │ │ │ ├── NamingServerMetricsManager.java │ │ │ │ ├── NamingServerTagsContributor.java │ │ │ │ ├── NoOpNamingMetricsManager.java │ │ │ │ └── PrometheusNamingMetricsManager.java │ │ │ └── service/ │ │ │ ├── ConsoleLocalServiceImpl.java │ │ │ └── NamingServerLocalMarkerImpl.java │ │ └── resources/ │ │ ├── application.yml │ │ ├── banner.txt │ │ ├── docker/ │ │ │ └── seata-naming-server-entrypoint.sh │ │ ├── logback/ │ │ │ ├── console-appender.xml │ │ │ └── file-appender.xml │ │ └── logback-spring.xml │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── namingserver/ │ │ ├── AuthControllerWithCustomPropertiesTest.java │ │ ├── AuthControllerWithRandomPasswordTest.java │ │ ├── ClusterWatcherManagerTest.java │ │ ├── NamingControllerTest.java │ │ ├── NamingControllerV2Test.java │ │ ├── NamingEntityTest.java │ │ ├── NamingManagerTest.java │ │ ├── NamingServerMetricsManagerTest.java │ │ ├── NamingserverApplicationTests.java │ │ └── smoke/ │ │ ├── NamingControllerLoggerPrintSmokeTest.java │ │ └── NamingControllerPropertiesSmokeTest.java │ └── resources/ │ └── application.yml ├── pom.xml ├── rm/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── rm/ │ │ ├── AbstractRMHandler.java │ │ ├── AbstractResourceManager.java │ │ ├── DefaultRMHandler.java │ │ ├── DefaultResourceManager.java │ │ └── RMClient.java │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── rm/ │ │ ├── AbstractRMHandlerTest.java │ │ ├── AbstractResourceManagerTest.java │ │ ├── DefaultRMHandlerTest.java │ │ └── DefaultResourceManagerTest.java │ └── resources/ │ ├── file.conf │ └── registry.conf ├── rm-datasource/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── rm/ │ │ │ ├── BaseDataSourceResource.java │ │ │ ├── GlobalLockExecutor.java │ │ │ ├── GlobalLockTemplate.java │ │ │ ├── RMHandlerAT.java │ │ │ ├── RMHandlerXA.java │ │ │ └── datasource/ │ │ │ ├── AbstractConnectionProxy.java │ │ │ ├── AbstractDataSourceCacheResourceManager.java │ │ │ ├── AbstractDataSourceProxy.java │ │ │ ├── AbstractPreparedStatementProxy.java │ │ │ ├── AbstractStatementProxy.java │ │ │ ├── AsyncWorker.java │ │ │ ├── ConnectionContext.java │ │ │ ├── ConnectionProxy.java │ │ │ ├── DataCompareUtils.java │ │ │ ├── DataSourceManager.java │ │ │ ├── DataSourceProxy.java │ │ │ ├── PreparedStatementProxy.java │ │ │ ├── SeataDataSourceProxy.java │ │ │ ├── SqlGenerateUtils.java │ │ │ ├── StatementProxy.java │ │ │ ├── combine/ │ │ │ │ └── CombineConnectionHolder.java │ │ │ ├── exception/ │ │ │ │ └── TableMetaException.java │ │ │ ├── exec/ │ │ │ │ ├── AbstractDMLBaseExecutor.java │ │ │ │ ├── BaseInsertExecutor.java │ │ │ │ ├── BaseTransactionalExecutor.java │ │ │ │ ├── DeleteExecutor.java │ │ │ │ ├── ExecuteTemplate.java │ │ │ │ ├── Executor.java │ │ │ │ ├── InsertExecutor.java │ │ │ │ ├── LockConflictException.java │ │ │ │ ├── LockRetryController.java │ │ │ │ ├── LockWaitTimeoutException.java │ │ │ │ ├── MultiDeleteExecutor.java │ │ │ │ ├── MultiExecutor.java │ │ │ │ ├── MultiUpdateExecutor.java │ │ │ │ ├── PlainExecutor.java │ │ │ │ ├── SelectForUpdateExecutor.java │ │ │ │ ├── StatementCallback.java │ │ │ │ ├── UpdateExecutor.java │ │ │ │ ├── dm/ │ │ │ │ │ └── DmInsertExecutor.java │ │ │ │ ├── kingbase/ │ │ │ │ │ └── KingbaseInsertExecutor.java │ │ │ │ ├── mariadb/ │ │ │ │ │ ├── MariadbInsertExecutor.java │ │ │ │ │ ├── MariadbInsertOnDuplicateUpdateExecutor.java │ │ │ │ │ └── MariadbUpdateJoinExecutor.java │ │ │ │ ├── mysql/ │ │ │ │ │ ├── MySQLInsertExecutor.java │ │ │ │ │ ├── MySQLInsertOnDuplicateUpdateExecutor.java │ │ │ │ │ └── MySQLUpdateJoinExecutor.java │ │ │ │ ├── oceanbase/ │ │ │ │ │ └── OceanBaseInsertExecutor.java │ │ │ │ ├── oracle/ │ │ │ │ │ ├── OracleInsertExecutor.java │ │ │ │ │ └── OracleJdbcType.java │ │ │ │ ├── oscar/ │ │ │ │ │ └── OscarInsertExecutor.java │ │ │ │ ├── polardbx/ │ │ │ │ │ ├── PolarDBXInsertExecutor.java │ │ │ │ │ ├── PolarDBXInsertOnDuplicateUpdateExecutor.java │ │ │ │ │ └── PolarDBXUpdateJoinExecutor.java │ │ │ │ ├── postgresql/ │ │ │ │ │ └── PostgresqlInsertExecutor.java │ │ │ │ └── sqlserver/ │ │ │ │ ├── SqlServerDeleteExecutor.java │ │ │ │ ├── SqlServerInsertExecutor.java │ │ │ │ ├── SqlServerMultiDeleteExecutor.java │ │ │ │ ├── SqlServerMultiUpdateExecutor.java │ │ │ │ ├── SqlServerSelectForUpdateExecutor.java │ │ │ │ └── SqlServerUpdateExecutor.java │ │ │ ├── initializer/ │ │ │ │ ├── AbstractResourceIdInitializer.java │ │ │ │ ├── ResourceIdInitializer.java │ │ │ │ ├── ResourceIdInitializerRegistry.java │ │ │ │ └── db/ │ │ │ │ ├── DMResourceIdInitializer.java │ │ │ │ ├── DefaultResourceIdInitializer.java │ │ │ │ ├── MysqlResourceIdInitializer.java │ │ │ │ ├── OracleResourceIdInitializer.java │ │ │ │ ├── OscarResourceIdInitializer.java │ │ │ │ ├── PostgresqlResourceIdInitializer.java │ │ │ │ └── SqlServerResourceIdInitializer.java │ │ │ ├── sql/ │ │ │ │ ├── SQLVisitorFactory.java │ │ │ │ ├── handler/ │ │ │ │ │ ├── dm/ │ │ │ │ │ │ └── DmEscapeHandler.java │ │ │ │ │ ├── kingbase/ │ │ │ │ │ │ └── KingbaseEscapeHandler.java │ │ │ │ │ ├── mariadb/ │ │ │ │ │ │ └── MariadbEscapeHandler.java │ │ │ │ │ ├── mysql/ │ │ │ │ │ │ └── MySQLEscapeHandler.java │ │ │ │ │ ├── oceanbase/ │ │ │ │ │ │ └── OceanBaseEscapeHandler.java │ │ │ │ │ ├── oracle/ │ │ │ │ │ │ └── OracleEscapeHandler.java │ │ │ │ │ ├── oscar/ │ │ │ │ │ │ └── OscarEscapeHandler.java │ │ │ │ │ ├── polardbx/ │ │ │ │ │ │ └── PolarDBXEscapeHandler.java │ │ │ │ │ ├── postgresql/ │ │ │ │ │ │ └── PostgresqlEscapeHandler.java │ │ │ │ │ └── sqlserver/ │ │ │ │ │ └── SqlServerEscapeHandler.java │ │ │ │ ├── serial/ │ │ │ │ │ └── SerialArray.java │ │ │ │ └── struct/ │ │ │ │ ├── Field.java │ │ │ │ ├── KeyType.java │ │ │ │ ├── Row.java │ │ │ │ ├── TableMetaCacheFactory.java │ │ │ │ ├── TableRecords.java │ │ │ │ └── cache/ │ │ │ │ ├── AbstractTableMetaCache.java │ │ │ │ ├── DmTableMetaCache.java │ │ │ │ ├── KingbaseTableMetaCache.java │ │ │ │ ├── MariadbTableMetaCache.java │ │ │ │ ├── MysqlTableMetaCache.java │ │ │ │ ├── OceanBaseTableMetaCache.java │ │ │ │ ├── OracleTableMetaCache.java │ │ │ │ ├── OscarTableMetaCache.java │ │ │ │ ├── PolarDBXTableMetaCache.java │ │ │ │ ├── PostgresqlTableMetaCache.java │ │ │ │ └── SqlServerTableMetaCache.java │ │ │ ├── undo/ │ │ │ │ ├── AbstractUndoExecutor.java │ │ │ │ ├── AbstractUndoLogManager.java │ │ │ │ ├── BranchUndoLog.java │ │ │ │ ├── SQLUndoDirtyException.java │ │ │ │ ├── SQLUndoLog.java │ │ │ │ ├── UndoExecutorFactory.java │ │ │ │ ├── UndoExecutorHolder.java │ │ │ │ ├── UndoExecutorHolderFactory.java │ │ │ │ ├── UndoLogConstants.java │ │ │ │ ├── UndoLogManager.java │ │ │ │ ├── UndoLogManagerFactory.java │ │ │ │ ├── UndoLogParser.java │ │ │ │ ├── UndoLogParserFactory.java │ │ │ │ ├── dm/ │ │ │ │ │ ├── DmUndoDeleteExecutor.java │ │ │ │ │ ├── DmUndoExecutorHolder.java │ │ │ │ │ ├── DmUndoInsertExecutor.java │ │ │ │ │ ├── DmUndoLogManager.java │ │ │ │ │ └── DmUndoUpdateExecutor.java │ │ │ │ ├── kingbase/ │ │ │ │ │ ├── KingbaseUndoDeleteExecutor.java │ │ │ │ │ ├── KingbaseUndoExecutorHolder.java │ │ │ │ │ ├── KingbaseUndoInsertExecutor.java │ │ │ │ │ ├── KingbaseUndoLogManager.java │ │ │ │ │ └── KingbaseUndoUpdateExecutor.java │ │ │ │ ├── mariadb/ │ │ │ │ │ ├── MariadbUndoDeleteExecutor.java │ │ │ │ │ ├── MariadbUndoExecutorHolder.java │ │ │ │ │ ├── MariadbUndoInsertExecutor.java │ │ │ │ │ ├── MariadbUndoLogManager.java │ │ │ │ │ └── MariadbUndoUpdateExecutor.java │ │ │ │ ├── mysql/ │ │ │ │ │ ├── MySQLJsonHelper.java │ │ │ │ │ ├── MySQLUndoDeleteExecutor.java │ │ │ │ │ ├── MySQLUndoExecutorHolder.java │ │ │ │ │ ├── MySQLUndoInsertExecutor.java │ │ │ │ │ ├── MySQLUndoLogManager.java │ │ │ │ │ └── MySQLUndoUpdateExecutor.java │ │ │ │ ├── oceanbase/ │ │ │ │ │ ├── OceanBaseUndoDeleteExecutor.java │ │ │ │ │ ├── OceanBaseUndoExecutorHolder.java │ │ │ │ │ ├── OceanBaseUndoInsertExecutor.java │ │ │ │ │ ├── OceanBaseUndoLogManager.java │ │ │ │ │ └── OceanBaseUndoUpdateExecutor.java │ │ │ │ ├── oracle/ │ │ │ │ │ ├── OracleUndoDeleteExecutor.java │ │ │ │ │ ├── OracleUndoExecutorHolder.java │ │ │ │ │ ├── OracleUndoInsertExecutor.java │ │ │ │ │ ├── OracleUndoLogManager.java │ │ │ │ │ └── OracleUndoUpdateExecutor.java │ │ │ │ ├── oscar/ │ │ │ │ │ ├── OscarUndoDeleteExecutor.java │ │ │ │ │ ├── OscarUndoExecutorHolder.java │ │ │ │ │ ├── OscarUndoInsertExecutor.java │ │ │ │ │ ├── OscarUndoLogManager.java │ │ │ │ │ └── OscarUndoUpdateExecutor.java │ │ │ │ ├── parser/ │ │ │ │ │ ├── Fastjson2UndoLogParser.java │ │ │ │ │ ├── FastjsonUndoLogParser.java │ │ │ │ │ ├── ForyUndoLogParser.java │ │ │ │ │ ├── JacksonUndoLogParser.java │ │ │ │ │ ├── KryoSerializer.java │ │ │ │ │ ├── KryoSerializerFactory.java │ │ │ │ │ ├── KryoUndoLogParser.java │ │ │ │ │ ├── ProtostuffUndoLogParser.java │ │ │ │ │ ├── UndoLogSerializerClassRegistry.java │ │ │ │ │ └── spi/ │ │ │ │ │ ├── JacksonSerializer.java │ │ │ │ │ ├── KryoTypeSerializer.java │ │ │ │ │ └── ProtostuffDelegate.java │ │ │ │ ├── polardbx/ │ │ │ │ │ ├── PolarDBXUndoDeleteExecutor.java │ │ │ │ │ ├── PolarDBXUndoExecutorHolder.java │ │ │ │ │ ├── PolarDBXUndoInsertExecutor.java │ │ │ │ │ ├── PolarDBXUndoLogManager.java │ │ │ │ │ └── PolarDBXUndoUpdateExecutor.java │ │ │ │ ├── postgresql/ │ │ │ │ │ ├── PostgresqlUndoDeleteExecutor.java │ │ │ │ │ ├── PostgresqlUndoExecutorHolder.java │ │ │ │ │ ├── PostgresqlUndoInsertExecutor.java │ │ │ │ │ ├── PostgresqlUndoLogManager.java │ │ │ │ │ └── PostgresqlUndoUpdateExecutor.java │ │ │ │ └── sqlserver/ │ │ │ │ ├── BaseSqlServerUndoExecutor.java │ │ │ │ ├── SqlServerUndoDeleteExecutor.java │ │ │ │ ├── SqlServerUndoExecutorHolder.java │ │ │ │ ├── SqlServerUndoInsertExecutor.java │ │ │ │ ├── SqlServerUndoLogManager.java │ │ │ │ └── SqlServerUndoUpdateExecutor.java │ │ │ ├── util/ │ │ │ │ ├── JdbcUtils.java │ │ │ │ ├── OffsetTimeUtils.java │ │ │ │ ├── SeataXAResource.java │ │ │ │ └── XAUtils.java │ │ │ └── xa/ │ │ │ ├── AbstractConnectionProxyXA.java │ │ │ ├── AbstractDataSourceProxyXA.java │ │ │ ├── ConnectionProxyXA.java │ │ │ ├── DataSourceProxyXA.java │ │ │ ├── DataSourceProxyXANative.java │ │ │ ├── ExecuteTemplateXA.java │ │ │ ├── Holdable.java │ │ │ ├── Holder.java │ │ │ ├── PreparedStatementProxyXA.java │ │ │ ├── ResourceManagerXA.java │ │ │ ├── StatementProxyXA.java │ │ │ ├── XABranchXid.java │ │ │ ├── XAXid.java │ │ │ └── XAXidBuilder.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ ├── org.apache.seata.common.json.JsonSerializer │ │ ├── org.apache.seata.core.model.ResourceManager │ │ ├── org.apache.seata.rm.AbstractRMHandler │ │ ├── org.apache.seata.rm.datasource.exec.InsertExecutor │ │ ├── org.apache.seata.rm.datasource.undo.UndoExecutorHolder │ │ ├── org.apache.seata.rm.datasource.undo.UndoLogManager │ │ ├── org.apache.seata.rm.datasource.undo.UndoLogParser │ │ ├── org.apache.seata.sqlparser.EscapeHandler │ │ └── org.apache.seata.sqlparser.struct.TableMetaCache │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── rm/ │ │ ├── BaseDataSourceResourceTest.java │ │ ├── GlobalLockTemplateTest.java │ │ ├── RMHandlerATTest.java │ │ └── datasource/ │ │ ├── AsyncWorkerTest.java │ │ ├── ColumnUtilsTest.java │ │ ├── ConnectionContextProxyTest.java │ │ ├── ConnectionContextTest.java │ │ ├── ConnectionProxyTest.java │ │ ├── DataCompareUtilsTest.java │ │ ├── DataSourceProxyTest.java │ │ ├── PreparedStatementProxyTest.java │ │ ├── SqlGenerateUtilsTest.java │ │ ├── StatementProxyTest.java │ │ ├── combine/ │ │ │ └── CombineConnectionHolderTest.java │ │ ├── exec/ │ │ │ ├── AbstractDMLBaseExecutorTest.java │ │ │ ├── BaseTransactionalExecutorTest.java │ │ │ ├── BatchInsertExecutorTest.java │ │ │ ├── DeleteExecutorTest.java │ │ │ ├── DmInsertExecutorTest.java │ │ │ ├── KingbaseInsertExecutorTest.java │ │ │ ├── LockRetryControllerTest.java │ │ │ ├── MariadbInsertExecutorTest.java │ │ │ ├── MariadbInsertOnDuplicateUpdateExecutorTest.java │ │ │ ├── MultiExecutorTest.java │ │ │ ├── MySQLInsertExecutorTest.java │ │ │ ├── MySQLInsertOnDuplicateUpdateExecutorTest.java │ │ │ ├── OceanBaseInsertExecutorTest.java │ │ │ ├── OracleInsertExecutorTest.java │ │ │ ├── OscarInsertExecutorTest.java │ │ │ ├── PlainExecutorTest.java │ │ │ ├── PolarDBXInsertExecutorTest.java │ │ │ ├── PolarDBXInsertOnDuplicateUpdateExecutorTest.java │ │ │ ├── PostgresqlInsertExecutorTest.java │ │ │ ├── SelectForUpdateExecutorTest.java │ │ │ ├── SqlServerInsertExecutorTest.java │ │ │ ├── UpdateExecutorTest.java │ │ │ └── UpdateJoinExecutorTest.java │ │ ├── mock/ │ │ │ ├── MockBlob.java │ │ │ ├── MockClob.java │ │ │ ├── MockConnection.java │ │ │ ├── MockConnectionProxy.java │ │ │ ├── MockDataSource.java │ │ │ ├── MockDatabaseMetaData.java │ │ │ ├── MockDriver.java │ │ │ ├── MockExecuteHandlerImpl.java │ │ │ ├── MockLockConflictConnectionProxy.java │ │ │ ├── MockMariadbDataSource.java │ │ │ ├── MockParameterMetaData.java │ │ │ ├── MockPreparedStatement.java │ │ │ ├── MockResultSet.java │ │ │ └── MockResultSetMetaData.java │ │ ├── sql/ │ │ │ ├── SQLVisitorFactoryTest.java │ │ │ ├── handler/ │ │ │ │ └── EscapeHandlerTest.java │ │ │ └── struct/ │ │ │ ├── ColumnMetaTest.java │ │ │ ├── IndexMetaTest.java │ │ │ ├── IndexTypeTest.java │ │ │ ├── TableMetaCacheFactoryTest.java │ │ │ ├── TableMetaTest.java │ │ │ ├── TableRecordsTest.java │ │ │ └── cache/ │ │ │ ├── DmTableMetaCacheTest.java │ │ │ ├── KingbaseTableMetaCacheTest.java │ │ │ ├── MariadbTableMetaCacheTest.java │ │ │ ├── MysqlTableMetaCacheTest.java │ │ │ ├── OceanBaseTableMetaCacheTest.java │ │ │ ├── OracleTableMetaCacheTest.java │ │ │ ├── OscarTableMetaCacheTest.java │ │ │ ├── PostgresqlTableMetaCacheTest.java │ │ │ └── SqlServerTableMetaCacheTest.java │ │ ├── undo/ │ │ │ ├── AbstractUndoExecutorTest.java │ │ │ ├── BaseExecutorTest.java │ │ │ ├── BaseH2Test.java │ │ │ ├── BaseUndoLogParserTest.java │ │ │ ├── BranchUndoLogTest.java │ │ │ ├── EscapeHandlerFactoryTest.java │ │ │ ├── UndoExecutorTest.java │ │ │ ├── UndoLogManagerTest.java │ │ │ ├── UndoLogParserFactoryTest.java │ │ │ ├── UndoLogParserProviderTest.java │ │ │ ├── dm/ │ │ │ │ ├── DmUndoDeleteExecutorTest.java │ │ │ │ ├── DmUndoExecutorHolderTest.java │ │ │ │ ├── DmUndoInsertExecutorTest.java │ │ │ │ ├── DmUndoLogManagerTest.java │ │ │ │ └── DmUndoUpdateExecutorTest.java │ │ │ ├── h2/ │ │ │ │ └── keyword/ │ │ │ │ └── H2EscapeHandler.java │ │ │ ├── kingbase/ │ │ │ │ ├── KingbaseUndoDeleteExecutorTest.java │ │ │ │ ├── KingbaseUndoInsertExecutorTest.java │ │ │ │ ├── KingbaseUndoLogManagerTest.java │ │ │ │ ├── KingbaseUndoUpdateExecutorTest.java │ │ │ │ └── keyword/ │ │ │ │ └── KingbaseEscapeHandlerTest.java │ │ │ ├── mariadb/ │ │ │ │ ├── MariadbLUndoInsertExecutorTest.java │ │ │ │ ├── MariadbUndoDeleteExecutorTest.java │ │ │ │ ├── MariadbUndoLogManagerTest.java │ │ │ │ ├── MariadbUndoUpdateExecutorTest.java │ │ │ │ └── keyword/ │ │ │ │ └── MariadbEscapeHandlerTest.java │ │ │ ├── mysql/ │ │ │ │ ├── MySQLUndoDeleteExecutorTest.java │ │ │ │ ├── MySQLUndoInsertExecutorTest.java │ │ │ │ ├── MySQLUndoLogManagerTest.java │ │ │ │ ├── MySQLUndoUpdateExecutorTest.java │ │ │ │ └── keyword/ │ │ │ │ └── MySQLEscapeHandlerTest.java │ │ │ ├── oceanbase/ │ │ │ │ ├── OceanBaseEscapeHandlerTest.java │ │ │ │ ├── OceanBaseUndoDeleteExecutorTest.java │ │ │ │ ├── OceanBaseUndoExecutorHolderTest.java │ │ │ │ ├── OceanBaseUndoInsertExecutorTest.java │ │ │ │ ├── OceanBaseUndoLogManagerTest.java │ │ │ │ └── OceanBaseUndoUpdateExecutorTest.java │ │ │ ├── oracle/ │ │ │ │ ├── OracleUndoDeleteExecutorTest.java │ │ │ │ ├── OracleUndoInsertExecutorTest.java │ │ │ │ ├── OracleUndoLogManagerTest.java │ │ │ │ ├── OracleUndoUpdateExecutorTest.java │ │ │ │ └── keyword/ │ │ │ │ └── OracleEscapeHandlerTest.java │ │ │ ├── oscar/ │ │ │ │ ├── OscarUndoDeleteExecutorTest.java │ │ │ │ ├── OscarUndoExecutorHolderTest.java │ │ │ │ ├── OscarUndoInsertExecutorTest.java │ │ │ │ ├── OscarUndoLogManagerTest.java │ │ │ │ └── OscarUndoUpdateExecutorTest.java │ │ │ ├── parser/ │ │ │ │ ├── Fastjson2UndoLogParserTest.java │ │ │ │ ├── FastjsonUndoLogParserTest.java │ │ │ │ ├── ForyUndoLogParserTest.java │ │ │ │ ├── JacksonUndoLogParserTest.java │ │ │ │ ├── KryoUndoLogParserTest.java │ │ │ │ └── ProtostuffUndoLogParserTest.java │ │ │ ├── polardbx/ │ │ │ │ ├── PolarDBXUndoDeleteExecutorTest.java │ │ │ │ ├── PolarDBXUndoInsertExecutorTest.java │ │ │ │ ├── PolarDBXUndoLogManagerTest.java │ │ │ │ ├── PolarDBXUndoUpdateExecutorTest.java │ │ │ │ └── keyword/ │ │ │ │ └── PolarDBXEscapeHandlerTest.java │ │ │ ├── postgresql/ │ │ │ │ ├── PostgresqlUndoDeleteExecutorTest.java │ │ │ │ ├── PostgresqlUndoExecutorHolderTest.java │ │ │ │ ├── PostgresqlUndoInsertExecutorTest.java │ │ │ │ ├── PostgresqlUndoLogManagerTest.java │ │ │ │ ├── PostgresqlUndoUpdateExecutorTest.java │ │ │ │ └── keyword/ │ │ │ │ └── PostgresqlEscapeHandlerTest.java │ │ │ └── sqlserver/ │ │ │ ├── BaseSqlServerUndoExecutorTest.java │ │ │ ├── SqlServerUndoDeleteExecutorTest.java │ │ │ ├── SqlServerUndoExecutorHolderTest.java │ │ │ ├── SqlServerUndoInsertExecutorTest.java │ │ │ ├── SqlServerUndoLogManagerTest.java │ │ │ ├── SqlServerUndoUpdateExecutorTest.java │ │ │ └── keyword/ │ │ │ └── SqlServerKeywordCheckerTest.java │ │ ├── util/ │ │ │ ├── JdbcUtilsTest.java │ │ │ └── XAUtilsTest.java │ │ └── xa/ │ │ ├── AbstractConnectionProxyXATest.java │ │ ├── AbstractDataSourceProxyXATest.java │ │ ├── ConnectionProxyXATest.java │ │ ├── DataSourceProxyXANativeTest.java │ │ ├── DataSourceProxyXATest.java │ │ ├── ExecuteTemplateXATest.java │ │ ├── PreparedStatementProxyXATest.java │ │ ├── ResourceManagerXATest.java │ │ ├── StatementProxyXATest.java │ │ ├── XABranchXidTest.java │ │ └── XAXidBuilderTest.java │ └── resources/ │ ├── META-INF/ │ │ └── services/ │ │ ├── org.apache.seata.common.json.JsonSerializer │ │ ├── org.apache.seata.sqlparser.EscapeHandler │ │ ├── org.apache.seata.sqlparser.SQLRecognizerFactory │ │ ├── org.apache.seata.sqlparser.druid.SQLOperateRecognizerHolder │ │ └── org.apache.seata.sqlparser.util.DbTypeParser │ ├── file.conf │ └── registry.conf ├── saga/ │ ├── pom.xml │ ├── seata-saga-annotation/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── saga/ │ │ │ │ └── rm/ │ │ │ │ ├── RMHandlerSagaAnnotation.java │ │ │ │ ├── SagaAnnotationResource.java │ │ │ │ ├── SagaAnnotationResourceManager.java │ │ │ │ ├── api/ │ │ │ │ │ ├── CompensationBusinessAction.java │ │ │ │ │ └── SagaTransactional.java │ │ │ │ ├── interceptor/ │ │ │ │ │ ├── SagaAnnotationActionInterceptorHandler.java │ │ │ │ │ └── parser/ │ │ │ │ │ └── SagaAnnotationActionInterceptorParser.java │ │ │ │ └── remoting/ │ │ │ │ └── parser/ │ │ │ │ └── SagaTransactionalRemotingParser.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── org.apache.seata.core.model.ResourceManager │ │ │ ├── org.apache.seata.integration.tx.api.interceptor.parser.InterfaceParser │ │ │ ├── org.apache.seata.integration.tx.api.remoting.RemotingParser │ │ │ └── org.apache.seata.rm.AbstractRMHandler │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── saga/ │ │ └── rm/ │ │ ├── api/ │ │ │ └── SagaTransactionalTest.java │ │ └── remoting/ │ │ └── parser/ │ │ └── SagaTransactionalRemotingParserTest.java │ ├── seata-saga-engine/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── saga/ │ │ │ │ └── engine/ │ │ │ │ ├── AsyncCallback.java │ │ │ │ ├── StateMachineConfig.java │ │ │ │ ├── StateMachineEngine.java │ │ │ │ ├── config/ │ │ │ │ │ └── AbstractStateMachineConfig.java │ │ │ │ ├── exception/ │ │ │ │ │ ├── EngineExecutionException.java │ │ │ │ │ └── ForwardInvalidException.java │ │ │ │ ├── expression/ │ │ │ │ │ ├── ELExpression.java │ │ │ │ │ ├── Expression.java │ │ │ │ │ ├── ExpressionFactory.java │ │ │ │ │ ├── ExpressionFactoryManager.java │ │ │ │ │ ├── ExpressionResolver.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ ├── ExceptionMatchExpression.java │ │ │ │ │ │ └── ExceptionMatchExpressionFactory.java │ │ │ │ │ ├── impl/ │ │ │ │ │ │ └── DefaultExpressionResolver.java │ │ │ │ │ └── seq/ │ │ │ │ │ ├── SequenceExpression.java │ │ │ │ │ └── SequenceExpressionFactory.java │ │ │ │ ├── impl/ │ │ │ │ │ └── ProcessCtrlStateMachineEngine.java │ │ │ │ ├── invoker/ │ │ │ │ │ ├── ServiceInvoker.java │ │ │ │ │ └── ServiceInvokerManager.java │ │ │ │ ├── pcext/ │ │ │ │ │ ├── InterceptableStateHandler.java │ │ │ │ │ ├── InterceptableStateRouter.java │ │ │ │ │ ├── StateHandler.java │ │ │ │ │ ├── StateHandlerInterceptor.java │ │ │ │ │ ├── StateInstruction.java │ │ │ │ │ ├── StateMachineProcessHandler.java │ │ │ │ │ ├── StateMachineProcessRouter.java │ │ │ │ │ ├── StateRouter.java │ │ │ │ │ ├── StateRouterInterceptor.java │ │ │ │ │ ├── handlers/ │ │ │ │ │ │ ├── ChoiceStateHandler.java │ │ │ │ │ │ ├── CompensationTriggerStateHandler.java │ │ │ │ │ │ ├── FailEndStateHandler.java │ │ │ │ │ │ ├── LoopStartStateHandler.java │ │ │ │ │ │ ├── ScriptTaskStateHandler.java │ │ │ │ │ │ ├── ServiceTaskStateHandler.java │ │ │ │ │ │ ├── SubStateMachineHandler.java │ │ │ │ │ │ └── SucceedEndStateHandler.java │ │ │ │ │ ├── interceptors/ │ │ │ │ │ │ ├── EndStateRouterInterceptor.java │ │ │ │ │ │ ├── InSagaBranchHandlerInterceptor.java │ │ │ │ │ │ ├── LoopTaskHandlerInterceptor.java │ │ │ │ │ │ ├── ScriptTaskHandlerInterceptor.java │ │ │ │ │ │ └── ServiceTaskHandlerInterceptor.java │ │ │ │ │ ├── routers/ │ │ │ │ │ │ ├── EndStateRouter.java │ │ │ │ │ │ └── TaskStateRouter.java │ │ │ │ │ └── utils/ │ │ │ │ │ ├── CompensationHolder.java │ │ │ │ │ ├── EngineUtils.java │ │ │ │ │ ├── LoopContextHolder.java │ │ │ │ │ ├── LoopTaskUtils.java │ │ │ │ │ └── ParameterUtils.java │ │ │ │ ├── repo/ │ │ │ │ │ ├── StateLogRepository.java │ │ │ │ │ ├── StateMachineRepository.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── StateLogRepositoryImpl.java │ │ │ │ │ └── StateMachineRepositoryImpl.java │ │ │ │ ├── sequence/ │ │ │ │ │ ├── SeqGenerator.java │ │ │ │ │ └── UUIDSeqGenerator.java │ │ │ │ ├── serializer/ │ │ │ │ │ ├── Serializer.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── ExceptionSerializer.java │ │ │ │ │ └── ParamsSerializer.java │ │ │ │ ├── strategy/ │ │ │ │ │ ├── StatusDecisionStrategy.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── DefaultStatusDecisionStrategy.java │ │ │ │ └── utils/ │ │ │ │ ├── ExceptionUtils.java │ │ │ │ └── ProcessContextBuilder.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── org.apache.seata.saga.engine.pcext.StateHandlerInterceptor │ │ │ └── org.apache.seata.saga.engine.pcext.StateRouterInterceptor │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── saga/ │ │ └── engine/ │ │ ├── exception/ │ │ │ ├── EngineExecutionExceptionTest.java │ │ │ └── ForwardInvalidExceptionTest.java │ │ ├── expression/ │ │ │ └── exception/ │ │ │ └── ExceptionMatchExpressionTest.java │ │ ├── impl/ │ │ │ └── ProcessCtrlStateMachineEngineTest.java │ │ ├── pcext/ │ │ │ ├── handlers/ │ │ │ │ ├── LoopStartStateHandlerTest.java │ │ │ │ └── SubStateMachineHandlerTest.java │ │ │ ├── interceptors/ │ │ │ │ └── LoopTaskHandlerInterceptorTest.java │ │ │ └── utils/ │ │ │ ├── LoopContextHolderTest.java │ │ │ └── LoopTaskUtilsTest.java │ │ ├── repo/ │ │ │ └── impl/ │ │ │ └── StateLogRepositoryImplTest.java │ │ └── utils/ │ │ └── ExceptionUtilsTest.java │ ├── seata-saga-engine-store/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── saga/ │ │ └── engine/ │ │ └── store/ │ │ ├── StateLangStore.java │ │ ├── StateLogStore.java │ │ └── db/ │ │ ├── AbstractStore.java │ │ ├── DbStateLangStore.java │ │ ├── StateLangStoreSqls.java │ │ └── StateLogStoreSqls.java │ ├── seata-saga-processctrl/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── saga/ │ │ │ └── proctrl/ │ │ │ ├── HierarchicalProcessContext.java │ │ │ ├── Instruction.java │ │ │ ├── ProcessContext.java │ │ │ ├── ProcessController.java │ │ │ ├── ProcessRouter.java │ │ │ ├── ProcessType.java │ │ │ ├── eventing/ │ │ │ │ ├── EventBus.java │ │ │ │ ├── EventConsumer.java │ │ │ │ ├── EventPublisher.java │ │ │ │ └── impl/ │ │ │ │ ├── AbstractEventBus.java │ │ │ │ ├── AsyncEventBus.java │ │ │ │ ├── DirectEventBus.java │ │ │ │ ├── ProcessCtrlEventConsumer.java │ │ │ │ └── ProcessCtrlEventPublisher.java │ │ │ ├── handler/ │ │ │ │ ├── DefaultRouterHandler.java │ │ │ │ ├── ProcessHandler.java │ │ │ │ └── RouterHandler.java │ │ │ ├── impl/ │ │ │ │ ├── ProcessContextImpl.java │ │ │ │ └── ProcessControllerImpl.java │ │ │ └── process/ │ │ │ ├── BusinessProcessor.java │ │ │ └── impl/ │ │ │ └── CustomizeBusinessProcessor.java │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── saga/ │ │ └── proctrl/ │ │ ├── ProcessControllerTests.java │ │ ├── handler/ │ │ │ └── DefaultRouterHandlerTest.java │ │ ├── impl/ │ │ │ └── ProcessContextImplTest.java │ │ ├── mock/ │ │ │ ├── MockInstruction.java │ │ │ ├── MockProcessHandler.java │ │ │ └── MockProcessRouter.java │ │ └── process/ │ │ └── impl/ │ │ └── CustomizeBusinessProcessorTest.java │ ├── seata-saga-rm/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── saga/ │ │ │ └── rm/ │ │ │ ├── RMHandlerSaga.java │ │ │ ├── SagaResource.java │ │ │ ├── SagaResourceManager.java │ │ │ └── StateMachineEngineHolder.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ ├── org.apache.seata.core.model.ResourceManager │ │ └── org.apache.seata.rm.AbstractRMHandler │ ├── seata-saga-spring/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── saga/ │ │ │ └── engine/ │ │ │ ├── config/ │ │ │ │ └── DbStateMachineConfig.java │ │ │ ├── expression/ │ │ │ │ └── spel/ │ │ │ │ ├── SpringELExpression.java │ │ │ │ └── SpringELExpressionFactory.java │ │ │ ├── impl/ │ │ │ │ └── DefaultStateMachineConfig.java │ │ │ ├── invoker/ │ │ │ │ └── impl/ │ │ │ │ └── SpringBeanServiceInvoker.java │ │ │ ├── store/ │ │ │ │ └── db/ │ │ │ │ └── DbAndReportTcStateLogStore.java │ │ │ ├── tm/ │ │ │ │ ├── DefaultSagaTransactionalTemplate.java │ │ │ │ └── SagaTransactionalTemplate.java │ │ │ └── utils/ │ │ │ └── ResourceUtil.java │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── saga/ │ │ │ ├── engine/ │ │ │ │ ├── config/ │ │ │ │ │ ├── DbStateMachineConfigTest.java │ │ │ │ │ └── MockDataSource.java │ │ │ │ ├── expression/ │ │ │ │ │ └── spel/ │ │ │ │ │ ├── SpringELExpressionFactoryTest.java │ │ │ │ │ ├── SpringELExpressionObject.java │ │ │ │ │ └── SpringELExpressionTest.java │ │ │ │ ├── invoker/ │ │ │ │ │ └── impl/ │ │ │ │ │ ├── MockService.java │ │ │ │ │ └── SpringBeanServiceInvokerTest.java │ │ │ │ ├── store/ │ │ │ │ │ └── db/ │ │ │ │ │ ├── DbAndReportTcStateLogStoreTest.java │ │ │ │ │ └── MockSagaTransactionTemplate.java │ │ │ │ └── tm/ │ │ │ │ ├── DefaultSagaTransactionalTemplateTest.java │ │ │ │ ├── MockGlobalTransaction.java │ │ │ │ └── MockTransactionHook.java │ │ │ └── statelang/ │ │ │ └── parser/ │ │ │ └── utils/ │ │ │ └── ResourceUtilTests.java │ │ └── resources/ │ │ ├── file.conf │ │ ├── registry.conf │ │ └── statelang/ │ │ └── simple_statemachine.json │ ├── seata-saga-statelang/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── saga/ │ │ │ │ └── statelang/ │ │ │ │ ├── domain/ │ │ │ │ │ ├── ChoiceState.java │ │ │ │ │ ├── CompensateSubStateMachineState.java │ │ │ │ │ ├── CompensationTriggerState.java │ │ │ │ │ ├── DomainConstants.java │ │ │ │ │ ├── EndState.java │ │ │ │ │ ├── ExecutionStatus.java │ │ │ │ │ ├── FailEndState.java │ │ │ │ │ ├── LoopStartState.java │ │ │ │ │ ├── RecoverStrategy.java │ │ │ │ │ ├── ScriptTaskState.java │ │ │ │ │ ├── ServiceTaskState.java │ │ │ │ │ ├── State.java │ │ │ │ │ ├── StateInstance.java │ │ │ │ │ ├── StateMachine.java │ │ │ │ │ ├── StateMachineInstance.java │ │ │ │ │ ├── StateType.java │ │ │ │ │ ├── SubStateMachine.java │ │ │ │ │ ├── SucceedEndState.java │ │ │ │ │ ├── TaskState.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── AbstractTaskState.java │ │ │ │ │ ├── BaseState.java │ │ │ │ │ ├── ChoiceStateImpl.java │ │ │ │ │ ├── CompensateSubStateMachineStateImpl.java │ │ │ │ │ ├── CompensationTriggerStateImpl.java │ │ │ │ │ ├── FailEndStateImpl.java │ │ │ │ │ ├── LoopStartStateImpl.java │ │ │ │ │ ├── ScriptTaskStateImpl.java │ │ │ │ │ ├── ServiceTaskStateImpl.java │ │ │ │ │ ├── StateInstanceImpl.java │ │ │ │ │ ├── StateMachineImpl.java │ │ │ │ │ ├── StateMachineInstanceImpl.java │ │ │ │ │ ├── SubStateMachineImpl.java │ │ │ │ │ └── SucceedEndStateImpl.java │ │ │ │ ├── parser/ │ │ │ │ │ ├── JsonParser.java │ │ │ │ │ ├── JsonParserFactory.java │ │ │ │ │ ├── StateMachineParser.java │ │ │ │ │ ├── StateMachineParserFactory.java │ │ │ │ │ ├── StateParser.java │ │ │ │ │ ├── StateParserFactory.java │ │ │ │ │ ├── impl/ │ │ │ │ │ │ ├── AbstractTaskStateParser.java │ │ │ │ │ │ ├── BaseStateParser.java │ │ │ │ │ │ ├── ChoiceStateParser.java │ │ │ │ │ │ ├── CompensateSubStateMachineStateParser.java │ │ │ │ │ │ ├── CompensationTriggerStateParser.java │ │ │ │ │ │ ├── FailEndStateParser.java │ │ │ │ │ │ ├── FastjsonParser.java │ │ │ │ │ │ ├── JacksonJsonParser.java │ │ │ │ │ │ ├── ScriptTaskStateParser.java │ │ │ │ │ │ ├── ServiceTaskStateParser.java │ │ │ │ │ │ ├── StateMachineParserImpl.java │ │ │ │ │ │ ├── SubStateMachineParser.java │ │ │ │ │ │ └── SucceedEndStateParser.java │ │ │ │ │ └── utils/ │ │ │ │ │ ├── DesignerJsonTransformer.java │ │ │ │ │ ├── IOUtils.java │ │ │ │ │ └── StateMachineUtils.java │ │ │ │ └── validator/ │ │ │ │ ├── Rule.java │ │ │ │ ├── RuleFactory.java │ │ │ │ ├── StateMachineValidator.java │ │ │ │ ├── ValidationException.java │ │ │ │ └── impl/ │ │ │ │ ├── AbstractRule.java │ │ │ │ ├── FiniteTerminationRule.java │ │ │ │ ├── NoRecursiveSubStateMachineRule.java │ │ │ │ └── StateNameExistsRule.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── org.apache.seata.common.json.JsonSerializer │ │ │ ├── org.apache.seata.saga.statelang.parser.JsonParser │ │ │ └── org.apache.seata.saga.statelang.validator.Rule │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── saga/ │ │ │ └── statelang/ │ │ │ ├── domain/ │ │ │ │ ├── ExecutionStatusTest.java │ │ │ │ ├── RecoverStrategyTest.java │ │ │ │ ├── StateTypeTest.java │ │ │ │ └── impl/ │ │ │ │ ├── AbstractTaskStateTest.java │ │ │ │ ├── BaseStateTest.java │ │ │ │ ├── ChoiceStateImplTest.java │ │ │ │ ├── CompensateSubStateMachineStateImplTest.java │ │ │ │ ├── CompensationTriggerStateImplTest.java │ │ │ │ ├── FailEndStateImplTest.java │ │ │ │ ├── LoopStartStateImplTest.java │ │ │ │ ├── ScriptTaskStateImplTest.java │ │ │ │ ├── ServiceTaskStateImplTest.java │ │ │ │ ├── StateInstanceImplTest.java │ │ │ │ ├── StateMachineImplTest.java │ │ │ │ ├── StateMachineInstanceImplTest.java │ │ │ │ ├── SubStateMachineImplTest.java │ │ │ │ └── SucceedEndStateImplTest.java │ │ │ ├── parser/ │ │ │ │ ├── StateParserFactoryTest.java │ │ │ │ ├── StateParserTests.java │ │ │ │ └── utils/ │ │ │ │ ├── DesignerJsonTransformerTest.java │ │ │ │ └── IOUtilsTest.java │ │ │ └── validator/ │ │ │ ├── RuleFactoryTest.java │ │ │ ├── ValidationExceptionTest.java │ │ │ └── impl/ │ │ │ ├── FiniteTerminationRuleTest.java │ │ │ ├── NoRecursiveSubStateMachineRuleTest.java │ │ │ └── StateNameExistsRuleTest.java │ │ └── resources/ │ │ ├── logback-test.xml │ │ └── statelang/ │ │ ├── simple_statemachine.json │ │ ├── simple_statemachine_with_layout.json │ │ ├── simple_statemachine_with_multiple_infinite_loop.json │ │ ├── simple_statemachine_with_non_existed_name.json │ │ ├── simple_statemachine_with_recursive_sub_machine.json │ │ └── simple_statemachine_with_single_infinite_loop.json │ └── seata-saga-statemachine-designer/ │ ├── .babelrc │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── LICENSE │ ├── README-zh.md │ ├── README.md │ ├── package.json │ ├── public/ │ │ └── test.json │ ├── src/ │ │ ├── Editor.js │ │ ├── control/ │ │ │ ├── ExportControl.js │ │ │ ├── ImportControl.js │ │ │ └── index.js │ │ ├── index.css │ │ ├── index.html │ │ ├── index.js │ │ ├── layout/ │ │ │ ├── Layouter.js │ │ │ ├── behavior/ │ │ │ │ ├── AttachCatchBehavior.js │ │ │ │ ├── LayoutConnectionBehavior.js │ │ │ │ ├── LayoutUpdateBehavior.js │ │ │ │ ├── ReplaceConnectionBehavior.js │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── modeling/ │ │ │ ├── ElementFactory.js │ │ │ ├── Modeling.js │ │ │ ├── SagaExporter.js │ │ │ ├── SagaFactory.js │ │ │ ├── SagaImporter.js │ │ │ ├── SagaRules.js │ │ │ └── index.js │ │ ├── properties-panel/ │ │ │ ├── PanelHeaderProvider.js │ │ │ ├── PanelPlaceholderProvider.js │ │ │ ├── PropertiesPanel.js │ │ │ ├── PropertiesPanelContext.js │ │ │ ├── PropertiesPanelRenderer.js │ │ │ ├── index.js │ │ │ └── provider/ │ │ │ ├── PropertiesProvider.js │ │ │ ├── index.js │ │ │ └── properties/ │ │ │ ├── BaseText.js │ │ │ ├── BaseTextArea.js │ │ │ ├── CommentProps.js │ │ │ ├── NameProps.js │ │ │ ├── StateProps.js │ │ │ ├── StyleProps.js │ │ │ └── VersionProps.js │ │ ├── providers/ │ │ │ ├── ContextPadProvider.js │ │ │ ├── PaletteProvider.js │ │ │ └── index.js │ │ ├── render/ │ │ │ ├── PathMap.js │ │ │ ├── Renderer.js │ │ │ ├── TextRenderer.js │ │ │ └── index.js │ │ ├── spec/ │ │ │ ├── BaseSpec.js │ │ │ ├── Catch.js │ │ │ ├── Choice.js │ │ │ ├── ChoiceEntry.js │ │ │ ├── Compensation.js │ │ │ ├── CompensationTrigger.js │ │ │ ├── ExceptionMatch.js │ │ │ ├── Fail.js │ │ │ ├── ScriptTask.js │ │ │ ├── ServiceTask.js │ │ │ ├── StartState.js │ │ │ ├── State.js │ │ │ ├── StateMachine.js │ │ │ ├── SubStateMachine.js │ │ │ ├── Succeed.js │ │ │ ├── TaskState.js │ │ │ ├── Transition.js │ │ │ └── style/ │ │ │ ├── Edge.js │ │ │ ├── EdgeStyle.js │ │ │ ├── Node.js │ │ │ └── NodeStyle.js │ │ └── utils/ │ │ └── index.js │ └── webpack.config.js ├── script/ │ ├── client/ │ │ ├── at/ │ │ │ └── db/ │ │ │ ├── dm.sql │ │ │ ├── kingbase.sql │ │ │ ├── mysql.sql │ │ │ ├── oceanbase.sql │ │ │ ├── oracle.sql │ │ │ ├── oscar.sql │ │ │ ├── postgresql.sql │ │ │ └── sqlserver.sql │ │ ├── conf/ │ │ │ ├── file.conf │ │ │ └── registry.conf │ │ ├── saga/ │ │ │ └── db/ │ │ │ ├── db2.sql │ │ │ ├── h2.sql │ │ │ ├── mysql.sql │ │ │ ├── oceanbase.sql │ │ │ ├── oracle.sql │ │ │ └── postgresql.sql │ │ ├── spring/ │ │ │ ├── application.properties │ │ │ └── application.yml │ │ └── tcc/ │ │ └── db/ │ │ ├── mysql.sql │ │ ├── oceanbase.sql │ │ ├── oracle.sql │ │ └── postgresql.sql │ ├── config-center/ │ │ ├── README.md │ │ ├── apollo/ │ │ │ ├── apollo-config-interactive.sh │ │ │ └── apollo-config.sh │ │ ├── config.txt │ │ ├── consul/ │ │ │ ├── consul-config-interactive.sh │ │ │ └── consul-config.sh │ │ ├── etcd3/ │ │ │ ├── etcd3-config-interactive.sh │ │ │ └── etcd3-config.sh │ │ ├── nacos/ │ │ │ ├── nacos-config-interactive.py │ │ │ ├── nacos-config-interactive.sh │ │ │ ├── nacos-config.py │ │ │ └── nacos-config.sh │ │ └── zk/ │ │ ├── zk-config-interactive.sh │ │ └── zk-config.sh │ ├── logstash/ │ │ └── config/ │ │ ├── logstash-kafka.conf │ │ └── logstash-logback.conf │ └── server/ │ ├── db/ │ │ ├── dm.sql │ │ ├── kingbase.sql │ │ ├── mysql.sql │ │ ├── oracle.sql │ │ ├── oscar.sql │ │ ├── postgresql.sql │ │ └── sqlserver.sql │ ├── docker-compose/ │ │ └── docker-compose.yaml │ ├── grafana/ │ │ └── panel.json │ ├── helm/ │ │ └── seata-server/ │ │ ├── .helmignore │ │ ├── Chart.yaml │ │ ├── templates/ │ │ │ ├── NOTES.txt │ │ │ ├── _helpers.tpl │ │ │ ├── deployment.yaml │ │ │ ├── service.yaml │ │ │ └── tests/ │ │ │ └── test-connection.yaml │ │ └── values.yaml │ └── kubernetes/ │ └── seata-server.yaml ├── seata-spring-autoconfigure/ │ ├── pom.xml │ ├── seata-spring-autoconfigure-client/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── spring/ │ │ │ │ └── boot/ │ │ │ │ └── autoconfigure/ │ │ │ │ ├── SeataClientEnvironmentPostProcessor.java │ │ │ │ ├── SeataSpringFenceAutoConfiguration.java │ │ │ │ └── properties/ │ │ │ │ ├── SagaAsyncThreadPoolProperties.java │ │ │ │ ├── SeataProperties.java │ │ │ │ ├── SeataTccProperties.java │ │ │ │ ├── SpringCloudAlibabaConfiguration.java │ │ │ │ └── client/ │ │ │ │ ├── LoadBalanceProperties.java │ │ │ │ ├── LockProperties.java │ │ │ │ ├── RmProperties.java │ │ │ │ ├── ServiceProperties.java │ │ │ │ ├── TmProperties.java │ │ │ │ ├── UndoCompressProperties.java │ │ │ │ └── UndoProperties.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ ├── additional-spring-configuration-metadata.json │ │ │ ├── spring/ │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── spring.factories │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── spring/ │ │ └── boot/ │ │ └── autoconfigure/ │ │ ├── ClientPropertiesTest.java │ │ ├── SeataClientEnvironmentPostProcessorTest.java │ │ └── properties/ │ │ ├── SagaAsyncThreadPoolPropertiesTest.java │ │ ├── SeataPropertiesTest.java │ │ ├── SpringCloudAlibabaConfigurationTest.java │ │ └── client/ │ │ ├── LoadBalancePropertiesTest.java │ │ ├── LockPropertiesTest.java │ │ ├── RmPropertiesTest.java │ │ ├── ServicePropertiesTest.java │ │ ├── TmPropertiesTest.java │ │ ├── UndoCompressPropertiesTest.java │ │ └── UndoPropertiesTest.java │ ├── seata-spring-autoconfigure-core/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── spring/ │ │ │ │ └── boot/ │ │ │ │ └── autoconfigure/ │ │ │ │ ├── SeataCoreAutoConfiguration.java │ │ │ │ ├── SeataCoreEnvironmentPostProcessor.java │ │ │ │ ├── StarterConstants.java │ │ │ │ ├── loader/ │ │ │ │ │ └── SeataPropertiesLoader.java │ │ │ │ ├── properties/ │ │ │ │ │ ├── LogProperties.java │ │ │ │ │ ├── ShutdownProperties.java │ │ │ │ │ ├── ThreadFactoryProperties.java │ │ │ │ │ ├── TransportProperties.java │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── ConfigApolloProperties.java │ │ │ │ │ │ ├── ConfigConsulProperties.java │ │ │ │ │ │ ├── ConfigCustomProperties.java │ │ │ │ │ │ ├── ConfigEtcd3Properties.java │ │ │ │ │ │ ├── ConfigFileProperties.java │ │ │ │ │ │ ├── ConfigNacosProperties.java │ │ │ │ │ │ ├── ConfigProperties.java │ │ │ │ │ │ └── ConfigZooKeeperProperties.java │ │ │ │ │ └── registry/ │ │ │ │ │ ├── RegistryConsulProperties.java │ │ │ │ │ ├── RegistryCustomProperties.java │ │ │ │ │ ├── RegistryEtcd3Properties.java │ │ │ │ │ ├── RegistryEurekaProperties.java │ │ │ │ │ ├── RegistryMetadataProperties.java │ │ │ │ │ ├── RegistryNacosProperties.java │ │ │ │ │ ├── RegistryNamingServerProperties.java │ │ │ │ │ ├── RegistryProperties.java │ │ │ │ │ ├── RegistryRaftProperties.java │ │ │ │ │ ├── RegistryRedisProperties.java │ │ │ │ │ ├── RegistrySofaProperties.java │ │ │ │ │ └── RegistryZooKeeperProperties.java │ │ │ │ └── provider/ │ │ │ │ ├── SpringApplicationContextProvider.java │ │ │ │ └── SpringBootConfigurationProvider.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ ├── additional-spring-configuration-metadata.json │ │ │ ├── services/ │ │ │ │ └── org.apache.seata.config.ExtConfigurationProvider │ │ │ ├── spring/ │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── spring.factories │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── spring/ │ │ │ └── boot/ │ │ │ └── autoconfigure/ │ │ │ ├── BasePropertiesTest.java │ │ │ ├── CorePropertiesTest.java │ │ │ ├── SeataCoreAutoConfigurationTest.java │ │ │ └── properties/ │ │ │ ├── LogPropertiesTest.java │ │ │ ├── ShutdownPropertiesTest.java │ │ │ ├── ThreadFactoryPropertiesTest.java │ │ │ ├── TransportPropertiesTest.java │ │ │ ├── config/ │ │ │ │ ├── ConfigApolloPropertiesTest.java │ │ │ │ ├── ConfigConsulPropertiesTest.java │ │ │ │ ├── ConfigCustomPropertiesTest.java │ │ │ │ ├── ConfigEtcd3PropertiesTest.java │ │ │ │ ├── ConfigFilePropertiesTest.java │ │ │ │ ├── ConfigNacosPropertiesTest.java │ │ │ │ ├── ConfigPropertiesTest.java │ │ │ │ └── ConfigZooKeeperPropertiesTest.java │ │ │ └── registry/ │ │ │ ├── RegistryConsulPropertiesTest.java │ │ │ ├── RegistryCustomPropertiesTest.java │ │ │ ├── RegistryEtcd3PropertiesTest.java │ │ │ ├── RegistryEurekaPropertiesTest.java │ │ │ ├── RegistryMetadataPropertiesTest.java │ │ │ ├── RegistryNacosPropertiesTest.java │ │ │ ├── RegistryNamingServerPropertiesTest.java │ │ │ ├── RegistryPropertiesTest.java │ │ │ ├── RegistryRaftPropertiesTest.java │ │ │ ├── RegistryRedisPropertiesTest.java │ │ │ ├── RegistrySofaPropertiesTest.java │ │ │ └── RegistryZooKeeperPropertiesTest.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring.factories │ │ ├── application-test.properties │ │ ├── file.conf │ │ └── registry.conf │ └── seata-spring-autoconfigure-server/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── spring/ │ │ │ └── boot/ │ │ │ └── autoconfigure/ │ │ │ ├── SeataServerEnvironmentPostProcessor.java │ │ │ ├── http/ │ │ │ │ └── RestControllerBeanPostProcessor.java │ │ │ └── properties/ │ │ │ └── server/ │ │ │ ├── MetricsProperties.java │ │ │ ├── ServerProperties.java │ │ │ ├── ServerRateLimitProperties.java │ │ │ ├── ServerRecoveryProperties.java │ │ │ ├── ServerUndoProperties.java │ │ │ ├── filter/ │ │ │ │ └── ServerHttpFilterXssProperties.java │ │ │ ├── raft/ │ │ │ │ ├── ServerRaftProperties.java │ │ │ │ ├── ServerRaftSSLClientProperties.java │ │ │ │ ├── ServerRaftSSLProperties.java │ │ │ │ └── ServerRaftSSLServerProperties.java │ │ │ ├── session/ │ │ │ │ └── SessionProperties.java │ │ │ └── store/ │ │ │ ├── DbcpProperties.java │ │ │ ├── DruidProperties.java │ │ │ ├── HikariProperties.java │ │ │ ├── StoreDBProperties.java │ │ │ ├── StoreFileProperties.java │ │ │ ├── StoreProperties.java │ │ │ └── StoreRedisProperties.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── spring.factories │ └── test/ │ └── java/ │ └── org/ │ └── apache/ │ └── seata/ │ └── spring/ │ └── boot/ │ └── autoconfigure/ │ ├── SeataServerEnvironmentPostProcessorTest.java │ ├── ServerPropertiesTest.java │ ├── http/ │ │ └── RestControllerBeanPostProcessorTest.java │ └── properties/ │ └── server/ │ ├── MetricsPropertiesTest.java │ ├── ServerPropertiesTest.java │ ├── ServerRaftPropertiesTest.java │ ├── ServerRecoveryPropertiesTest.java │ ├── ServerUndoPropertiesTest.java │ ├── filter/ │ │ └── ServerHttpFilterXssPropertiesTest.java │ ├── session/ │ │ └── SessionPropertiesTest.java │ └── store/ │ ├── StoreDBPropertiesTest.java │ ├── StoreFilePropertiesTest.java │ ├── StorePropertiesTest.java │ └── StoreRedisPropertiesTest.java ├── seata-spring-boot-starter/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── spring/ │ │ │ └── boot/ │ │ │ └── autoconfigure/ │ │ │ ├── SeataAutoConfiguration.java │ │ │ ├── SeataDataSourceAutoConfiguration.java │ │ │ ├── SeataHttpAutoConfiguration.java │ │ │ └── SeataSagaAutoConfiguration.java │ │ └── resources/ │ │ └── META-INF/ │ │ ├── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ ├── spring-configuration-metadata.json │ │ └── spring.factories │ └── test/ │ └── java/ │ └── org/ │ └── apache/ │ └── seata/ │ └── spring/ │ └── boot/ │ └── autoconfigure/ │ ├── PropertyBeanPostProcessorTest.java │ ├── RedisAutoInjectionTypeConvertTest.java │ ├── SeataAutoConfigurationTest.java │ ├── SeataDataSourceAutoConfigurationTest.java │ ├── SeataHttpAutoConfigurationTest.java │ └── SeataSagaAutoConfigurationTest.java ├── serializer/ │ ├── pom.xml │ ├── seata-serializer-all/ │ │ └── pom.xml │ ├── seata-serializer-fastjson2/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org.apache.seata.serializer.fastjson2/ │ │ │ │ ├── Fastjson2Serializer.java │ │ │ │ └── Fastjson2SerializerFactory.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.core.serializer.Serializer │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── serializer/ │ │ └── fastjson2/ │ │ └── Fastjson2SerializerTest.java │ ├── seata-serializer-fory/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── serializer/ │ │ │ │ └── fory/ │ │ │ │ ├── ForySerializer.java │ │ │ │ └── ForySerializerFactory.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.core.serializer.Serializer │ │ └── test/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── serializer/ │ │ │ └── fory/ │ │ │ └── ForySerializerTest.java │ │ └── resources/ │ │ ├── file.conf │ │ └── registry.conf │ ├── seata-serializer-hessian/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── serializer/ │ │ │ │ └── hessian/ │ │ │ │ ├── HessianSerializer.java │ │ │ │ └── HessianSerializerFactory.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.core.serializer.Serializer │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── serializer/ │ │ └── hessian/ │ │ └── HessianSerializerTest.java │ ├── seata-serializer-kryo/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── serializer/ │ │ │ │ └── kryo/ │ │ │ │ ├── KryoInnerSerializer.java │ │ │ │ ├── KryoSerializer.java │ │ │ │ └── KryoSerializerFactory.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── org.apache.seata.core.serializer.Serializer │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── serializer/ │ │ └── kryo/ │ │ └── KryoSerializerTest.java │ ├── seata-serializer-protobuf/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── serializer/ │ │ │ │ └── protobuf/ │ │ │ │ ├── GrpcSerializer.java │ │ │ │ ├── ProtobufHelper.java │ │ │ │ ├── ProtobufInnerSerializer.java │ │ │ │ ├── ProtobufSerializer.java │ │ │ │ ├── convertor/ │ │ │ │ │ ├── BatchResultMessageConvertor.java │ │ │ │ │ ├── BranchCommitRequestConvertor.java │ │ │ │ │ ├── BranchCommitResponseConvertor.java │ │ │ │ │ ├── BranchRegisterRequestConvertor.java │ │ │ │ │ ├── BranchRegisterResponseConvertor.java │ │ │ │ │ ├── BranchReportRequestConvertor.java │ │ │ │ │ ├── BranchReportResponseConvertor.java │ │ │ │ │ ├── BranchRollbackRequestConvertor.java │ │ │ │ │ ├── BranchRollbackResponseConvertor.java │ │ │ │ │ ├── GlobalBeginRequestConvertor.java │ │ │ │ │ ├── GlobalBeginResponseConvertor.java │ │ │ │ │ ├── GlobalCommitRequestConvertor.java │ │ │ │ │ ├── GlobalCommitResponseConvertor.java │ │ │ │ │ ├── GlobalLockQueryRequestConvertor.java │ │ │ │ │ ├── GlobalLockQueryResponseConvertor.java │ │ │ │ │ ├── GlobalReportRequestConvertor.java │ │ │ │ │ ├── GlobalReportResponseConvertor.java │ │ │ │ │ ├── GlobalRollbackRequestConvertor.java │ │ │ │ │ ├── GlobalRollbackResponseConvertor.java │ │ │ │ │ ├── GlobalStatusRequestConvertor.java │ │ │ │ │ ├── GlobalStatusResponseConvertor.java │ │ │ │ │ ├── HeartbeatMessageConvertor.java │ │ │ │ │ ├── MergeResultMessageConvertor.java │ │ │ │ │ ├── MergedWarpMessageConvertor.java │ │ │ │ │ ├── PbConvertor.java │ │ │ │ │ ├── RegisterRMRequestConvertor.java │ │ │ │ │ ├── RegisterRMResponseConvertor.java │ │ │ │ │ ├── RegisterTMRequestConvertor.java │ │ │ │ │ ├── RegisterTMResponseConvertor.java │ │ │ │ │ └── UndoLogDeleteRequestConvertor.java │ │ │ │ └── manager/ │ │ │ │ └── ProtobufConvertManager.java │ │ │ └── resources/ │ │ │ ├── META-INF/ │ │ │ │ └── services/ │ │ │ │ └── org.apache.seata.core.serializer.Serializer │ │ │ └── protobuf/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── protocol/ │ │ │ └── transcation/ │ │ │ ├── abstractBranchEndRequest.proto │ │ │ ├── abstractBranchEndResponse.proto │ │ │ ├── abstractGlobalEndRequest.proto │ │ │ ├── abstractGlobalEndResponse.proto │ │ │ ├── abstractIdentifyRequest.proto │ │ │ ├── abstractIdentifyResponse.proto │ │ │ ├── abstractMessage.proto │ │ │ ├── abstractResultMessage.proto │ │ │ ├── abstractTransactionRequest.proto │ │ │ ├── abstractTransactionResponse.proto │ │ │ ├── batchResultMessage.proto │ │ │ ├── branchCommitRequest.proto │ │ │ ├── branchCommitResponse.proto │ │ │ ├── branchRegisterRequest.proto │ │ │ ├── branchRegisterResponse.proto │ │ │ ├── branchReportRequest.proto │ │ │ ├── branchReportResponse.proto │ │ │ ├── branchRollbackRequest.proto │ │ │ ├── branchRollbackResponse.proto │ │ │ ├── branchStatus.proto │ │ │ ├── branchType.proto │ │ │ ├── globalBeginRequest.proto │ │ │ ├── globalBeginResponse.proto │ │ │ ├── globalCommitRequest.proto │ │ │ ├── globalCommitResponse.proto │ │ │ ├── globalLockQueryRequest.proto │ │ │ ├── globalLockQueryResponse.proto │ │ │ ├── globalReportRequest.proto │ │ │ ├── globalReportResponse.proto │ │ │ ├── globalRollbackRequest.proto │ │ │ ├── globalRollbackResponse.proto │ │ │ ├── globalStatus.proto │ │ │ ├── globalStatusRequest.proto │ │ │ ├── globalStatusResponse.proto │ │ │ ├── heartbeatMessage.proto │ │ │ ├── mergedResultMessage.proto │ │ │ ├── mergedWarpMessage.proto │ │ │ ├── messageType.proto │ │ │ ├── registerRMRequest.proto │ │ │ ├── registerRMResponse.proto │ │ │ ├── registerTMRequest.proto │ │ │ ├── registerTMResponse.proto │ │ │ ├── resultCode.proto │ │ │ ├── transactionExceptionCode.proto │ │ │ └── undoLogDeleteRequest.proto │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── serializer/ │ │ └── protobuf/ │ │ └── convertor/ │ │ ├── BatchResultMessageConvertorTest.java │ │ ├── BranchCommitRequestConvertorTest.java │ │ ├── BranchCommitResponseConvertorTest.java │ │ ├── BranchRegisterRequestConvertorTest.java │ │ ├── BranchRegisterResponseConvertorTest.java │ │ ├── BranchReportRequestConvertorTest.java │ │ ├── BranchReportResponseConvertorTest.java │ │ ├── BranchRollbackRequestConvertorTest.java │ │ ├── BranchRollbackResponseConvertorTest.java │ │ ├── GlobalBeginRequestConvertorTest.java │ │ ├── GlobalBeginResponseConvertorTest.java │ │ ├── GlobalCommitRequestConvertorTest.java │ │ ├── GlobalCommitResponseConvertorTest.java │ │ ├── GlobalLockQueryRequestConvertorTest.java │ │ ├── GlobalLockQueryResponseConvertorTest.java │ │ ├── GlobalReportRequestConvertorTest.java │ │ ├── GlobalReportResponseConvertorTest.java │ │ ├── GlobalRollbackRequestConvertorTest.java │ │ ├── GlobalRollbackResponseConvertorTest.java │ │ ├── GlobalStatusRequestConvertorTest.java │ │ ├── GlobalStatusResponseConvertorTest.java │ │ ├── HeartbeatMessageConvertorTest.java │ │ ├── MergeMessageConvertorTest.java │ │ ├── MergeResultMessageConvertorTest.java │ │ ├── RegisterRMRequestConvertorTest.java │ │ ├── RegisterRMResponseConvertorTest.java │ │ ├── RegisterTMRequestConvertorTest.java │ │ ├── RegisterTMResponseConvertorTest.java │ │ └── UndoLogDeleteRequestConvertorTest.java │ └── seata-serializer-seata/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── serializer/ │ │ │ └── seata/ │ │ │ ├── MessageCodecFactory.java │ │ │ ├── MessageSeataCodec.java │ │ │ ├── MultiVersionCodec.java │ │ │ ├── SeataSerializer.java │ │ │ ├── protocol/ │ │ │ │ ├── AbstractIdentifyRequestCodec.java │ │ │ │ ├── AbstractIdentifyResponseCodec.java │ │ │ │ ├── AbstractMessageCodec.java │ │ │ │ ├── AbstractResultMessageCodec.java │ │ │ │ ├── BatchResultMessageCodec.java │ │ │ │ ├── MergeResultMessageCodec.java │ │ │ │ ├── MergedWarpMessageCodec.java │ │ │ │ ├── RegisterRMRequestCodec.java │ │ │ │ ├── RegisterRMResponseCodec.java │ │ │ │ ├── RegisterTMRequestCodec.java │ │ │ │ ├── RegisterTMResponseCodec.java │ │ │ │ ├── transaction/ │ │ │ │ │ ├── AbstractBranchEndRequestCodec.java │ │ │ │ │ ├── AbstractBranchEndResponseCodec.java │ │ │ │ │ ├── AbstractGlobalEndRequestCodec.java │ │ │ │ │ ├── AbstractGlobalEndResponseCodec.java │ │ │ │ │ ├── AbstractTransactionRequestCodec.java │ │ │ │ │ ├── AbstractTransactionRequestToRMCodec.java │ │ │ │ │ ├── AbstractTransactionRequestToTCCodec.java │ │ │ │ │ ├── AbstractTransactionResponseCodec.java │ │ │ │ │ ├── BranchCommitRequestCodec.java │ │ │ │ │ ├── BranchCommitResponseCodec.java │ │ │ │ │ ├── BranchRegisterRequestCodec.java │ │ │ │ │ ├── BranchRegisterResponseCodec.java │ │ │ │ │ ├── BranchReportRequestCodec.java │ │ │ │ │ ├── BranchReportResponseCodec.java │ │ │ │ │ ├── BranchRollbackRequestCodec.java │ │ │ │ │ ├── BranchRollbackResponseCodec.java │ │ │ │ │ ├── GlobalBeginRequestCodec.java │ │ │ │ │ ├── GlobalBeginResponseCodec.java │ │ │ │ │ ├── GlobalCommitRequestCodec.java │ │ │ │ │ ├── GlobalCommitResponseCodec.java │ │ │ │ │ ├── GlobalLockQueryRequestCodec.java │ │ │ │ │ ├── GlobalLockQueryResponseCodec.java │ │ │ │ │ ├── GlobalReportRequestCodec.java │ │ │ │ │ ├── GlobalReportResponseCodec.java │ │ │ │ │ ├── GlobalRollbackRequestCodec.java │ │ │ │ │ ├── GlobalRollbackResponseCodec.java │ │ │ │ │ ├── GlobalStatusRequestCodec.java │ │ │ │ │ ├── GlobalStatusResponseCodec.java │ │ │ │ │ └── UndoLogDeleteRequestCodec.java │ │ │ │ └── v2/ │ │ │ │ ├── AbstractIdentifyResponseCodecV2.java │ │ │ │ ├── RegisterRMResponseCodecV2.java │ │ │ │ └── RegisterTMResponseCodecV2.java │ │ │ └── serializer/ │ │ │ ├── SeataSerializerV1.java │ │ │ └── SeataSerializerV2.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── org.apache.seata.core.serializer.Serializer │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── serializer/ │ │ └── seata/ │ │ ├── MultiVersionCodecTest.java │ │ ├── protocol/ │ │ │ ├── BatchResultMessageSerializerTest.java │ │ │ ├── MergeResultMessageSerializerTest.java │ │ │ ├── MergedWarpMessageSerializerTest.java │ │ │ ├── RegisterRMRequestSerializerTest.java │ │ │ ├── RegisterRMResponseSerializerTest.java │ │ │ ├── RegisterTMRequestSerializerTest.java │ │ │ ├── RegisterTMResponseSerializerTest.java │ │ │ ├── transaction/ │ │ │ │ ├── BranchCommitRequestSerializerTest.java │ │ │ │ ├── BranchCommitResponseSerializerTest.java │ │ │ │ ├── BranchRegisterRequestSerializerTest.java │ │ │ │ ├── BranchRegisterResponseSerializerTest.java │ │ │ │ ├── BranchReportRequestSerializerTest.java │ │ │ │ ├── BranchReportResponseSerializerTest.java │ │ │ │ ├── BranchRollbackRequestSerializerTest.java │ │ │ │ ├── BranchRollbackResponseSerializerTest.java │ │ │ │ ├── GlobalBeginRequestSerializerTest.java │ │ │ │ ├── GlobalBeginResponseSerializerTest.java │ │ │ │ ├── GlobalCommitRequestCodecTest.java │ │ │ │ ├── GlobalCommitResponseSerializerTest.java │ │ │ │ ├── GlobalLockQueryRequestSerializerTest.java │ │ │ │ ├── GlobalLockQueryResponseSerializerTest.java │ │ │ │ ├── GlobalRollbackRequestCodecTest.java │ │ │ │ ├── GlobalRollbackResponseSerializerTest.java │ │ │ │ ├── GlobalStatusRequestCodecTest.java │ │ │ │ ├── GlobalStatusResponseSerializerTest.java │ │ │ │ └── UndoLogDeleteRequestSerializerTest.java │ │ │ └── v2/ │ │ │ └── RegisterResponseCodecV2Test.java │ │ └── serializer/ │ │ └── SeataSerializerV1Test.java │ └── resources/ │ ├── file.conf │ └── registry.conf ├── server/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ ├── io/ │ │ │ │ └── seata/ │ │ │ │ └── server/ │ │ │ │ └── cluster/ │ │ │ │ └── raft/ │ │ │ │ ├── snapshot/ │ │ │ │ │ └── RaftSnapshot.java │ │ │ │ └── sync/ │ │ │ │ └── msg/ │ │ │ │ └── RaftSyncMessage.java │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── server/ │ │ │ ├── AbstractTCInboundHandler.java │ │ │ ├── ParameterParser.java │ │ │ ├── Server.java │ │ │ ├── ServerApplication.java │ │ │ ├── ServerRunner.java │ │ │ ├── auth/ │ │ │ │ ├── AbstractCheckAuthHandler.java │ │ │ │ └── DefaultCheckAuthHandler.java │ │ │ ├── cluster/ │ │ │ │ ├── listener/ │ │ │ │ │ ├── ClusterChangeEvent.java │ │ │ │ │ └── ClusterChangeListener.java │ │ │ │ ├── manager/ │ │ │ │ │ └── ClusterWatcherManager.java │ │ │ │ ├── raft/ │ │ │ │ │ ├── RaftServer.java │ │ │ │ │ ├── RaftServerManager.java │ │ │ │ │ ├── RaftStateMachine.java │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── SeataClusterContext.java │ │ │ │ │ ├── execute/ │ │ │ │ │ │ ├── AbstractRaftMsgExecute.java │ │ │ │ │ │ ├── RaftMsgExecute.java │ │ │ │ │ │ ├── branch/ │ │ │ │ │ │ │ ├── AddBranchSessionExecute.java │ │ │ │ │ │ │ ├── RemoveBranchSessionExecute.java │ │ │ │ │ │ │ └── UpdateBranchSessionExecute.java │ │ │ │ │ │ ├── global/ │ │ │ │ │ │ │ ├── AddGlobalSessionExecute.java │ │ │ │ │ │ │ ├── RemoveGlobalSessionExecute.java │ │ │ │ │ │ │ └── UpdateGlobalSessionExecute.java │ │ │ │ │ │ ├── lock/ │ │ │ │ │ │ │ ├── BranchReleaseLockExecute.java │ │ │ │ │ │ │ └── GlobalReleaseLockExecute.java │ │ │ │ │ │ └── vgroup/ │ │ │ │ │ │ ├── VGroupAddExecute.java │ │ │ │ │ │ └── VGroupRemoveExecute.java │ │ │ │ │ ├── processor/ │ │ │ │ │ │ ├── PutNodeInfoRequestProcessor.java │ │ │ │ │ │ ├── request/ │ │ │ │ │ │ │ └── PutNodeMetadataRequest.java │ │ │ │ │ │ └── response/ │ │ │ │ │ │ └── PutNodeMetadataResponse.java │ │ │ │ │ ├── serializer/ │ │ │ │ │ │ ├── CustomDeserializer.java │ │ │ │ │ │ ├── JacksonBoltSerializer.java │ │ │ │ │ │ └── JacksonSerializer.java │ │ │ │ │ ├── snapshot/ │ │ │ │ │ │ ├── RaftSnapshot.java │ │ │ │ │ │ ├── RaftSnapshotSerializer.java │ │ │ │ │ │ ├── StoreSnapshotFile.java │ │ │ │ │ │ ├── metadata/ │ │ │ │ │ │ │ └── LeaderMetadataSnapshotFile.java │ │ │ │ │ │ ├── session/ │ │ │ │ │ │ │ ├── RaftSessionSnapshot.java │ │ │ │ │ │ │ └── SessionSnapshotFile.java │ │ │ │ │ │ └── vgroup/ │ │ │ │ │ │ └── VGroupSnapshotFile.java │ │ │ │ │ ├── sync/ │ │ │ │ │ │ ├── RaftSyncMessageSerializer.java │ │ │ │ │ │ └── msg/ │ │ │ │ │ │ ├── RaftBaseMsg.java │ │ │ │ │ │ ├── RaftBranchSessionSyncMsg.java │ │ │ │ │ │ ├── RaftClusterMetadataMsg.java │ │ │ │ │ │ ├── RaftGlobalSessionSyncMsg.java │ │ │ │ │ │ ├── RaftSyncMessage.java │ │ │ │ │ │ ├── RaftSyncMsgType.java │ │ │ │ │ │ ├── RaftVGroupSyncMsg.java │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ ├── BranchTransactionDTO.java │ │ │ │ │ │ ├── GlobalTransactionDTO.java │ │ │ │ │ │ └── RaftClusterMetadata.java │ │ │ │ │ └── util/ │ │ │ │ │ └── RaftTaskUtil.java │ │ │ │ └── watch/ │ │ │ │ └── Watcher.java │ │ │ ├── config/ │ │ │ │ ├── AsyncConfig.java │ │ │ │ ├── ServerConfig.java │ │ │ │ └── ServerInstanceStrategyConfig.java │ │ │ ├── console/ │ │ │ │ ├── aop/ │ │ │ │ │ └── GlobalExceptionHandlerAdvice.java │ │ │ │ ├── controller/ │ │ │ │ │ ├── BranchSessionController.java │ │ │ │ │ ├── GlobalLockController.java │ │ │ │ │ └── GlobalSessionController.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── bo/ │ │ │ │ │ │ └── GlobalLockQueryBO.java │ │ │ │ │ └── vo/ │ │ │ │ │ └── GlobalLockVO.java │ │ │ │ ├── exception/ │ │ │ │ │ └── ConsoleException.java │ │ │ │ ├── impl/ │ │ │ │ │ ├── AbstractBranchService.java │ │ │ │ │ ├── AbstractGlobalService.java │ │ │ │ │ ├── AbstractLockService.java │ │ │ │ │ ├── AbstractService.java │ │ │ │ │ ├── db/ │ │ │ │ │ │ ├── BranchSessionDBServiceImpl.java │ │ │ │ │ │ ├── GlobalLockDBServiceImpl.java │ │ │ │ │ │ └── GlobalSessionDBServiceImpl.java │ │ │ │ │ ├── file/ │ │ │ │ │ │ ├── BranchSessionFileServiceImpl.java │ │ │ │ │ │ ├── GlobalLockFileServiceImpl.java │ │ │ │ │ │ └── GlobalSessionFileServiceImpl.java │ │ │ │ │ ├── raft/ │ │ │ │ │ │ ├── BranchSessionRaftServiceImpl.java │ │ │ │ │ │ ├── GlobalLockRaftServiceImpl.java │ │ │ │ │ │ └── GlobalSessionRaftServiceImpl.java │ │ │ │ │ └── redis/ │ │ │ │ │ ├── BranchSessionRedisServiceImpl.java │ │ │ │ │ ├── GlobalLockRedisServiceImpl.java │ │ │ │ │ └── GlobalSessionRedisServiceImpl.java │ │ │ │ └── service/ │ │ │ │ ├── BranchSessionService.java │ │ │ │ ├── GlobalLockService.java │ │ │ │ └── GlobalSessionService.java │ │ │ ├── controller/ │ │ │ │ ├── ClusterController.java │ │ │ │ ├── HealthController.java │ │ │ │ └── VGroupMappingController.java │ │ │ ├── coordinator/ │ │ │ │ ├── AbstractCore.java │ │ │ │ ├── Core.java │ │ │ │ ├── DefaultCoordinator.java │ │ │ │ ├── DefaultCore.java │ │ │ │ ├── RaftCoordinator.java │ │ │ │ ├── TransactionCoordinatorInbound.java │ │ │ │ └── TransactionCoordinatorOutbound.java │ │ │ ├── env/ │ │ │ │ ├── ContainerHelper.java │ │ │ │ └── PortHelper.java │ │ │ ├── event/ │ │ │ │ └── EventBusManager.java │ │ │ ├── filter/ │ │ │ │ ├── RaftCondition.java │ │ │ │ ├── RaftRequestFilter.java │ │ │ │ └── XSSHttpRequestFilter.java │ │ │ ├── instance/ │ │ │ │ ├── AbstractSeataInstanceStrategy.java │ │ │ │ ├── GeneralInstanceStrategy.java │ │ │ │ ├── RaftServerInstanceStrategy.java │ │ │ │ └── SeataInstanceStrategy.java │ │ │ ├── limit/ │ │ │ │ ├── AbstractTransactionRequestHandler.java │ │ │ │ ├── LimitRequestDecorator.java │ │ │ │ └── ratelimit/ │ │ │ │ ├── RateLimitInfo.java │ │ │ │ ├── RateLimiter.java │ │ │ │ ├── RateLimiterHandler.java │ │ │ │ ├── RateLimiterHandlerConfig.java │ │ │ │ └── TokenBucketLimiter.java │ │ │ ├── lock/ │ │ │ │ ├── AbstractLockManager.java │ │ │ │ ├── LockManager.java │ │ │ │ ├── LockerManagerFactory.java │ │ │ │ └── distributed/ │ │ │ │ └── DistributedLockerFactory.java │ │ │ ├── logging/ │ │ │ │ ├── listener/ │ │ │ │ │ └── SystemPropertyLoggerContextListener.java │ │ │ │ └── logback/ │ │ │ │ ├── ExtendedArrowThrowableProxyConverter.java │ │ │ │ └── appender/ │ │ │ │ ├── EnhancedLogstashEncoder.java │ │ │ │ └── MetricLogbackAppender.java │ │ │ ├── metrics/ │ │ │ │ ├── MeterIdConstants.java │ │ │ │ ├── MetricsManager.java │ │ │ │ ├── MetricsPublisher.java │ │ │ │ └── MetricsSubscriber.java │ │ │ ├── session/ │ │ │ │ ├── AbstractSessionManager.java │ │ │ │ ├── BranchSession.java │ │ │ │ ├── BranchSessionHandler.java │ │ │ │ ├── GlobalSession.java │ │ │ │ ├── GlobalSessionHandler.java │ │ │ │ ├── Lockable.java │ │ │ │ ├── Reloadable.java │ │ │ │ ├── SessionCondition.java │ │ │ │ ├── SessionHelper.java │ │ │ │ ├── SessionHolder.java │ │ │ │ ├── SessionLifecycle.java │ │ │ │ ├── SessionLifecycleListener.java │ │ │ │ ├── SessionManager.java │ │ │ │ └── SessionStatusValidator.java │ │ │ ├── spring/ │ │ │ │ └── listener/ │ │ │ │ ├── HttpFilterInitListener.java │ │ │ │ └── ServerApplicationListener.java │ │ │ ├── storage/ │ │ │ │ ├── SessionConverter.java │ │ │ │ ├── db/ │ │ │ │ │ ├── lock/ │ │ │ │ │ │ ├── DataBaseDistributedLocker.java │ │ │ │ │ │ ├── DataBaseLockManager.java │ │ │ │ │ │ ├── DataBaseLocker.java │ │ │ │ │ │ └── LockStoreDataBaseDAO.java │ │ │ │ │ ├── session/ │ │ │ │ │ │ └── DataBaseSessionManager.java │ │ │ │ │ └── store/ │ │ │ │ │ ├── DataBaseTransactionStoreManager.java │ │ │ │ │ ├── DataBaseVGroupMappingStoreManager.java │ │ │ │ │ ├── LogStoreDataBaseDAO.java │ │ │ │ │ └── VGroupMappingDataBaseDAO.java │ │ │ │ ├── file/ │ │ │ │ │ ├── FlushDiskMode.java │ │ │ │ │ ├── ReloadableStore.java │ │ │ │ │ ├── TransactionWriteStore.java │ │ │ │ │ ├── lock/ │ │ │ │ │ │ ├── FileLockManager.java │ │ │ │ │ │ └── FileLocker.java │ │ │ │ │ ├── session/ │ │ │ │ │ │ └── FileSessionManager.java │ │ │ │ │ └── store/ │ │ │ │ │ ├── FileTransactionStoreManager.java │ │ │ │ │ └── FileVGroupMappingStoreManager.java │ │ │ │ ├── raft/ │ │ │ │ │ ├── lock/ │ │ │ │ │ │ ├── RaftDistributedLocker.java │ │ │ │ │ │ └── RaftLockManager.java │ │ │ │ │ ├── session/ │ │ │ │ │ │ └── RaftSessionManager.java │ │ │ │ │ └── store/ │ │ │ │ │ └── RaftVGroupMappingStoreManager.java │ │ │ │ └── redis/ │ │ │ │ ├── JedisPooledFactory.java │ │ │ │ ├── LuaParser.java │ │ │ │ ├── lock/ │ │ │ │ │ ├── RedisDistributedLocker.java │ │ │ │ │ ├── RedisLockManager.java │ │ │ │ │ ├── RedisLocker.java │ │ │ │ │ ├── RedisLockerFactory.java │ │ │ │ │ └── RedisLuaLocker.java │ │ │ │ ├── session/ │ │ │ │ │ └── RedisSessionManager.java │ │ │ │ └── store/ │ │ │ │ ├── RedisLuaTransactionStoreManager.java │ │ │ │ ├── RedisTransactionStoreManager.java │ │ │ │ ├── RedisTransactionStoreManagerFactory.java │ │ │ │ └── RedisVGroupMappingStoreManager.java │ │ │ ├── store/ │ │ │ │ ├── AbstractTransactionStoreManager.java │ │ │ │ ├── DbcpDataSourceProvider.java │ │ │ │ ├── DruidDataSourceProvider.java │ │ │ │ ├── HikariDataSourceProvider.java │ │ │ │ ├── SessionStorable.java │ │ │ │ ├── StoreConfig.java │ │ │ │ ├── TransactionStoreManager.java │ │ │ │ └── VGroupMappingStoreManager.java │ │ │ └── transaction/ │ │ │ ├── at/ │ │ │ │ └── ATCore.java │ │ │ ├── saga/ │ │ │ │ ├── SagaAnnotationCore.java │ │ │ │ └── SagaCore.java │ │ │ ├── tcc/ │ │ │ │ └── TccCore.java │ │ │ └── xa/ │ │ │ └── XACore.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ ├── services/ │ │ │ │ ├── org.apache.seata.core.rpc.RegisterCheckAuthHandler │ │ │ │ ├── org.apache.seata.core.rpc.netty.http.filter.HttpRequestFilter │ │ │ │ ├── org.apache.seata.core.serializer.Serializer │ │ │ │ ├── org.apache.seata.core.store.DistributedLocker │ │ │ │ ├── org.apache.seata.core.store.db.DataSourceProvider │ │ │ │ ├── org.apache.seata.server.coordinator.AbstractCore │ │ │ │ ├── org.apache.seata.server.limit.ratelimit.RateLimiter │ │ │ │ ├── org.apache.seata.server.lock.LockManager │ │ │ │ ├── org.apache.seata.server.session.SessionManager │ │ │ │ └── org.apache.seata.server.store.VGroupMappingStoreManager │ │ │ ├── spring-configuration-metadata.json │ │ │ └── spring.factories │ │ ├── README-zh.md │ │ ├── README.md │ │ ├── application.example.yml │ │ ├── application.raft.example.yml │ │ ├── application.yml │ │ ├── banner.txt │ │ ├── docker/ │ │ │ └── seata-server-entrypoint.sh │ │ ├── jdbc/ │ │ │ └── README.md │ │ ├── logback/ │ │ │ ├── console-appender.xml │ │ │ ├── file-appender.xml │ │ │ ├── kafka-appender.xml │ │ │ ├── logstash-appender.xml │ │ │ └── metric-appender.xml │ │ ├── logback-spring.xml │ │ └── lua/ │ │ ├── redisStore/ │ │ │ ├── deleteTransactionDO.lua │ │ │ ├── insertTransactionDO.lua │ │ │ ├── rollbackGlobalTransactionDO.lua │ │ │ ├── updateBranchTransactionDO.lua │ │ │ └── updateGlobalTransactionDO.lua │ │ └── redislocker/ │ │ ├── acquireRedisLock.lua │ │ ├── isLockable.lua │ │ ├── releaseRedisLock.lua │ │ └── updateLockStatus.lua │ └── test/ │ ├── java/ │ │ ├── ServerTest.java │ │ ├── WriteStoreMultithreadTest.java │ │ ├── WriteStoreTest.java │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── server/ │ │ ├── BaseSpringBootTest.java │ │ ├── LoaderConfTest.java │ │ ├── ParameterParserTest.java │ │ ├── UUIDGeneratorOverflowTest.java │ │ ├── cluster/ │ │ │ ├── listener/ │ │ │ │ └── ClusterChangeEventTest.java │ │ │ ├── manager/ │ │ │ │ └── ClusterWatcherManagerTest.java │ │ │ └── raft/ │ │ │ ├── RaftServerTest.java │ │ │ ├── RaftStateMachineTest.java │ │ │ ├── RaftSyncMessageTest.java │ │ │ ├── TestSecurity.java │ │ │ ├── context/ │ │ │ │ └── SeataClusterContextTest.java │ │ │ ├── execute/ │ │ │ │ ├── BranchSessionExecuteTest.java │ │ │ │ ├── GlobalSessionExecuteTest.java │ │ │ │ └── LockExecuteTest.java │ │ │ ├── processor/ │ │ │ │ ├── PutNodeInfoRequestProcessorTest.java │ │ │ │ ├── request/ │ │ │ │ │ └── PutNodeMetadataRequestTest.java │ │ │ │ └── response/ │ │ │ │ └── PutNodeMetadataResponseTest.java │ │ │ ├── serializer/ │ │ │ │ └── JacksonSerializerTest.java │ │ │ ├── sync/ │ │ │ │ └── msg/ │ │ │ │ ├── RaftBaseMsgTest.java │ │ │ │ ├── RaftBranchSessionSyncMsgTest.java │ │ │ │ ├── RaftClusterMetadataMsgTest.java │ │ │ │ ├── RaftGlobalSessionSyncMsgTest.java │ │ │ │ ├── RaftVGroupSyncMsgTest.java │ │ │ │ └── dto/ │ │ │ │ ├── BranchTransactionDTOTest.java │ │ │ │ ├── GlobalTransactionDTOTest.java │ │ │ │ └── RaftClusterMetadataTest.java │ │ │ └── util/ │ │ │ └── RaftTaskUtilTest.java │ │ ├── console/ │ │ │ ├── aop/ │ │ │ │ └── GlobalExceptionHandlerAdviceTest.java │ │ │ ├── exception/ │ │ │ │ └── ConsoleExceptionTest.java │ │ │ └── impl/ │ │ │ ├── AbstractBranchServiceTest.java │ │ │ ├── AbstractGlobalServiceTest.java │ │ │ ├── AbstractLockServiceTest.java │ │ │ ├── AbstractServiceTest.java │ │ │ ├── db/ │ │ │ │ ├── BranchSessionDBServiceImplTest.java │ │ │ │ ├── GlobalLockDBServiceImplTest.java │ │ │ │ └── GlobalSessionDBServiceImplTest.java │ │ │ ├── file/ │ │ │ │ ├── BranchSessionFileServiceImplTest.java │ │ │ │ ├── GlobalLockFileServiceImplTest.java │ │ │ │ └── GlobalSessionFileServiceImplTest.java │ │ │ └── redis/ │ │ │ ├── BranchSessionRedisServiceImplTest.java │ │ │ ├── GlobalLockRedisServiceImplTest.java │ │ │ └── GlobalSessionRedisServiceImplTest.java │ │ ├── controller/ │ │ │ ├── ClusterControllerTest.java │ │ │ └── VGroupMappingControllerTest.java │ │ ├── coordinator/ │ │ │ ├── AbstractCoreTest.java │ │ │ ├── DefaultCoordinatorMetricsTest.java │ │ │ ├── DefaultCoordinatorTest.java │ │ │ ├── DefaultCoreTest.java │ │ │ └── RaftCoordinatorTest.java │ │ ├── env/ │ │ │ └── PortHelperTest.java │ │ ├── event/ │ │ │ └── DefaultCoreForEventBusTest.java │ │ ├── instance/ │ │ │ └── RaftServerInstanceStrategyTest.java │ │ ├── lock/ │ │ │ ├── DistributedLockerFactoryTest.java │ │ │ ├── LockManagerTest.java │ │ │ ├── db/ │ │ │ │ ├── DataBaseLockManagerImplTest.java │ │ │ │ └── DataBaseLockStoreDAOTest.java │ │ │ ├── file/ │ │ │ │ ├── FileLockManagerForTest.java │ │ │ │ └── FileLockManagerImplTest.java │ │ │ └── redis/ │ │ │ ├── RedisLockManagerTest.java │ │ │ └── RedisLuaLockManagerTest.java │ │ ├── logging/ │ │ │ └── AppenderTest.java │ │ ├── metrics/ │ │ │ └── RegistryMeterKeyTest.java │ │ ├── ratelimiter/ │ │ │ ├── RateLimitInfoTest.java │ │ │ ├── RateLimiterHandlerTest.java │ │ │ └── TokenBucketLimiterTest.java │ │ ├── session/ │ │ │ ├── BranchSessionTest.java │ │ │ ├── FileSessionManagerTest.java │ │ │ ├── GlobalSessionTest.java │ │ │ ├── SessionHolderTest.java │ │ │ ├── SessionStatusValidatorTest.java │ │ │ ├── db/ │ │ │ │ └── DataBaseSessionManagerTest.java │ │ │ └── redis/ │ │ │ ├── RedisDistributedLockerTest.java │ │ │ ├── RedisLuaTransactionStoreManagerTest.java │ │ │ ├── RedisQueryConsolTest.java │ │ │ ├── RedisSessionManagerTest.java │ │ │ ├── RedisTransactionStoreManagerTest.java │ │ │ └── SessionConverterTest.java │ │ ├── spring/ │ │ │ └── listener/ │ │ │ └── ClearServerServicePortInitializer.java │ │ ├── storage/ │ │ │ ├── SessionConverterTest.java │ │ │ ├── db/ │ │ │ │ ├── lock/ │ │ │ │ │ ├── DataBaseDistributedLockerTest.java │ │ │ │ │ ├── DataBaseLockerTest.java │ │ │ │ │ └── LockStoreDataBaseDAOTest.java │ │ │ │ └── store/ │ │ │ │ ├── DataBaseTransactionStoreManagerTest.java │ │ │ │ ├── DataBaseVGroupMappingStoreManagerTest.java │ │ │ │ └── VGroupMappingDataBaseDAOTest.java │ │ │ ├── file/ │ │ │ │ ├── FlushDiskModeTest.java │ │ │ │ ├── ReloadableStoreTest.java │ │ │ │ ├── TransactionWriteStoreTest.java │ │ │ │ ├── lock/ │ │ │ │ │ └── FileLockerTest.java │ │ │ │ └── store/ │ │ │ │ └── FileVGroupMappingStoreManagerTest.java │ │ │ ├── raft/ │ │ │ │ ├── lock/ │ │ │ │ │ ├── RaftDistributedLockerTest.java │ │ │ │ │ └── RaftLockManagerTest.java │ │ │ │ ├── session/ │ │ │ │ │ └── RaftSessionManagerTest.java │ │ │ │ └── store/ │ │ │ │ └── RaftVGroupMappingStoreManagerTest.java │ │ │ └── redis/ │ │ │ ├── JedisPooledFactoryTest.java │ │ │ ├── LuaParserTest.java │ │ │ ├── lock/ │ │ │ │ ├── RedisLockerFactoryTest.java │ │ │ │ ├── RedisLockerTest.java │ │ │ │ └── RedisLuaLockerTest.java │ │ │ └── store/ │ │ │ ├── RedisLuaTransactionStoreManagerTest.java │ │ │ ├── RedisTransactionStoreManagerFactoryTest.java │ │ │ ├── RedisTransactionStoreManagerTest.java │ │ │ └── RedisVGroupMappingStoreManagerTest.java │ │ ├── store/ │ │ │ ├── RaftSyncMessageSerializerTest.java │ │ │ ├── SessionStoreTest.java │ │ │ ├── db/ │ │ │ │ ├── AbstractDataSourceProviderTest.java │ │ │ │ └── LogStoreDataBaseDAOTest.java │ │ │ └── file/ │ │ │ └── FileTransactionStoreManagerTest.java │ │ └── util/ │ │ └── StoreUtil.java │ └── resources/ │ ├── META-INF/ │ │ ├── services/ │ │ │ ├── org.apache.seata.core.rpc.RegisterCheckAuthHandler │ │ │ ├── org.apache.seata.core.store.DistributedLocker │ │ │ ├── org.apache.seata.core.store.db.DataSourceProvider │ │ │ ├── org.apache.seata.metrics.exporter.Exporter │ │ │ ├── org.apache.seata.server.coordinator.AbstractCore │ │ │ ├── org.apache.seata.server.limit.ratelimit.RateLimiter │ │ │ ├── org.apache.seata.server.lock.LockManager │ │ │ └── org.apache.seata.server.session.SessionManager │ │ └── spring.factories │ ├── application.properties │ ├── file.conf │ ├── junit-platform.properties │ ├── lua/ │ │ ├── redisStore/ │ │ │ ├── deleteTransactionDO.lua │ │ │ ├── insertTransactionDO.lua │ │ │ ├── rollbackGlobalTransactionDO.lua │ │ │ ├── updateBranchTransactionDO.lua │ │ │ └── updateGlobalTransactionDO.lua │ │ └── redislocker/ │ │ ├── acquireRedisLock.lua │ │ ├── isLockable.lua │ │ ├── releaseRedisLock.lua │ │ └── updateLockStatus.lua │ └── registry.conf ├── spring/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ ├── rm/ │ │ │ │ └── fence/ │ │ │ │ ├── SpringFenceConfig.java │ │ │ │ └── SpringFenceHandler.java │ │ │ └── spring/ │ │ │ ├── SpringTargetClassParser.java │ │ │ ├── annotation/ │ │ │ │ ├── AdapterInvocationWrapper.java │ │ │ │ ├── AdapterSpringSeataInterceptor.java │ │ │ │ ├── AspectTransactionalInterceptor.java │ │ │ │ ├── GlobalTransactionScanner.java │ │ │ │ ├── MethodDesc.java │ │ │ │ ├── ScannerChecker.java │ │ │ │ ├── datasource/ │ │ │ │ │ ├── AutoDataSourceProxyRegistrar.java │ │ │ │ │ ├── DataSourceProxyHolder.java │ │ │ │ │ ├── EnableAutoDataSourceProxy.java │ │ │ │ │ ├── SeataAutoDataSourceProxyAdvice.java │ │ │ │ │ ├── SeataAutoDataSourceProxyCreator.java │ │ │ │ │ └── SeataProxy.java │ │ │ │ └── scannercheckers/ │ │ │ │ ├── ConfigBeansScannerChecker.java │ │ │ │ ├── PackageScannerChecker.java │ │ │ │ └── ScopeBeansScannerChecker.java │ │ │ ├── kt/ │ │ │ │ └── support/ │ │ │ │ ├── TransactionCoroutineContext.kt │ │ │ │ └── TransactionDsl.kt │ │ │ ├── remoting/ │ │ │ │ └── parser/ │ │ │ │ └── RemotingFactoryBeanParser.java │ │ │ ├── tcc/ │ │ │ │ └── TccAnnotationProcessor.java │ │ │ └── util/ │ │ │ ├── OrderUtil.java │ │ │ └── SpringProxyUtils.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ ├── org.apache.seata.integration.tx.api.interceptor.parser.TargetClassParser │ │ └── org.apache.seata.spring.annotation.ScannerChecker │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ ├── rm/ │ │ │ └── fence/ │ │ │ ├── FenceLogCleanRunnableUnitTest.java │ │ │ ├── FenceLogIdentityTest.java │ │ │ ├── SpringFenceConfigTest.java │ │ │ └── SpringFenceHandlerUnitTest.java │ │ └── spring/ │ │ ├── SpringLocalTccTest.java │ │ ├── annotation/ │ │ │ ├── AdapterSpringSeataInterceptorTest.java │ │ │ ├── GlobalTransactionScannerTest.java │ │ │ ├── MethodDescTest.java │ │ │ ├── datasource/ │ │ │ │ └── SeataAutoDataSourceProxyTest.java │ │ │ └── scannercheckers/ │ │ │ ├── ConfigBeansScannerCheckerTest.java │ │ │ ├── PackageScannerCheckerTest.java │ │ │ └── ScopeBeansScannerCheckerTest.java │ │ ├── kt/ │ │ │ └── TransactionScopeTest.kt │ │ ├── remoting/ │ │ │ └── parser/ │ │ │ └── RemotingFactoryBeanParserTest.java │ │ ├── tcc/ │ │ │ ├── NormalTccAction.java │ │ │ ├── NormalTccActionImpl.java │ │ │ ├── TccAnnoAtInterAction.java │ │ │ ├── TccAnnoAtInterActionImpl.java │ │ │ ├── TccAnnoAtInterImplAction.java │ │ │ ├── TccAnnoAtInterImplActionImpl.java │ │ │ └── TccAnnotationProcessorTest.java │ │ └── util/ │ │ ├── MockAdvice1.java │ │ ├── MockAdvice2.java │ │ ├── MockAdvisor.java │ │ ├── MockAnnotationOrdered.java │ │ ├── MockOrdered.java │ │ ├── OrderUtilTest.java │ │ └── SpringProxyUtilsTest.java │ └── resources/ │ ├── file.conf │ └── registry.conf ├── sqlparser/ │ ├── pom.xml │ ├── seata-sqlparser-antlr/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── apache/ │ │ │ │ └── seata/ │ │ │ │ └── sqlparser/ │ │ │ │ └── antlr/ │ │ │ │ ├── AntlrDelegatingSQLRecognizerFactory.java │ │ │ │ ├── SQLOperateRecognizerHolder.java │ │ │ │ ├── SQLOperateRecognizerHolderFactory.java │ │ │ │ └── mysql/ │ │ │ │ ├── AntlrMySQLDeleteRecognizer.java │ │ │ │ ├── AntlrMySQLInsertRecognizer.java │ │ │ │ ├── AntlrMySQLRecognizerFactory.java │ │ │ │ ├── AntlrMySQLSelectRecognizer.java │ │ │ │ ├── AntlrMySQLUpdateRecognizer.java │ │ │ │ ├── MySQLOperateRecognizerHolder.java │ │ │ │ ├── MySqlContext.java │ │ │ │ ├── antlr/ │ │ │ │ │ ├── MySqlLexer.g4 │ │ │ │ │ └── MySqlParser.g4 │ │ │ │ ├── listener/ │ │ │ │ │ ├── DeleteSpecificationSqlListener.java │ │ │ │ │ ├── SelectSpecificationSqlListener.java │ │ │ │ │ └── UpdateSpecificationSqlListener.java │ │ │ │ ├── parser/ │ │ │ │ │ ├── MySqlLexer.interp │ │ │ │ │ ├── MySqlLexer.java │ │ │ │ │ ├── MySqlLexer.tokens │ │ │ │ │ ├── MySqlParser.interp │ │ │ │ │ ├── MySqlParser.java │ │ │ │ │ ├── MySqlParser.tokens │ │ │ │ │ ├── MySqlParserBaseListener.java │ │ │ │ │ ├── MySqlParserBaseVisitor.java │ │ │ │ │ ├── MySqlParserListener.java │ │ │ │ │ └── MySqlParserVisitor.java │ │ │ │ ├── stream/ │ │ │ │ │ └── ANTLRNoCaseStringStream.java │ │ │ │ └── visit/ │ │ │ │ ├── InsertSpecificationSqlVisitor.java │ │ │ │ ├── InsertStatementSqlVisitor.java │ │ │ │ └── StatementSqlVisitor.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ ├── org.apache.seata.sqlparser.SQLRecognizerFactory │ │ │ └── org.apache.seata.sqlparser.antlr.SQLOperateRecognizerHolder │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── sqlparser/ │ │ └── antlr/ │ │ ├── AntlrIsolationTest.java │ │ ├── MySQLDeleteRecognizerTest.java │ │ ├── MySQLInsertRecognizerTest.java │ │ ├── MySQLSelectForUpdateRecognizerForListenerTest.java │ │ ├── MySQLUpdateRecognizerTest.java │ │ └── mysql/ │ │ ├── AntlrMySQLDeleteRecognizerTest.java │ │ ├── AntlrMySQLInsertRecognizerTest.java │ │ └── AntlrMySQLUpdateRecognizerTest.java │ ├── seata-sqlparser-core/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── sqlparser/ │ │ │ ├── EscapeHandler.java │ │ │ ├── EscapeHandlerFactory.java │ │ │ ├── EscapeSymbol.java │ │ │ ├── JoinRecognizer.java │ │ │ ├── ParametersHolder.java │ │ │ ├── SQLDeleteRecognizer.java │ │ │ ├── SQLInsertRecognizer.java │ │ │ ├── SQLParsingException.java │ │ │ ├── SQLRecognizer.java │ │ │ ├── SQLRecognizerFactory.java │ │ │ ├── SQLSelectRecognizer.java │ │ │ ├── SQLType.java │ │ │ ├── SQLUpdateRecognizer.java │ │ │ ├── SqlParserType.java │ │ │ ├── WhereRecognizer.java │ │ │ ├── struct/ │ │ │ │ ├── ColumnMeta.java │ │ │ │ ├── Defaultable.java │ │ │ │ ├── IndexMeta.java │ │ │ │ ├── IndexType.java │ │ │ │ ├── NotPlaceholderExpr.java │ │ │ │ ├── Null.java │ │ │ │ ├── Sequenceable.java │ │ │ │ ├── SqlDefaultExpr.java │ │ │ │ ├── SqlMethodExpr.java │ │ │ │ ├── SqlSequenceExpr.java │ │ │ │ ├── SqlServerTableMeta.java │ │ │ │ ├── TableMeta.java │ │ │ │ └── TableMetaCache.java │ │ │ └── util/ │ │ │ ├── ColumnUtils.java │ │ │ ├── DbTypeParser.java │ │ │ └── JdbcConstants.java │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── sqlparser/ │ │ ├── EscapeSymbolTest.java │ │ ├── SQLParsingExceptionTest.java │ │ ├── SQLTypeTest.java │ │ └── struct/ │ │ ├── ColumnMetaTest.java │ │ ├── IndexMetaTest.java │ │ ├── IndexTypeTest.java │ │ ├── NotPlaceHolderExprTest.java │ │ ├── NullTest.java │ │ ├── SqlDefaultExprTest.java │ │ ├── SqlMethodExprTest.java │ │ ├── SqlSequenceExprTest.java │ │ └── TableMetaTest.java │ └── seata-sqlparser-druid/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── sqlparser/ │ │ │ └── druid/ │ │ │ ├── BaseRecognizer.java │ │ │ ├── DefaultDruidLoader.java │ │ │ ├── DruidDbTypeAdapter.java │ │ │ ├── DruidDbTypeParserImpl.java │ │ │ ├── DruidDelegatingDbTypeParser.java │ │ │ ├── DruidDelegatingSQLRecognizerFactory.java │ │ │ ├── DruidIsolationClassLoader.java │ │ │ ├── DruidLoader.java │ │ │ ├── DruidSQLRecognizerFactoryImpl.java │ │ │ ├── SQLOperateRecognizerHolder.java │ │ │ ├── SQLOperateRecognizerHolderFactory.java │ │ │ ├── SupportSqlWhereMethod.java │ │ │ ├── dm/ │ │ │ │ ├── BaseDmRecognizer.java │ │ │ │ ├── DmDeleteRecognizer.java │ │ │ │ ├── DmInsertRecognizer.java │ │ │ │ ├── DmOperateRecognizerHolder.java │ │ │ │ ├── DmSelectForUpdateRecognizer.java │ │ │ │ └── DmUpdateRecognizer.java │ │ │ ├── kingbase/ │ │ │ │ ├── BaseKingbaseRecognizer.java │ │ │ │ ├── KingbaseDeleteRecognizer.java │ │ │ │ ├── KingbaseInsertRecognizer.java │ │ │ │ ├── KingbaseOperateRecognizerHolder.java │ │ │ │ ├── KingbaseSelectForUpdateRecognizer.java │ │ │ │ └── KingbaseUpdateRecognizer.java │ │ │ ├── mariadb/ │ │ │ │ ├── MariadbDeleteRecognizer.java │ │ │ │ ├── MariadbInsertRecognizer.java │ │ │ │ ├── MariadbOperateRecognizerHolder.java │ │ │ │ ├── MariadbSelectForUpdateRecognizer.java │ │ │ │ └── MariadbUpdateRecognizer.java │ │ │ ├── mysql/ │ │ │ │ ├── BaseMySQLRecognizer.java │ │ │ │ ├── MySQLDeleteRecognizer.java │ │ │ │ ├── MySQLInsertRecognizer.java │ │ │ │ ├── MySQLOperateRecognizerHolder.java │ │ │ │ ├── MySQLSelectForUpdateRecognizer.java │ │ │ │ └── MySQLUpdateRecognizer.java │ │ │ ├── oceanbase/ │ │ │ │ ├── BaseOceanBaseRecognizer.java │ │ │ │ ├── OceanBaseDeleteRecognizer.java │ │ │ │ ├── OceanBaseInsertRecognizer.java │ │ │ │ ├── OceanBaseOperateRecognizerHolder.java │ │ │ │ ├── OceanBaseSelectForUpdateRecognizer.java │ │ │ │ └── OceanBaseUpdateRecognizer.java │ │ │ ├── oracle/ │ │ │ │ ├── BaseOracleRecognizer.java │ │ │ │ ├── OracleDeleteRecognizer.java │ │ │ │ ├── OracleInsertRecognizer.java │ │ │ │ ├── OracleMultiInsertRecognizer.java │ │ │ │ ├── OracleOperateRecognizerHolder.java │ │ │ │ ├── OracleSelectForUpdateRecognizer.java │ │ │ │ └── OracleUpdateRecognizer.java │ │ │ ├── oscar/ │ │ │ │ ├── BaseOscarRecognizer.java │ │ │ │ ├── OscarDeleteRecognizer.java │ │ │ │ ├── OscarInsertRecognizer.java │ │ │ │ ├── OscarOperateRecognizerHolder.java │ │ │ │ ├── OscarSelectForUpdateRecognizer.java │ │ │ │ └── OscarUpdateRecognizer.java │ │ │ ├── polardbx/ │ │ │ │ ├── PolarDBXDeleteRecognizer.java │ │ │ │ ├── PolarDBXInsertRecognizer.java │ │ │ │ ├── PolarDBXOperateRecognizerHolder.java │ │ │ │ ├── PolarDBXSelectForUpdateRecognizer.java │ │ │ │ └── PolarDBXUpdateRecognizer.java │ │ │ ├── postgresql/ │ │ │ │ ├── BasePostgresqlRecognizer.java │ │ │ │ ├── PostgresqlDeleteRecognizer.java │ │ │ │ ├── PostgresqlInsertRecognizer.java │ │ │ │ ├── PostgresqlOperateRecognizerHolder.java │ │ │ │ ├── PostgresqlSelectForUpdateRecognizer.java │ │ │ │ └── PostgresqlUpdateRecognizer.java │ │ │ └── sqlserver/ │ │ │ ├── BaseSqlServerRecognizer.java │ │ │ ├── SqlServerDeleteRecognizer.java │ │ │ ├── SqlServerInsertRecognizer.java │ │ │ ├── SqlServerOperateRecognizerHolder.java │ │ │ ├── SqlServerSelectForUpdateRecognizer.java │ │ │ └── SqlServerUpdateRecognizer.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ ├── org.apache.seata.sqlparser.SQLRecognizerFactory │ │ ├── org.apache.seata.sqlparser.druid.SQLOperateRecognizerHolder │ │ └── org.apache.seata.sqlparser.util.DbTypeParser │ └── test/ │ └── java/ │ └── org/ │ └── apache/ │ └── seata/ │ └── sqlparser/ │ └── druid/ │ ├── AbstractRecognizerTest.java │ ├── DruidDbTypeParserTest.java │ ├── DruidIsolationTest.java │ ├── DruidLoaderForTest.java │ ├── DruidSQLRecognizerFactoryTest.java │ ├── SupportSqlWhereMethodTest.java │ ├── dm/ │ │ ├── DmDeleteRecognizerTest.java │ │ ├── DmInsertRecognizerTest.java │ │ ├── DmSelectForUpdateRecognizerTest.java │ │ └── DmUpdateRecognizerTest.java │ ├── kingbase/ │ │ ├── KingbaseDeleteRecognizerTest.java │ │ ├── KingbaseInsertRecognizerTest.java │ │ ├── KingbaseSelectForUpdateRecognizerTest.java │ │ └── KingbaseUpdateRecognizerTest.java │ ├── mariadb/ │ │ ├── MariadbDeleteRecognizerTest.java │ │ ├── MariadbInsertRecognizerTest.java │ │ ├── MariadbSelectForUpdateRecognizerTest.java │ │ └── MariadbUpdateRecognizerTest.java │ ├── mysql/ │ │ ├── MySQLDeleteRecognizerTest.java │ │ ├── MySQLInsertRecognizerTest.java │ │ ├── MySQLSelectForUpdateRecognizerTest.java │ │ └── MySQLUpdateRecognizerTest.java │ ├── oceanbase/ │ │ ├── OceanBaseDeleteRecognizerTest.java │ │ ├── OceanBaseInsertRecognizerTest.java │ │ ├── OceanBaseOperateRecognizerHolderTest.java │ │ ├── OceanBaseSelectForUpdateRecognizerTest.java │ │ └── OceanBaseUpdateRecognizerTest.java │ ├── oracle/ │ │ ├── OracleDeleteRecognizerTest.java │ │ ├── OracleInsertRecognizerTest.java │ │ ├── OracleMultiInsertRecognizerTest.java │ │ ├── OracleSelectForUpdateRecognizerTest.java │ │ └── OracleUpdateRecognizerTest.java │ ├── oscar/ │ │ ├── AbstractOscarRecognizerTest.java │ │ ├── OscarDeleteRecognizerTest.java │ │ ├── OscarInsertRecognizerTest.java │ │ ├── OscarOperateRecognizerHolderTest.java │ │ ├── OscarSelectForUpdateRecognizerTest.java │ │ └── OscarUpdateRecognizerTest.java │ ├── polardbx/ │ │ ├── AbstractPolarDBXRecognizerTest.java │ │ ├── PolarDBXDeleteRecognizerTest.java │ │ ├── PolarDBXInsertRecognizerTest.java │ │ ├── PolarDBXOperateRecognizerHolderTest.java │ │ ├── PolarDBXSelectForUpdateRecognizerTest.java │ │ └── PolarDBXUpdateRecognizerTest.java │ ├── postgresql/ │ │ ├── PostgresqlDeleteRecognizerTest.java │ │ ├── PostgresqlInsertRecognizerTest.java │ │ ├── PostgresqlSelectForUpdateRecognizerTest.java │ │ └── PostgresqlUpdateRecognizerTest.java │ └── sqlserver/ │ ├── SqlServerDeleteRecognizerTest.java │ ├── SqlServerInsertRecognizerTest.java │ ├── SqlServerOperateRecognizerHolderTest.java │ ├── SqlServerSelectForUpdateRecognizerTest.java │ └── SqlServerUpdateRecognizerTest.java ├── style/ │ ├── copyright │ └── seata_codeStyle.xml ├── tcc/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── rm/ │ │ │ └── tcc/ │ │ │ ├── RMHandlerTCC.java │ │ │ ├── TCCResource.java │ │ │ ├── TCCResourceManager.java │ │ │ ├── api/ │ │ │ │ ├── LocalTCC.java │ │ │ │ └── TwoPhaseBusinessAction.java │ │ │ ├── interceptor/ │ │ │ │ ├── TccActionInterceptorHandler.java │ │ │ │ └── parser/ │ │ │ │ └── TccActionInterceptorParser.java │ │ │ ├── json/ │ │ │ │ ├── FastJsonParser.java │ │ │ │ ├── GsonJsonParser.java │ │ │ │ └── JacksonJsonParser.java │ │ │ ├── remoting/ │ │ │ │ └── parser/ │ │ │ │ └── LocalTCCRemotingParser.java │ │ │ └── utils/ │ │ │ └── MethodUtils.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ ├── org.apache.seata.core.model.ResourceManager │ │ ├── org.apache.seata.integration.tx.api.interceptor.parser.InterfaceParser │ │ ├── org.apache.seata.integration.tx.api.json.JsonParser │ │ ├── org.apache.seata.integration.tx.api.remoting.RemotingParser │ │ └── org.apache.seata.rm.AbstractRMHandler │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── rm/ │ │ └── tcc/ │ │ ├── BranchSessionMock.java │ │ ├── NestTccAction.java │ │ ├── NestTccActionImpl.java │ │ ├── NormalTccAction.java │ │ ├── NormalTccActionImpl.java │ │ ├── Param.java │ │ ├── TccAction.java │ │ ├── TccActionImpl.java │ │ ├── TccHookTest.java │ │ ├── TccParam.java │ │ ├── interceptor/ │ │ │ ├── ProxyUtilsTccTest.java │ │ │ └── parser/ │ │ │ └── TccActionInterceptorParserTest.java │ │ ├── json/ │ │ │ └── JsonParserFactoryTest.java │ │ ├── remoting/ │ │ │ └── parser/ │ │ │ └── LocalTCCRemotingParserTest.java │ │ └── spring/ │ │ ├── Business.java │ │ ├── BusinessImpl.java │ │ ├── BusinessProxy.java │ │ ├── GlobalTransactionScannerTest.java │ │ └── tcc/ │ │ ├── LocalTccAction.java │ │ ├── LocalTccActionImpl.java │ │ ├── TccAction.java │ │ └── TccActionImpl.java │ └── resources/ │ ├── file.conf │ └── registry.conf ├── test-suite/ │ ├── seata-benchmark-cli/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── benchmark/ │ │ │ ├── BenchmarkApplication.java │ │ │ ├── BenchmarkRunner.java │ │ │ ├── config/ │ │ │ │ ├── BenchmarkConfig.java │ │ │ │ └── BenchmarkConfigLoader.java │ │ │ ├── constant/ │ │ │ │ └── BenchmarkConstants.java │ │ │ ├── executor/ │ │ │ │ ├── ATModeExecutor.java │ │ │ │ ├── AbstractTransactionExecutor.java │ │ │ │ ├── SagaModeExecutor.java │ │ │ │ ├── TCCModeExecutor.java │ │ │ │ ├── TransactionExecutor.java │ │ │ │ └── WorkloadGenerator.java │ │ │ ├── model/ │ │ │ │ ├── BenchmarkMetrics.java │ │ │ │ └── TransactionRecord.java │ │ │ ├── monitor/ │ │ │ │ └── MetricsCollector.java │ │ │ └── saga/ │ │ │ ├── BenchmarkServiceInvoker.java │ │ │ ├── InventorySagaService.java │ │ │ ├── OrderSagaService.java │ │ │ ├── PaymentSagaService.java │ │ │ └── SimpleSpelExpressionFactory.java │ │ └── resources/ │ │ ├── file.conf │ │ ├── logback.xml │ │ ├── registry.conf │ │ └── seata/ │ │ └── saga/ │ │ └── statelang/ │ │ ├── benchmark_order_saga.json │ │ └── benchmark_simple_saga.json │ ├── test-new-version/ │ │ ├── pom.xml │ │ └── src/ │ │ └── test/ │ │ ├── java/ │ │ │ ├── AppTest.java │ │ │ ├── LocalTransactionWithGlobalLockDataSourceBasicTest.java │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ ├── at/ │ │ │ │ ├── ATModeSupportDataBaseDataTypeTest.java │ │ │ │ ├── DruidDataSourceUtils.java │ │ │ │ ├── mysql/ │ │ │ │ │ └── MysqlUpdateJoinTest.java │ │ │ │ └── oracle/ │ │ │ │ ├── OracleSqlConstant.java │ │ │ │ ├── SupportOracleDataTypeTest.java │ │ │ │ ├── bfile.txt │ │ │ │ ├── bfileUpdate.txt │ │ │ │ └── support_orderle_dataType.sql │ │ │ ├── common/ │ │ │ │ ├── ApplicationKeeper.java │ │ │ │ ├── ConfigurationTestHelper.java │ │ │ │ ├── LockAndCallback.java │ │ │ │ ├── SagaCostPrint.java │ │ │ │ └── loader/ │ │ │ │ ├── EnhancedServiceLoaderTest.java │ │ │ │ ├── LoaderTestImpl1.java │ │ │ │ ├── LoaderTestImpl2.java │ │ │ │ └── LoaderTestSPI.java │ │ │ ├── core/ │ │ │ │ └── rpc/ │ │ │ │ └── netty/ │ │ │ │ ├── BaseNettyClientTest.java │ │ │ │ ├── ChannelManagerTestHelper.java │ │ │ │ ├── CodecTestCheckAuthHandler.java │ │ │ │ ├── MsgVersionHelperTest.java │ │ │ │ ├── MultiProtocolDecoderTest.java │ │ │ │ ├── RmNettyClientTest.java │ │ │ │ ├── TestClientHandler.java │ │ │ │ ├── TestServerHandler.java │ │ │ │ ├── TmNettyClientTest.java │ │ │ │ ├── mockserver/ │ │ │ │ │ ├── Action1.java │ │ │ │ │ ├── Action1Impl.java │ │ │ │ │ ├── GrpcTest.java │ │ │ │ │ ├── MockFastJson2Test.java │ │ │ │ │ ├── MockGrpcServerTest.java │ │ │ │ │ ├── MockServerTest.java │ │ │ │ │ ├── ProtocolTestConstants.java │ │ │ │ │ ├── RmClientTest.java │ │ │ │ │ └── TmClientTest.java │ │ │ │ ├── multiversion/ │ │ │ │ │ ├── MultiVersionCompatibilityTest.java │ │ │ │ │ ├── ServerV1ToClientV1Test.java │ │ │ │ │ ├── ServerV1ToClientV2Test.java │ │ │ │ │ ├── ServerV2ToClientV1Test.java │ │ │ │ │ └── ServerV2ToClientV2Test.java │ │ │ │ └── v1/ │ │ │ │ ├── ClientChannelHandler.java │ │ │ │ ├── HeadMapSerializerTest.java │ │ │ │ ├── ProtocolV1Client.java │ │ │ │ ├── ProtocolV1SerializerTest.java │ │ │ │ ├── ProtocolV1Server.java │ │ │ │ └── ServerChannelHandler.java │ │ │ ├── integration/ │ │ │ │ └── rocketmq/ │ │ │ │ └── SeataMQProducerSendTest.java │ │ │ ├── saga/ │ │ │ │ ├── annotation/ │ │ │ │ │ ├── AnnotationConflictTest.java │ │ │ │ │ ├── BranchSessionMock.java │ │ │ │ │ ├── DualParserIntegrationTest.java │ │ │ │ │ ├── NormalSagaAnnotationAction.java │ │ │ │ │ ├── NormalSagaAnnotationActionImpl.java │ │ │ │ │ ├── SagaParam.java │ │ │ │ │ ├── SagaTransactionalAnnotationAction.java │ │ │ │ │ ├── SagaTransactionalAnnotationActionImpl.java │ │ │ │ │ └── rm/ │ │ │ │ │ └── interceptor/ │ │ │ │ │ └── parser/ │ │ │ │ │ └── SagaActionInterceptorParserTest.java │ │ │ │ └── engine/ │ │ │ │ ├── StateMachineAsyncTests.java │ │ │ │ ├── StateMachineTests.java │ │ │ │ ├── db/ │ │ │ │ │ ├── AbstractServerTest.java │ │ │ │ │ ├── StateMachineDBTests.java │ │ │ │ │ └── mockserver/ │ │ │ │ │ ├── StateMachineAsyncDBMockServerTests.java │ │ │ │ │ └── StateMachineDBMockServerTests.java │ │ │ │ └── mock/ │ │ │ │ ├── DemoException.java │ │ │ │ ├── DemoService.java │ │ │ │ ├── MockGlobalTransaction.java │ │ │ │ ├── MockSagaTransactionTemplate.java │ │ │ │ ├── MockStateHandlerInterceptor.java │ │ │ │ └── MockStateRouterInterceptor.java │ │ │ └── xa/ │ │ │ └── XAModeTest2.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── services/ │ │ │ ├── org.apache.seata.common.loader.LoaderTestSPI │ │ │ ├── org.apache.seata.core.rpc.RegisterCheckAuthHandler │ │ │ ├── org.apache.seata.core.serializer.Serializer │ │ │ ├── org.apache.seata.saga.engine.pcext.StateHandlerInterceptor │ │ │ └── org.apache.seata.saga.engine.pcext.StateRouterInterceptor │ │ ├── basic-test-context.xml │ │ ├── biz.sql │ │ ├── file.conf │ │ ├── logback.xml │ │ ├── protobuf/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── seata/ │ │ │ └── protocol/ │ │ │ └── transcation/ │ │ │ └── grpcMessage.proto │ │ ├── registry.conf │ │ ├── saga/ │ │ │ ├── spring/ │ │ │ │ ├── statemachine_engine_db_mockserver_test.xml │ │ │ │ ├── statemachine_engine_db_test.xml │ │ │ │ └── statemachine_engine_test.xml │ │ │ ├── sql/ │ │ │ │ ├── db2_init.sql │ │ │ │ ├── h2_init.sql │ │ │ │ ├── mysql_init.sql │ │ │ │ └── oracle_init.sql │ │ │ └── statelang/ │ │ │ ├── designer_simple_statelang_with_script.json │ │ │ ├── designer_statelang_with_compensation_and_sub_machine.json │ │ │ ├── simple_statelang.json │ │ │ ├── simple_statelang_param_assignment.json │ │ │ ├── simple_statelang_with_async_state.json │ │ │ ├── simple_statelang_with_catches.json │ │ │ ├── simple_statelang_with_choice.json │ │ │ ├── simple_statelang_with_choice_and_end.json │ │ │ ├── simple_statelang_with_choice_no_default.json │ │ │ ├── simple_statelang_with_compensation.json │ │ │ ├── simple_statelang_with_compensation_and_sub_machine.json │ │ │ ├── simple_statelang_with_compensation_for_recovery.json │ │ │ ├── simple_statelang_with_complex_params.json │ │ │ ├── simple_statelang_with_complex_params_jackson.json │ │ │ ├── simple_statelang_with_loop.json │ │ │ ├── simple_statelang_with_persist_update_mode.json │ │ │ ├── simple_statelang_with_recover_strategy.json │ │ │ ├── simple_statelang_with_retry.json │ │ │ ├── simple_statelang_with_script.json │ │ │ ├── simple_statelang_with_status_matches.json │ │ │ └── simple_statelang_with_userdef_sub_machine_compensation.json │ │ └── table.sql │ └── test-old-version/ │ ├── pom.xml │ └── src/ │ └── test/ │ ├── java/ │ │ └── io/ │ │ └── seata/ │ │ ├── MockTest.java │ │ └── core/ │ │ └── rpc/ │ │ └── netty/ │ │ ├── Action1.java │ │ ├── Action1Impl.java │ │ ├── ProtocolTestConstants.java │ │ ├── RmClientTest.java │ │ └── TmClientTest.java │ └── resources/ │ ├── META-INF/ │ │ └── services/ │ │ └── org.apache.seata.common.loader.LoaderTestSPI │ ├── file.conf │ ├── logback.xml │ ├── registry.conf │ └── table.sql └── tm/ ├── pom.xml └── src/ ├── main/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── seata/ │ │ └── tm/ │ │ ├── DefaultTransactionManager.java │ │ ├── TMClient.java │ │ ├── TransactionManagerHolder.java │ │ └── api/ │ │ ├── BaseTransaction.java │ │ ├── DefaultFailureHandlerImpl.java │ │ ├── DefaultGlobalTransaction.java │ │ ├── FailureHandler.java │ │ ├── FailureHandlerHolder.java │ │ ├── GlobalTransaction.java │ │ ├── GlobalTransactionContext.java │ │ ├── GlobalTransactionRole.java │ │ ├── TMFailureHandler.java │ │ ├── TransactionalExecutor.java │ │ ├── TransactionalTemplate.java │ │ └── transaction/ │ │ ├── NoRollbackRule.java │ │ ├── Propagation.java │ │ ├── RollbackRule.java │ │ ├── SuspendedResourcesHolder.java │ │ ├── TransactionHook.java │ │ ├── TransactionHookAdapter.java │ │ ├── TransactionHookManager.java │ │ └── TransactionInfo.java │ └── resources/ │ └── META-INF/ │ └── services/ │ └── org.apache.seata.core.model.TransactionManager └── test/ ├── java/ │ └── org/ │ └── apache/ │ └── seata/ │ └── tm/ │ ├── DefaultTransactionManagerTest.java │ ├── TMClientTest.java │ ├── TransactionManagerHolderTest.java │ └── api/ │ ├── APITest.java │ ├── DefaultFailureHandlerImplTest.java │ ├── DefaultGlobalTransactionTest.java │ ├── FailureHandlerHolderTest.java │ ├── GlobalTransactionContextTest.java │ ├── MockFailureHandlerImpl.java │ ├── TransactionTemplateTest.java │ └── transaction/ │ ├── MockTransactionManager.java │ ├── MyRuntimeException.java │ ├── NoRollbackRuleTest.java │ ├── RollbackRuleTest.java │ ├── SuspendedResourcesHolderTest.java │ ├── TransactionHookManagerTest.java │ └── TransactionInfoTest.java └── resources/ ├── file.conf └── registry.conf ================================================ FILE CONTENTS ================================================ ================================================ FILE: .asf.yaml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # github: description: ":fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution." homepage: https://seata.apache.org/ labels: - distributed-transaction - consistency - microservice - at - tcc - saga - xa enabled_merge_buttons: squash: true merge: false rebase: false dependabot_alerts: true dependabot_updates: false protected_branches: master: required_status_checks: strict: true required_pull_request_reviews: dismiss_stale_reviews: false required_approving_review_count: 1 develop: required_status_checks: strict: true required_pull_request_reviews: dismiss_stale_reviews: false required_approving_review_count: 1 2.x: required_status_checks: strict: true required_pull_request_reviews: dismiss_stale_reviews: false required_approving_review_count: 1 protected_tags: - "v0.*.*" - "v1.*.*" notifications: commits: notifications@seata.apache.org issues: notifications@seata.apache.org pullrequests: notifications@seata.apache.org discussions: dev@seata.apache.org ================================================ FILE: .gitattributes ================================================ # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # *.js linguist-language=java *.css linguist-language=java *.html linguist-language=java ================================================ FILE: .github/ISSUE_TEMPLATE/BUG_REPORT.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: Bug Report description: If you would like to report an issue to Seata, please use this template. body: - type: markdown attributes: value: Please do not use this issue template to report security vulnerabilities but refer to our [security policy](https://github.com/seata/seata/security/policy). - type: checkboxes attributes: label: Check Ahead options: - label: > I have searched the [issues](https://github.com/seata/seata/issues) of this repository and believe that this is not a duplicate. required: true - label: > I am willing to try to fix this bug myself. required: false - type: textarea attributes: label: Ⅰ. Issue Description validations: required: false - type: textarea attributes: label: Ⅱ. Describe what happened placeholder: > If there is an exception, please attach the exception trace: ``` Just paste your stack trace here! ``` validations: required: false - type: textarea attributes: label: Ⅲ. Describe what you expected to happen validations: required: false - type: textarea attributes: label: Ⅳ. How to reproduce it (as minimally and precisely as possible) placeholder: > 1. xxx 2. xxx 3. xxx Minimal yet complete reproducer code (or URL to code): validations: required: false - type: textarea attributes: label: Ⅴ. Anything else we need to know? validations: required: false - type: textarea attributes: label: Ⅵ. Environment placeholder: > - JDK version(e.g. `java -version`): - Seata client/server version: - Database version: - OS(e.g. `uname -a`): - Others: validations: required: false ================================================ FILE: .github/ISSUE_TEMPLATE/FEATURE_REQUEST.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: Feature Request description: Suggest an idea for Seata body: - type: checkboxes attributes: label: Check Ahead options: - label: > I have searched the [issues](https://github.com/seata/seata/issues) of this repository and believe that this is not a duplicate. required: true - label: > I am willing to try to implement this feature myself. required: false - type: markdown attributes: value: | Please do not use this issue template to report security vulnerabilities but refer to our [security policy](https://github.com/seata/seata/security/policy). **For major feature requests impacting the roadmap**, please submit them to [our Mailing List](mailto:dev@seata.apache.org) for broader discussion! - type: textarea attributes: label: Why you need it? description: Is your feature request related to a problem? Please describe in details - type: textarea attributes: label: How it could be? description: A clear and concise description of what you want to happen. You can explain more about input of the feature, and output of it. - type: textarea attributes: label: Other related information description: Add any other context or screenshots about the feature request here. ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # blank_issues_enabled: false contact_links: - name: Ask a question url: https://github.com/apache/incubator-seata/discussions/categories/q-a about: Ask the community for help ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ - [ ] I have read the [CONTRIBUTING.md](https://github.com/apache/incubator-seata/blob/2.x/CONTRIBUTING.md) guidelines. - [ ] I have registered the PR [changes](https://github.com/apache/incubator-seata/tree/2.x/changes). ### Ⅰ. Describe what this PR did ### Ⅱ. Does this pull request fix one issue? ### Ⅲ. Why don't you add test cases (unit test/integration test)? ### Ⅳ. Describe how to verify it ### Ⅴ. Special notes for reviews ================================================ FILE: .github/workflows/build.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: "build" on: push: branches: [ 2.x, develop, master ] pull_request: branches: [ 2.x, develop, master ] types: [opened, reopened, synchronize] paths-ignore: - '**.md' jobs: # job 1: Test based on java 8, 17, 21 and 25. build: name: "build" services: redis: image: redis:7.2 ports: - 6379:6379 options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3 nacos: image: nacos/nacos-server:v2.4.2 ports: - 8848:8848 env: MODE: standalone SPRING_SECURITY_ENABLED: false options: --health-cmd="curl -f http://localhost:8848/nacos" --health-interval=10s --health-timeout=5s --health-retries=3 --health-start-period=30s runs-on: ubuntu-latest strategy: fail-fast: false matrix: java: [ 8, 17, 21, 25 ] steps: # step 1 - name: "Checkout" uses: actions/checkout@v3 # step 2 - name: "Use Python 3.x" uses: actions/setup-python@v2 with: python-version: '3.12' # step 3 - name: "Set up Java JDK" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: ${{ matrix.java }} # step 4 - name: "Print maven version" run: ./mvnw -version # step 5 - name: "Restore local maven repository cache" uses: actions/cache/restore@v4 id: cache-maven-repository with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }} restore-keys: | ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} ${{ runner.os }}-maven- # step 6.1 - name: "Test, Check PMD, Check license with Maven and Java8" if: matrix.java == '8' run: | ./mvnw -T 4C clean test \ -Dpmd.skip=false -Dlicense.skip=false -DredisCaseEnabled=true -DnacosCaseEnabled=true \ -e -B \ -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \ -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=info \ 2>&1 | tee build.log | while read line; do echo "$line" if [[ "$line" == *"PMD Failure"* ]]; then echo "::error::PMD Violations Detected! Check Details Above!" fi done exit_code=${PIPESTATUS[0]} exit $exit_code # step 6.2 - name: "Test with Maven and Java${{ matrix.java }}" if: matrix.java != '8' run: | ./mvnw -T 4C clean test \ -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; # step 7 - name: "Save local maven repository cache" uses: actions/cache/save@v4 if: steps.cache-maven-repository.outputs.cache-hit != 'true' with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }} # step 8 - name: "Codecov" if: matrix.java == '8' uses: codecov/codecov-action@v4.0.1 with: token: ${{ secrets.CODECOV_TOKEN }} version: v0.6.0 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} # job 2: Build and Release on 'arm64v8/ubuntu' OS (Skip tests). build_arm64-binary: runs-on: ubuntu-24.04-arm if: ${{ github.event_name == 'push' && (github.ref_name == 'develop' || github.ref_name == 'snapshot' || github.ref_name == '2.x') }} strategy: fail-fast: false steps: # step 1 - name: "Checkout" uses: actions/checkout@v3 # step 2 - name: "Set up Java JDK 25" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: 25 # step 4 - name: "Print maven version" run: ./mvnw -version # step 3 - name: "Build with Maven on 'ubuntu:24.04-arm' OS (Skip tests)" run: | ./mvnw -T 4C clean install \ -Prelease-seata \ -DskipTests \ -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn ================================================ FILE: .github/workflows/codeql-analysis.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: "CodeQL" on: pull_request: # The branches below must be a subset of the branches above branches: [ 2.x, develop ] schedule: - cron: '36 19 * * 6' jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write strategy: fail-fast: false matrix: language: [ 'java' ] steps: # step 1 - name: "Checkout" uses: actions/checkout@v3 # step 2: Initializes the CodeQL tools for scanning. - name: "Initialize CodeQL" uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} - name: "Set up Java JDK25" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: 25 - run: ./mvnw -T 4C clean install -DskipTests # step 3 - name: "Perform CodeQL Analysis" uses: github/codeql-action/analyze@v3 with: category: "/language:${{matrix.language}}" ================================================ FILE: .github/workflows/license-checker.yaml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: License checker on: pull_request: branches: [ 2.x, develop, master ] jobs: check-license: runs-on: ubuntu-latest steps: # step 1 clear cache - name: Clear cache directory first before trying to restore from cache run: sudo rm -rf $(go env GOMODCACHE) && sudo rm -rf $(go env GOCACHE) shell: bash # step 2 checkout - name: Checkout uses: actions/checkout@v3 # step 3 https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/ - uses: actions/setup-node@v3 with: node-version: '14.x' # step 4 check license - name: Check License Header uses: apache/skywalking-eyes/header@8fc52baabc14c86294d96034bcc194cfa7f76b05 with: log: info config: .licenserc.yaml mode: check # step 5 check dependencies - name: Check Dependencies' License uses: apache/skywalking-eyes/dependency@8fc52baabc14c86294d96034bcc194cfa7f76b05 with: log: info config: .licenserc.yaml mode: check ================================================ FILE: .github/workflows/publish-docker.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: "Publish Docker Image" on: push: branches: [ snapshot, "*.*.*" ] #tags: [ "*" ] #This schedule only takes effect in the default branch schedule: - cron: '0 16 * * *' #GMT+0 jobs: # job 1 publish-images-to-dockerhub: name: "Publish images to DockerHub" runs-on: ubuntu-latest strategy: fail-fast: false matrix: java: [ 8, 17, 21, 25 ] steps: # step 1 - name: "Checkout" uses: actions/checkout@v3 # step 2 - name: "Setup Java JDK" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: ${{ matrix.java }} # step 3 - name: "Print maven version" run: ./mvnw -version # step 4 based on java8 - name: "Publish images to DockerHub based on java8" if: matrix.java == 8 env: REGISTRY_USERNAME: ${{ secrets.DOCKERHUB_USER }} REGISTRY_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} run: | if [ "${{ github.ref_name }}" == "develop" ] || [ "${{ github.ref_name }}" == "snapshot" || [ "${{ github.ref_name }}" == "2.x" ]; then ./mvnw -T 4C clean package -Dimage.name=eclipse-temurin:8u422-b05-jdk -Pimage -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; else ./mvnw -T 4C clean package -Dimage.name=eclipse-temurin:8u422-b05-jdk -Pimage,release-image-based-on-java8 -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; fi # step 4 based on java17 - name: "Publish images to DockerHub based on java17" if: ${{ matrix.java == 17 && github.ref_name != 'develop' && github.ref_name != 'snapshot' && github.ref_name != '2.x' }} env: REGISTRY_USERNAME: ${{ secrets.DOCKERHUB_USER }} REGISTRY_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} run: | ./mvnw -T 4C clean package -Dimage.name=eclipse-temurin:17.0.12_7-jdk -Pimage,release-image-based-on-java17 -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; # step 5 based on java21 - name: "Publish images to DockerHub based on java21" if: ${{ matrix.java == 21 && github.ref_name != 'develop' && github.ref_name != 'snapshot' && github.ref_name != '2.x' }} env: REGISTRY_USERNAME: ${{ secrets.DOCKERHUB_USER }} REGISTRY_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} run: | ./mvnw -T 4C clean package -Dimage.name=eclipse-temurin:21.0.4_7-jdk -Pimage,release-image-based-on-java21 -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; # step 6 based on java25 - name: "Publish images to DockerHub based on java25" if: ${{ matrix.java == 25 && github.ref_name != 'develop' && github.ref_name != 'snapshot' && github.ref_name != '2.x' }} env: REGISTRY_USERNAME: ${{ secrets.DOCKERHUB_USER }} REGISTRY_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} run: | ./mvnw -T 4C clean package -Dimage.name=eclipse-temurin:25-jdk -Pimage,release-image-based-on-java25 -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; ================================================ FILE: .github/workflows/publish-ossrh.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: "Publish OSSRH" on: false # push: # branches: [ develop, 2.x, snapshot, "*.*.*" ] jobs: # job 1 publish-to-OSSRH: name: "Publish to OSSRH" runs-on: ubuntu-latest strategy: fail-fast: false steps: # step 1 - name: "Checkout" uses: actions/checkout@v2.4.0 # step 2 - name: "Setup Java JDK" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: 8 server-id: oss_seata server-username: OSSRH_USERNAME # Environment variable name for the username for authentication to the Apache Maven repository. Default is $GITHUB_ACTOR server-password: OSSRH_PASSWORD # Environment variable name for password or token for authentication to the Apache Maven repository. Default is $GITHUB_TOKEN gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: GPG_PASSPHRASE # Environment variable name for the GPG private key passphrase. Default is $GPG_PASSPHRASE # step 3 - name: "Print maven version" run: ./mvnw -version # step 4 - name: "Publish to OSSRH" env: OSSRH_USERNAME: ${{ secrets.OSSRH_USER }} OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} run: | ./mvnw -T 4C clean deploy -Prelease,release-by-github-actions -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn ================================================ FILE: .github/workflows/rerun-build.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: Rerun build on: workflow_run: workflows: ["build"] types: - completed permissions: actions: write jobs: rerun: if: github.event.workflow_run.conclusion == 'failure' && fromJSON(github.event.workflow_run.run_attempt) < 2 runs-on: ubuntu-latest steps: - name: Check if failure is due to spotless id: check-spotless env: GH_REPO: ${{ github.repository }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | LOGS=$(gh run view ${{ github.event.workflow_run.id }} --log) if echo "$LOGS" | grep -i "Run 'mvn spotless:apply' to fix these violations."; then echo "spotless_failure=true" >> $GITHUB_OUTPUT echo "Build failed due to specific spotless instruction. Will not retry." else echo "spotless_failure=false" >> $GITHUB_OUTPUT echo "Build failed for other reasons or a different spotless issue. Will retry." fi - name: rerun ${{ github.event.workflow_run.id }} if: steps.check-spotless.outputs.spotless_failure != 'true' env: GH_REPO: ${{ github.repository }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh run watch ${{ github.event.workflow_run.id }} > /dev/null 2>&1 gh run rerun ${{ github.event.workflow_run.id }} --failed ================================================ FILE: .github/workflows/spotless-check.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: Spotless Check on: push: branches: [ 2.x, develop, master ] pull_request: branches: [ 2.x, develop, master ] types: [opened, reopened, synchronize] paths-ignore: - '**.md' jobs: spotless: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - name: Run Spotless Check run: ./mvnw spotless:check ================================================ FILE: .github/workflows/test-druid.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: "test-druid" on: push: branches: [ test*, "*.*.*" ] jobs: test-druid: services: redis: image: redis:7.2 ports: - 6379:6379 options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3 nacos: image: nacos/nacos-server:v2.4.2 ports: - 8848:8848 env: MODE: standalone SPRING_SECURITY_ENABLED: false options: --health-cmd="curl -f http://localhost:8848/nacos" --health-interval=10s --health-timeout=5s --health-retries=3 --health-start-period=30s name: "test-druid" runs-on: ubuntu-24.04 strategy: max-parallel: 4 fail-fast: false matrix: druid: [ 1.2.25, # 1.2.24, #The source code depends on guava, resulting in a class not found, see the commit https://github.com/alibaba/druid/commit/f060c2701587948380bd0d07d5baf4f774c06e8a#diff-5200f514252efbc0c4b2dc51ebad5d840b4b3065b9556eb4368bd3476d4c220eR25 1.2.23, 1.2.22, 1.2.21 # not support druid:1.2.20 # 1.2.20, # 1.2.19, # #1.2.18, # Unit test triggered a bug in Druid, see the commit https://github.com/alibaba/druid/commit/6c493f852852fb287ed5fd31ee16c27ead0ea5cf # #1.2.17, # Unit test triggered a bug in Druid, see the commit https://github.com/alibaba/druid/commit/6c493f852852fb287ed5fd31ee16c27ead0ea5cf # 1.2.16, # 1.2.15, # 1.2.14, # 1.2.13, # 1.2.12, # 1.2.11, # 1.2.10, # 1.2.9, # 1.2.8, # 1.2.7, # 1.2.6, # 1.2.5, # 1.2.4, # 1.2.3, # 1.2.2, # 1.2.1, # 1.2.0, # not support druid:1.1.x #1.1.24, #1.1.23, #1.1.22, #1.1.21, #1.1.20, ] steps: # step 1 - name: "Checkout" uses: actions/checkout@v3 # step 2 - name: "Set up Java JDK" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: 8 # step 3 - name: "Print maven version" run: ./mvnw -version # step 4 - name: "Test with Maven and Druid ${{ matrix.druid }}" run: | ./mvnw -T 4C clean test \ -Ddruid.version=${{ matrix.druid }} \ -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; ================================================ FILE: .github/workflows/test-ubuntu.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: "test-ubuntu" on: push: branches: [ test*, "*.*.*" ] jobs: # job 1 test: name: "test" services: redis: image: redis:7.2 ports: - 6379:6379 options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3 nacos: image: nacos/nacos-server:v2.4.2 ports: - 8848:8848 env: MODE: standalone SPRING_SECURITY_ENABLED: false options: --health-cmd="curl -f http://localhost:8848/nacos" --health-interval=10s --health-timeout=5s --health-retries=3 --health-start-period=30s runs-on: "${{ matrix.os }}" strategy: max-parallel: 6 fail-fast: false matrix: java: [ 8, 11, 17, 21, 25 ] os: [ ubuntu-24.04, ] springboot: [ 2.7.18 -D spring-framework-bom.version=5.3.31, 2.6.15 -D spring-framework-bom.version=5.3.27, 2.5.15 -D spring-framework-bom.version=5.3.27, 2.4.13 -D spring-framework-bom.version=5.3.13, 2.3.12.RELEASE -D spring-framework-bom.version=5.2.15.RELEASE, # 2.2.13.RELEASE -D spring-framework-bom.version=5.2.12.RELEASE, #2.1.18.RELEASE, #2.0.9.RELEASE, ] steps: # step 1 - name: "Checkout" uses: actions/checkout@v3 # step 2 - name: "Use Python 3.x" uses: actions/setup-python@v2 with: python-version: '3.12' # step 3 - name: "Set up Java JDK" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: ${{ matrix.java }} # step 4 ## step 4.1: for Ubuntu and MacOS - name: "Test with Maven on '${{ matrix.os }}' OS" run: | ./mvnw -T 4C clean test -P args-for-client-test -Dspring-boot.version=${{ matrix.springboot }} -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; # job 2 test-springboot3x: name: "test-springboot3.x" services: redis: image: redis:7.2 ports: - 6379:6379 options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3 nacos: image: nacos/nacos-server:v2.4.2 ports: - 8848:8848 env: MODE: standalone SPRING_SECURITY_ENABLED: false options: --health-cmd="curl -f http://localhost:8848/nacos" --health-interval=10s --health-timeout=5s --health-retries=3 --health-start-period=30s runs-on: "${{ matrix.os }}" strategy: max-parallel: 6 fail-fast: false matrix: java: [ 17, 21, 25 ] os: [ ubuntu-24.04, ] springboot: [ 3.3.0 -D spring-framework-bom.version=6.1.18 -D mockito.version=5.11.0 -D junit-jupiter.version=5.10.2, 3.2.0 -D spring-framework-bom.version=6.1.1 -D mockito.version=5.7.0 -D junit-jupiter.version=5.10.1, 3.1.6 -D spring-framework-bom.version=6.0.14 -D mockito.version=5.3.1 -D junit-jupiter.version=5.9.3, 3.0.13 -D spring-framework-bom.version=6.0.14, ] steps: # step 1 - name: "Checkout" uses: actions/checkout@v3 # step 2 - name: "Use Python 3.x" uses: actions/setup-python@v2 with: python-version: '3.12' # step 3 - name: "Set up Java JDK" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: ${{ matrix.java }} # step 4 ## step 4.1: for Ubuntu and MacOS - name: "Test with Maven on '${{ matrix.os }}' OS" if: ${{ ! startsWith(matrix.os, 'windows') }} run: | ./mvnw -T 4C clean test -P args-for-client-test -Dspring-boot.version=${{ matrix.springboot }} -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; ## step 4.2: for Windows - name: "Build with Maven on 'windows' OS (Skip tests)" if: ${{ startsWith(matrix.os, 'windows') }} run: | # Skip tests, because too many errors in unit-test. ./mvnw.cmd -version; ./mvnw.cmd clean install -P args-for-client-test -DskipTests -D spring-boot.version=${{ matrix.springboot }} -e -B -D org.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; # job 3 test-arm64: name: "test-arm64" runs-on: ubuntu-24.04-arm strategy: max-parallel: 6 fail-fast: false matrix: springboot: [ 2.7.18 -Dspring-framework-bom.version=5.3.31, # The maven-compiler-plugin will throw an error for an unknown reason. 2.6.15 -Dspring-framework-bom.version=5.3.27, # The maven-compiler-plugin will throw an error for an unknown reason. 2.5.15 -Dspring-framework-bom.version=5.3.27, # The maven-compiler-plugin will throw an error for an unknown reason. 2.4.13 -Dspring-framework-bom.version=5.3.13, 2.3.12.RELEASE -Dspring-framework-bom.version=5.2.15.RELEASE, 2.2.13.RELEASE -Dspring-framework-bom.version=5.2.12.RELEASE, #2.1.18.RELEASE, #2.0.9.RELEASE, ] steps: # step 1 - name: "Checkout" uses: actions/checkout@v3 # step 2 - name: "Set up Java JDK 25" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: 25 # step 4 - name: "Print maven version" run: ./mvnw -version # step 3 - name: "Build with Maven on 'arm64v8/ubuntu:24.04' OS (Skip tests)" run: | ./mvnw -T 4C clean install -Dspring-boot.version=${{ matrix.springboot }} \ -Prelease-seata \ -DskipTests \ -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn ================================================ FILE: .github/workflows/test.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # name: "test" on: push: branches: [ test*, "*.*.*" ] jobs: # job 1 test: name: "test" runs-on: "${{ matrix.os }}" strategy: max-parallel: 6 fail-fast: false matrix: java: [ 8, 11, 17, 21 ] os: [ macos-14, windows-2022, # Skip tests, because too many errors in unit-test. ] springboot: [ 2.7.18 -D spring-framework-bom.version=5.3.31, 2.6.15 -D spring-framework-bom.version=5.3.27, 2.5.15 -D spring-framework-bom.version=5.3.27, 2.4.13 -D spring-framework-bom.version=5.3.13, 2.3.12.RELEASE -D spring-framework-bom.version=5.2.15.RELEASE, # 2.2.13.RELEASE -D spring-framework-bom.version=5.2.12.RELEASE, #2.1.18.RELEASE, #2.0.9.RELEASE, ] steps: # step 1 - name: "Checkout" uses: actions/checkout@v3 # step 2 - name: "Use Python 3.x" uses: actions/setup-python@v2 with: python-version: '3.12' # step 3 - name: "Set up Java JDK" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: ${{ matrix.java }} # step 4 ## step 4.1: for Ubuntu and MacOS - name: "Test with Maven on '${{ matrix.os }}' OS" if: ${{ ! startsWith(matrix.os, 'windows') }} run: | if [[ "${{ matrix.os }}" =~ "macos" ]]; then python3 -m ensurepip --upgrade; python3 -m pip install --upgrade pip setuptools; if ! python3 -c "import distutils" &>/dev/null; then python3 -m pip install --upgrade setuptools fi ./mvnw -T 4C clean test -P args-for-client-test -P arrch64 -Dspring-boot.version=${{ matrix.springboot }} -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; else ./mvnw -T 4C clean test -P args-for-client-test -Dspring-boot.version=${{ matrix.springboot }} -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; fi ## step 4.2: for Windows - name: "Build with Maven on 'windows' OS (Skip tests)" if: ${{ startsWith(matrix.os, 'windows') }} run: | # Skip tests, because too many errors in unit-test. ./mvnw.cmd -version; ./mvnw.cmd clean install -P args-for-client-test -DskipTests -D spring-boot.version=${{ matrix.springboot }} -e -B -D org.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; # job 2 test-springboot3x: name: "test-springboot3.x" runs-on: "${{ matrix.os }}" strategy: max-parallel: 6 fail-fast: false matrix: java: [ 17, 21, 25 ] os: [ macos-14, windows-2022, # Skip tests, because too many errors in unit-test. ] springboot: [ 3.3.0 -D spring-framework-bom.version=6.1.18 -D mockito.version=5.11.0 -D junit-jupiter.version=5.10.2, 3.2.0 -D spring-framework-bom.version=6.1.1 -D mockito.version=5.7.0 -D junit-jupiter.version=5.10.1, 3.1.6 -D spring-framework-bom.version=6.0.14 -D mockito.version=5.3.1 -D junit-jupiter.version=5.9.3, 3.0.13 -D spring-framework-bom.version=6.0.14, ] steps: # step 1 - name: "Checkout" uses: actions/checkout@v3 # step 2 - name: "Use Python 3.x" uses: actions/setup-python@v2 with: python-version: '3.12' # step 3 - name: "Set up Java JDK" uses: actions/setup-java@v3.12.0 with: distribution: 'zulu' java-version: ${{ matrix.java }} # step 4 ## step 4.1: for Ubuntu and MacOS - name: "Test with Maven on '${{ matrix.os }}' OS" if: ${{ ! startsWith(matrix.os, 'windows') }} run: | if [[ "${{ matrix.os }}" =~ "macos" ]]; then python3 -m ensurepip --upgrade; python3 -m pip install --upgrade pip setuptools; if ! python3 -c "import distutils" &>/dev/null; then python3 -m pip install --upgrade setuptools fi ./mvnw -T 4C clean test -P args-for-client-test -P arrch64 -Dspring-boot.version=${{ matrix.springboot }} -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; else ./mvnw -T 4C clean test -P args-for-client-test -Dspring-boot.version=${{ matrix.springboot }} -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; fi ## step 4.2: for Windows - name: "Build with Maven on 'windows' OS (Skip tests)" if: ${{ startsWith(matrix.os, 'windows') }} run: | # Skip tests, because too many errors in unit-test. ./mvnw.cmd -version; ./mvnw.cmd clean install -P args-for-client-test -DskipTests -D spring-boot.version=${{ matrix.springboot }} -e -B -D org.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; ================================================ FILE: .gitignore ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # # maven ignore target/ *.jar *.war *.zip *.tar *.tar.gz *.class .flattened-pom.xml dependency-reduced-pom.xml .mvn/wrapper/maven-wrapper.jar # eclipse ignore .settings/ .project .classpath .factorypath # vscode ignore .vscode # idea ignore .idea/ *.ipr *.iml *.iws # temp ignore *.log *.cache *.diff *.patch *.tmp /distribution/bin/ /distribution/conf/ /distribution/lib/ /distribution/ext/ /distribution/logs/ /distribution/*/bin/ /distribution/*/conf/ /distribution/*/lib/ /distribution/*/logs/ /distribution/*/ext/ /server/*root.* /server/.root.* /server/sessionStore/ /server/db_store/ /sessionStore/ /vgroupStore /vgroupStore/** /test/sessionStore/ /distribution/sessionStore/ /distribution/*/sessionStore/ /file_store/ # system ignore .DS_Store Thumbs.db *.orig #h2 *.db /console/src/main/resources/static/css/ /console/src/main/resources/static/img/ /console/src/main/resources/static/js/ /console/src/main/resources/static/saga-statemachine-designer/ /console/src/main/resources/static/index.html /console/src/main/resources/static/version.json ================================================ FILE: .licenserc.yaml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # header: license: spdx-id: Apache-2.0 copyright-owner: Apache Software Foundation content: | Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You 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. paths-ignore: - 'LICENSE' - 'NOTICE' - 'DISCLAIMER' - '**/org/apache/seata/sqlparser/antlr/**/*.g4' - 'distribution/licenses/**' - 'distribution/LICENSE' - 'distribution/LICENSE-*' - 'distribution/NOTICE' - 'distribution/NOTICE-*' - '**/*.txt' #txt files not support comments - '**/*.json' #json files not support comments - '**/*.png' - '**/*.jpg' - '**/*.jpeg' - '**/*.ico' - '**/*.tokens' - '**/*.interp' - '**/.babelrc' #json format - '**/.eslintrc' #json format - '**/.prettierrc' #json format comment: on-failure dependency: files: - pom.xml - saga/seata-saga-statemachine-designer/package.json - console/src/main/resources/static/console-fe/package.json excludes: - name: org.apache.seata:* recursive: false # exclude manually confirmed license # BSD-3-Clause https://www.npmjs.com/package/universal-canvas-context - name: universal-canvas-context recursive: false # BSD-3-Clause https://www.npmjs.com/package/universal-element - name: universal-element recursive: false # remove later https://www.npmjs.com/package/@gcanvas/core - name: "@gcanvas/core" recursive: true # remove later https://www.npmjs.com/package/universal-env - name: universal-env recursive: true ================================================ FILE: .mvn/wrapper/maven-wrapper.properties ================================================ # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you 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 # # https://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. distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar ================================================ FILE: .travis.yml ================================================ # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # language: java sudo: false # faster builds jdk: - openjdk8 - openjdk17 - openjdk21 cache: directories: - $HOME/.m2 install: true before_script: - if [ "$TRAVIS_JDK_VERSION" == "openjdk8" ]; then export IMAGE_NAME="eclipse-temurin:8u422-b05-jre"; fi - if [ "$TRAVIS_JDK_VERSION" == "openjdk17" ]; then export IMAGE_NAME="eclipse-temurin:17.0.12_7-jre"; fi - if [ "$TRAVIS_JDK_VERSION" == "openjdk21" ]; then export IMAGE_NAME="eclipse-temurin:21.0.4_7-jre"; fi script: - if [ "$TRAVIS_BRANCH" == "develop" ] && [ "$TRAVIS_PULL_REQUEST" == false ]; then travis_wait 30 ./mvnw clean test -DskipTests=false -Dcheckstyle.skip=false -Dlicense.skip=false -P image -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; else travis_wait 30 ./mvnw clean test -DskipTests=false -Dcheckstyle.skip=false -Dlicense.skip=false -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; fi after_success: - bash <(curl -s https://codecov.io/bash) ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at dev-seata@googlegroups.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing to Apache Seata(incubating) It is warmly welcomed if you have interest to hack on Apache Seata(incubating). Firstly, we encourage this kind of willingness very much. And here is a list of contributing guides for you. [[中文贡献文档](./CONTRIBUTING_CN.md)] ## Topics * [Reporting security issues](#reporting-security-issues) * [Reporting general issues](#reporting-general-issues) * [Code and doc contribution](#code-and-doc-contribution) * [Test case contribution](#test-case-contribution) * [Engage to help anything](#engage-to-help-anything) * [Code Style](#code-style) ## Reporting security issues Security issues are always treated seriously. As our usual principle, we discourage anyone to spread security issues publicly. If you find a security issue of Apache Seata(incubating), please do not discuss it in public and do not open a public issue. Instead, we encourage you to send us a private email to [private@seata.apache.org](mailto:private@seata.apache.org) to report this. ## Reporting general issues To be honest, we view every user of Seata as a very kind contributor. After using Seata, you may have some feedback for the project. If yes, feel free to open an issue via [NEW ISSUE](https://github.com/apache/incubator-seata/issues/new/choose). Since we collaborate on the project in a distributed way, we appreciate **WELL-WRITTEN**, **DETAILED**, **EXPLICIT** issue reports. To make the communication more efficient, we discourage duplication of issues. If you find an issue already existing, please add your details in comments under the existing issue instead of creating a new one. To make the issue details as standard as possible, we setup an [ISSUE TEMPLATE](./.github/ISSUE_TEMPLATE) for issue reporters. Please **BE SURE** to follow the instructions in the template when opening a new issue. There are a lot of cases where you could open an issue: * bug report * feature request * performance issues * feature proposal * feature design * help wanted * incomplete documentation * test improvement * any questions on project * and so on Also we must remind you that while creating a new issue, be sure to remove the sensitive data from your post. Sensitive data could be passwords, secret keys, network locations, private business data and so on. ## Code and doc contribution Every action to make project Seata better is encouraged. On GitHub, every improvement for Seata could be via a PR (short for pull request). * If you find a typo, try to fix it! * If you find a bug, try to fix it! * If you find some redundant codes, try to remove them! * If you find some test cases missing, try to add them! * If you could enhance a feature, please **DO NOT** hesitate! * If you find code implicit, try to add comments to make it clear! * If you find code ugly, try to refactor that! * If you can help to improve documents, it could not be better! * If you find incorrect documents, try to correct them! * ... It's quite impossible to list all of these. Remember one principle: > WE ARE LOOKING FORWARD TO ANY PR FROM YOU. Since you are ready to improve Seata with a PR, we suggest you could take a look at the PR rules here. * [Workspace Preparation](#workspace-preparation) * [Branch Definition](#branch-definition) * [Commit Rules](#commit-rules) * [PR Description](#pr-description) ### Workspace Preparation To put forward a PR, we assume you have a registered GitHub account. Then you could finish the preparation in the following steps: 1. **FORK** Seata to your repository. To make this work, you just need to click the button Fork in right-left of [apache/incubator-seata](https://github.com/apache/incubator-seata) main page. Then you will end up with your repository in `https://github.com//incubator-seata`, in which `your-username` is your GitHub username. 1. **CLONE** your own repository to develop locally. Use `git clone git@github.com:/incubator-seata.git` to clone the repository into your local machine. Then you can create new branches to apply your changes. 1. **Set Remote** upstream to be `git@github.com:apache/incubator-seata.git` using the following two commands: ```bash git remote add upstream git@github.com:apache/incubator-seata.git git remote set-url --push upstream no-pushing ``` With this remote setting, you can check your git remote configuration like this: ```shell $ git remote -v origin git@github.com:/incubator-seata.git (fetch) origin git@github.com:/incubator-seata.git (push) upstream git@github.com:apache/incubator-seata.git (fetch) upstream no-pushing (push) ``` Adding this, we can easily synchronize local branches with upstream branches. ### Branch Definition Right now we assume every contribution via pull request is for [branch development](https://github.com/apache/incubator-seata/tree/2.x) in Seata. Before contributing, being aware of branch definition would help a lot. As a contributor, keep in mind that every contribution via pull request is for branch developments. While in project Seata, there are several other branches, we generally call them release branches(such as 0.6.0,0.6.1), feature branches, hotfix branches and master branch. When officially releasing a version, there will be a release branch and named with the version number. After the release, we will merge the commits of the release branch into the master branch. When we find that there is a bug in a certain version, we will decide whether to fix it in a later version or in a specific hotfix version. When we decide to fix in the hotfix version, we will checkout the hotfix branch based on the corresponding release branch, perform code repair and verification, merge it into the development branch and the master branch. For larger features, we will pull out the feature branch for development and verification. ### Commit Rules In Seata, we take two rules very seriously when committing: * [Commit Message](#commit-message) * [Commit Content](#commit-content) #### Commit Message Commit message could help reviewers better understand what the purpose of submitted PR is. It could help accelerate the code review procedure as well. We encourage contributors to use **EXPLICIT** commit message rather than ambiguous ones. In general, we advocate the following commit message type: * docs: xxxx. For example, "docs: add docs about Seata cluster installation". * feature: xxxx.For example, "feature: support oracle in AT mode". * bugfix: xxxx. For example, "bugfix: fix panic when input nil parameter". * refactor: xxxx. For example, "refactor: simplify to make codes more readable". * test: xxx. For example, "test: add unit test case for func InsertIntoArray". * other readable and explicit expression ways. On the other side, we discourage contributors from committing message like the following ways: * ~~fix bug~~ * ~~update~~ * ~~add doc~~ If you get lost, please check [How to Write a Git Commit Message](http://chris.beams.io/posts/git-commit/) for more details. #### Commit Content Commit content represents all content changes included in one commit. You need to include things in one single commit which could help the reviewer without having to look at another commit. In another words, contents in one single commit should pass the CI to avoid code mess. In brief, there are three minor rules for you to keep in mind: * avoid very large changes in a commit; * complete and reviewable for each commit. * check git config(`user.name`, `user.email`) when committing to ensure that it is associated with your GitHub ID. ```bash git config --get user.name git config --get user.email ``` * when submitting a PR, please add a brief description of the current changes to the X.X.X.md file under the 'changes/' folder In addition, in the code change part, we suggest that all contributors should read the [code style of Seata](#code-style). Apart from having a standard commit message and appropriate commit content, we do take more emphasis on code review. ### PR Description PR is the only way to make changes to Seata project files. To help reviewers better understand your changes, PR description should be concise. We encourage contributors to follow the [PR template](./.github/PULL_REQUEST_TEMPLATE.md) to create a pull request. ## Test case contribution Any test case would be welcomed. Currently, Seata function test cases are high priority. * For unit test, you need to create a test file named `xxxTest.java` in the test directory of the same module. We recommend you to use the junit5 UT framework * For integration test, you can put the integration test in the test directory or the seata-test module. It is recommended to use the mockito test framework. ## Engage to help with anything We choose GitHub as the primary place to collaborate on Seata. So the latest updates of Seata are always here. Although contributions via PR is an explicit way to help, we still call for any other ways. * reply to other's issues if you could; * help solve other user's problems; * help review other's PR design; * help review other's codes in PR; * discuss about Seata to make things clearer; * advocate Seata technology beyond GitHub; * write blogs on Seata and so on. ## Code Style Seata code style complies with Alibaba Java Coding Guidelines. ### Guidelines [Alibaba-Java-Coding-Guidelines](https://alibaba.github.io/Alibaba-Java-Coding-Guidelines/) ### Installing IDE Plugin(not necessary) *It is not necessary to install it, although you can, if you want to find a problem when you are coding.* #### idea IDE [p3c-idea-plugin-install](https://github.com/alibaba/p3c/blob/master/idea-plugin/README.md) #### eclipse IDE [p3c-eclipse-plugin-install](https://github.com/alibaba/p3c/blob/master/eclipse-plugin/README.md) To summarize, **ANY HELP IS CONTRIBUTION AND APPRECIATED.** ================================================ FILE: CONTRIBUTING_CN.md ================================================ # 为 Apache Seata(incubating) 做贡献 如果你有兴趣寻找关于Apache Seata(incubating)的漏洞,我们会热烈欢迎。首先,我们非常鼓励这种意愿。这是为您提供的贡献指南列表。 [[English Contributing Document](./CONTRIBUTING.md)] ## 话题 * [报告安全问题](#报告安全问题) * [报告一般问题](#报告一般问题) * [代码和文档贡献](#代码和文档贡献) * [测试用例贡献](#测试用例贡献) * [参与帮助任何事情](#参与帮助任何事情) * [代码风格](#代码风格) ## 报告安全问题 安全问题总会认真对待。通常,我们不鼓励任何人传播安全问题。如果您发现Apache Seata(incubating)的安全问题,请不要公开讨论,甚至不要公开问题。相反,我们鼓励您向 [private@seata.apache.org](mailto:private@seata.apache.org) 发送私人电子邮件 以报告此情况。 ## 报告一般问题 老实说,我们认为每一个 Seata 用户都是非常好的贡献者。在体验了 Seata 之后,您可能会对项目有一些反馈。那么随时可以通过 [NEW ISSUE](https://github.com/apache/incubator-seata/issues/new/choose) 来提交。 由于我们通过分布式方式协作Seata,我们欣赏高质量,详细的,准确的问题报告。为了让沟通更高效,我们希望每个人都可以搜索下您的问题是否在搜索列表中。如果您发现它存在,请在现有问题评论中添加您的详细信息,而不是打开一个全新的问题。 为了使问题细节尽可能标准,我们为问题报告者提供了一个[问题模板](./.github/ISSUE_TEMPLATE) 请务必按照说明填写模板中的字段。 遇到以下情况你可以新建一个问题: * 错误报告 * 功能要求 * 性能问题 * 功能提案 * 功能设计 * 需要帮助 * 文档不完整 * 测试改进 * 关于项目的任何问题 * 等等 另外我们必须提醒的是,在填写新问题时,请记得从您的帖子中删除敏感数据。敏感数据可能是密码、密钥、网络位置、私人业务数据等。 ## 代码和文档贡献 鼓励采取一切使 Seata 项目变得更好的行动。在 GitHub 上,Seata 的每项改进都可以通过 PR(Pull Request的缩写)实现。 * 如果您发现错别字,请尝试修复它! * 如果您发现bug,请尝试修复它! * 如果您发现一些冗余的代码,请尝试删除它们! * 如果您发现缺少一些测试用例,请尝试添加它们! * 如果您可以增强功能,请**不要**犹豫! * 如果您发现代码晦涩难懂,请尝试添加注释以使其更加易读! * 如果您发现代码丑陋,请尝试重构它! * 如果您能帮助改进文档,那就再好不过了! * 如果您发现文档不正确,只需执行并修复它! * ... 实际上不可能完全罗列所有场景。但记住一个原则: > 我们期待您的任何PR。 现在您已准备好通过 PR 改进 Seata,我们建议您可以看看这里罗列的 PR 规则。 * [工作区准备](#工作区准备) * [分支定义](#分支定义) * [提交规则](#提交规则) * [PR说明](#PR说明) ### 工作区准备 为了提出 PR,我们假设你已经注册了一个 GitHub ID。然后您可以通过以下步骤完成准备工作: 1. **FORK** Seata 到您的仓库。要完成这项工作,您只需单击 [apache/incubator-seata](https://github.com/apache/incubator-seata) 主页右侧的 Fork 按钮。然后你将得到以你的仓库为路径的项目地址:`https://github.com//incubator-seata`,其中your-username是你的 GitHub 用户名。 2. **克隆** 您自己的存储库以在本地开发. 使用 `git clone git@github.com:/incubator-seata.git` 将存储库克隆到本地计算机。 然后您可以创建新分支来完成您希望进行的更改。 3. **设置远程** 将上游设置为 `git@github.com:apache/incubator-seata.git` 使用以下两个命令: ```bash git remote add upstream git@github.com:apache/incubator-seata.git git remote set-url --push upstream no-pushing ``` 使用此远程设置,您可以像这样检查您的 git 远程配置: ```shell $ git remote -v origin git@github.com:/incubator-seata.git (fetch) origin git@github.com:/incubator-seata.git (push) upstream git@github.com:apache/incubator-seata.git (fetch) upstream no-pushing (push) ``` 添加这个,我们可以轻松地将本地分支与上游分支同步。 ### 分支定义 现在我们假设通过拉取请求的每个贡献都是针对Seata 中的 [开发分支](https://github.com/apache/incubator-seata/tree/2.x) 。在贡献之前,请注意分支定义会很有帮助。 作为贡献者,请再次记住,通过拉取请求的每个贡献都是针对分支开发的。而在Seata项目中,还有其他几个分支,我们一般称它们为release分支(如0.6.0、0.6.1)、feature分支、hotfix分支和master分支。 当正式发布一个版本时,会有一个发布分支并以版本号命名。 在发布之后,我们会将发布分支的提交合并到主分支中。 当我们发现某个版本有bug时,我们会决定在以后的版本中修复它,或者在特定的hotfix版本中修复它。当我们决定修复hotfix版本时,我们会根据对应的release分支checkout hotfix分支,进行代码修复和验证,合并到开发分支和master分支。 对于较大的功能,我们将拉出功能分支进行开发和验证。 ### 提交规则 实际上,在 Seata 中,我们在提交时会认真对待两条规则: * [提交消息](#提交消息) * [提交内容](#提交内容) #### 提交消息 提交消息可以帮助审稿人更好地理解提交 PR 的目的是什么。它还可以帮助加快代码审查过程。我们鼓励贡献者使用显式的提交信息,而不是模糊的信息。一般来说,我们提倡以下提交消息类型: * docs: xxxx. For example, "docs: add docs about Seata cluster installation". * feature: xxxx.For example, "feature: support oracle in AT mode". * bugfix: xxxx. For example, "bugfix: fix panic when input nil parameter". * refactor: xxxx. For example, "refactor: simplify to make codes more readable". * test: xxx. For example, "test: add unit test case for func InsertIntoArray". * 其他可读和显式的表达方式。 另一方面,我们不鼓励贡献者通过以下方式提交消息: * ~~修复错误~~ * ~~更新~~ * ~~添加文档~~ 如果你不知道该怎么做,请参阅 [如何编写 Git 提交消息](http://chris.beams.io/posts/git-commit/) 作为开始。 #### 提交内容 提交内容表示一次提交中包含的所有内容更改。我们最好在一次提交中包含可以支持审阅者完整审查的内容,而无需任何其他提交的帮助。换句话说,一次提交中的内容可以通过 CI 以避免代码混乱。简而言之,我们需要牢记三个小规则: * 避免在提交中进行非常大的更改; * 每次提交都完整且可审查。 * 提交时检查 git config(`user.name`, `user.email`) 以确保它与您的 GitHub ID 相关联。 ```bash git config --get user.name git config --get user.email ``` * 提交pr时,请在'changes/'文件夹下的XXXmd文件中添加当前更改的简要说明 另外,在代码变更部分,我们建议所有贡献者阅读Seata的 [代码风格](#代码风格)。 无论是提交信息,还是提交内容,我们都更加重视代码审查。 ### PR说明 PR 是更改 Seata 项目文件的唯一方法。为了帮助审查人更好地理解你的目的,PR 描述不能太详细。我们鼓励贡献者遵循 [PR 模板](./.github/PULL_REQUEST_TEMPLATE.md) 来完成拉取请求。 ## 测试用例贡献 任何测试用例都会受到欢迎。目前,Seata 功能测试用例是高优先级的。 * 对于单元测试,您需要在同一模块的 test 目录中创建一个名为 xxxTest.java 的测试文件。推荐你使用junit5 UT框架 * 对于集成测试,您可以将集成测试放在 test 目录或 seata-test 模块中。推荐使用mockito测试框架。 ## 参与帮助任何事情 我们选择 GitHub 作为 Seata 协作的主要场所。所以Seata的最新更新总是在这里。尽管通过 PR 贡献是一种明确的帮助方式,但我们仍然呼吁其他方式。 * 如果可以的话,回复别人的问题; * 帮助解决其他用户的问题; * 帮助审查他人的 PR 设计; * 帮助审查其他人在 PR 中的代码; * 讨论 Seata 以使事情更清楚; * 在Github之外宣传Seata技术; * 写关于 Seata 的博客等等。 ## 代码风格 Seata 代码风格 符合阿里巴巴 Java 编码指南。 ### 指南 [阿里巴巴Java代码指南](https://alibaba.github.io/Alibaba-Java-Coding-Guidelines/) ### IDE插件安装(非必须) *没有必要安装,如果你想在编码的时候发现问题。* #### idea IDE [p3c-idea-plugin-install](https://github.com/alibaba/p3c/blob/master/idea-plugin/README.md) #### eclipse IDE [p3c-eclipse-plugin-install](https://github.com/alibaba/p3c/blob/master/eclipse-plugin/README.md) 总之,**任何帮助都是贡献。** ================================================ FILE: DISCLAIMER ================================================ Apache Seata (incubating) is an effort undergoing incubation at the Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF. ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (properties) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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 https://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. ======================================================================= Apache Seata(incubating) Subcomponents: The Apache Seata(incubating) project contains subcomponents with separate copyright notices and license terms. Your use of the source code for the these subcomponents is subject to the terms and conditions of the following licenses. ======================================================================== MIT licenses ======================================================================== For the org.apache.seata.sqlparser.antlr.mysql.antlr.MySqlLexer.g4, org.apache.seata.sqlparser.antlr.mysql.antlr.MySqlParser.g4, as well as the source code files in the org/apache/seata/sqlparser/antlr/mysql/parser/ package, which are generated from these two .g4 files. This product contains a portion of the antlr/grammars-v4 project, which is published at https://github.com/antlr/grammars-v4. The code is licensed under an MIT License: MySQL (Positive Technologies) grammar The MIT License (MIT). Copyright (c) 2015-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies. Copyright (c) 2017, Ivan Khudyashev (IHudyashov@ptsecurity.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ======================================================================== Apache 2.0 licenses ======================================================================== For the mvnw and mvnw.cmd files, they are copied from https://github.com/apache/maven-wrapper. The code is licensed under an Apache 2.0 License. ================================================ FILE: NOTICE ================================================ Apache Seata (Incubating) Copyright 2023-2025 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). ----------------------------------------------------------------------- Apache Maven Wrapper Copyright 2013-2022 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). The original idea and initial implementation of the maven-wrapper module is derived from the Gradle Wrapper which was written originally by Hans Dockter and Adam Murdoch. Copyright 2007 the original author or authors. ================================================ FILE: README.md ================================================
# Apache Seata (incubating): Simple Extensible Autonomous Transaction Architecture [![build](https://github.com/apache/incubator-seata/actions/workflows/build.yml/badge.svg)](https://github.com/apache/incubator-seata/actions/workflows/build.yml) [![codecov](https://codecov.io/gh/apache/incubator-seata/graph/badge.svg?token=tbmHt2ZfxO)](https://codecov.io/gh/apache/incubator-seata) [![license](https://img.shields.io/github/license/apache/incubator-seata.svg)](https://www.apache.org/licenses/LICENSE-2.0.html) [![maven](https://img.shields.io/maven-central/v/org.apache.seata/seata-all?versionSuffix=2.5.0)](https://central.sonatype.com/search?q=org.apache.seata%3Aseata-all) ## What is Apache Seata (incubating)? A **distributed transaction solution** with high performance and ease of use for **microservices** architecture. ### Distributed Transaction Problem in Microservices Let's imagine a traditional monolithic application. Its business is built up with 3 modules. They use a single local data source. Naturally, data consistency will be guaranteed by the local transaction. ![Monolithic App](https://img.alicdn.com/imgextra/i3/O1CN01FTtjyG1H4vvVh1sNY_!!6000000000705-0-tps-1106-678.jpg) Things have changed in a microservices architecture. The 3 modules mentioned above are designed to be 3 services on top of 3 different data sources ([Pattern: Database per service](http://microservices.io/patterns/data/database-per-service.html)). Data consistency within every single service is naturally guaranteed by the local transaction. **But how about the whole business logic scope?** ![Microservices Problem](https://img.alicdn.com/imgextra/i1/O1CN01DXkc3o1te9mnJcHOr_!!6000000005926-0-tps-1268-804.jpg) ## Architecture Apache Seata offers a robust solution to the distributed transaction challenges in microservices. ![Seata solution](https://img.alicdn.com/imgextra/i1/O1CN01FheliH1k5VHIRob3p_!!6000000004632-0-tps-1534-908.jpg) ### Core Concepts A **Distributed Transaction** is a **Global Transaction** composed of a batch of **Branch Transactions**, where a **Branch Transaction** is typically a **Local Transaction**. ![Global & Branch](https://cdn.nlark.com/lark/0/2018/png/18862/1545015454979-a18e16f6-ed41-44f1-9c7a-bd82c4d5ff99.png) ### Roles There are three main roles in the Apache Seata Framework: - **Transaction Coordinator(TC):** Maintain status of global and branch transactions, drive the global commit or rollback. - **Transaction Manager(TM):** Define the scope of global transaction: begin a global transaction, commit or rollback a global transaction. - **Resource Manager(RM):** Manage resources that branch transactions working on, talk to TC for registering branch transactions and reporting status of branch transactions, and drive the branch transaction commit or rollback. ![Model](https://cdn.nlark.com/lark/0/2018/png/18862/1545013915286-4a90f0df-5fda-41e1-91e0-2aa3d331c035.png) ### Transaction Lifecycle A typical lifecycle of an Apache Seata managed distributed transaction: 1. TM asks TC to begin a new global transaction. TC generates an XID representing the global transaction. 2. XID is propagated through microservices' invoke chain. 3. RM registers local transaction as a branch of the corresponding global transaction of XID to TC. 4. TM asks TC for committing or rollbacking the corresponding global transaction of XID. 5. TC drives all branch transactions under the corresponding global transaction of XID to finish branch committing or rollbacking. ![Typical Process](https://cdn.nlark.com/lark/0/2018/png/18862/1545296917881-26fabeb9-71fa-4f3e-8a7a-fc317d3389f4.png) For more details about principle and design, please go to [Apache Seata wiki page](https://github.com/apache/incubator-seata/wiki). ### History ##### Alibaba - **TXC**: Taobao Transaction Constructor. Alibaba middleware team started this project since 2014 to meet the distributed transaction problems caused by application architecture change from monolithic to microservices. - **GTS**: Global Transaction Service. TXC as an Aliyun middleware product with new name GTS was published since 2016. - **Fescar**: we started the open source project Fescar based on TXC/GTS since 2019 to work closely with the community in the future. ##### Ant Financial - **XTS**: Extended Transaction Service. Ant Financial middleware team developed the distributed transaction middleware since 2007, which is widely used in Ant Financial and solves the problems of data consistency across databases and services. - **DTX**: Distributed Transaction Extended. Since 2013, XTS has been published on the Ant Financial Cloud, with the name of DTX . ##### Seata Community - **Seata**: Simple Extensible Autonomous Transaction Architecture. Ant Financial joins Fescar, which make it to be a more neutral and open community for distributed transaction, and Fescar be renamed to Seata. - **Apache Seata**: In October 2023, Seata entered the Apache Incubator. ## Maven dependency Depending on the scenario, choose one of the two dependencies: `org.apache.seata:seata-all` or `org.apache.seata:seata-spring-boot-starter`. ```xml 2.5.0 org.apache.seata seata-all ${seata.version} org.apache.seata seata-spring-boot-starter ${seata.version} ``` ## Quick Start [Quick Start](https://seata.apache.org/zh-cn/docs/ops/deploy-guide-beginner) ## Documentation You can view the full documentation from Apache Seata Official Website: [Apache Seata Website page](https://seata.apache.org/zh-cn/docs/overview/what-is-seata). ## Reporting bugs Please follow the [template](./.github/ISSUE_TEMPLATE/BUG_REPORT.yml) for reporting any issues. ## Security Please do not use our public issue tracker but refer to our [security policy](./SECURITY.md) ## Contributing Contributors are welcomed to join the Apache Seata project. Please check [CONTRIBUTING](./CONTRIBUTING.md) and [CONTRIBUTING-CN](./CONTRIBUTING_CN.md) about how to contribute to this project. ## Contact * Mailing list: * dev@seata.apache.org , for dev/user discussion. [subscribe](mailto:dev-subscribe@seata.apache.org), [unsubscribe](mailto:dev-unsubscribe@seata.apache.org), [archive](https://lists.apache.org/list.html?dev@seata.apache.org) * Online chat: | Dingtalk group | Wechat official account | QQ group | Wechat assistant | |:---------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------:| | | | | | ## Apache Seata ecosystem * [Apache Seata Website](https://github.com/apache/incubator-seata.github.io) - Apache Seata official website * [Apache Seata GoLang](https://github.com/apache/incubator-seata-go) - Apache Seata GoLang client * [Apache Seata Samples](https://github.com/apache/incubator-seata-samples) - Samples for Apache Seata Java * [Apache Seata GoLang Samples](https://github.com/apache/incubator-seata-go-samples) - Samples for Apache Seata GoLang * [Apache Seata K8s](https://github.com/apache/incubator-seata-k8s) - Apache Seata integration with Kubernetes * [Apache Seata CLI](https://github.com/apache/incubator-seata-ctl) - CLI tool for Apache Seata operations ## Contributors This project exists thanks to all the people who contribute. [[Contributors](https://github.com/apache/incubator-seata/graphs/contributors)]. ## License Apache Seata is under the Apache 2.0 license. See the [LICENSE](https://github.com/apache/incubator-seata/blob/master/LICENSE) file for details. ## Who is using These are only part of the companies using Apache Seata, for reference only. If you are using Apache Seata, please [add your company here](https://github.com/apache/incubator-seata/issues/1246) to tell us your scenario to make Apache Seata better.
Alibaba Group 蚂蚁金服 阿里云 中航信 联通(浙江) 中国铁塔 滴滴 中国邮政 58集团 南航 TCL 韵达快递 科大讯飞 奇虎360 收钱吧 太极计算机 美的集团 中国网安 政采云 浙江公安厅 特步 中通快递 欧莱雅百库 浙江烟草 波司登 凯京科技 点购集团 求是创新健康 科蓝 康美药业 雁联 学两手 衣二三 北京薪福社 叩丁狼教育 悦途出行 国信易企签 睿颐软件 全房通 有利网 赛维 安心保险 科达科技 会分期 会找房 会通教育 享住智慧 兰亮网络 桔子数科 蓝天教育 烟台欣和 阿康健康 财新传媒 新脉远 乾动新能源 路客精品民宿 深圳好尔美 浙大睿医 深圳市云羿贸易科技有限公司 居然之家 深圳来电科技有限公司 臻善科技 中国支付通 众网小贷 谐云科技 浙江甄品 深圳海豚网 汇通天下 九机网 有好东西 南京智慧盾 数跑科技 拉粉粉 汇通达 易宝支付 维恩贝特 八库 大诚若谷 杭州华网信息 深圳易佰 易点生活 成都数智索 北京超图 江西群享科技有限公司 宋城独木桥网络有限公司 唯小宝(江苏)网络技术有限公司 杭州喜团科技 海典软件 中元健康科技有限公司 宿迁民丰农商银行 上海海智在线 丞家(上海)公寓管理 安徽国科新材科 商银信支付 钛师傅云 广州力生信息 杭州启舰科技有限公司 微链 上海美浮特 江西群享科技有限公司 杭州中威慧云医疗科技有限公司 易族智汇(北京) 佛山宅无限 F5未来商店 重庆雷高科技有限公司 甄品信息科技 行云全球汇跨境电商(杭州分部) 世纪加华 快陪练 西南石油大学 厦门服云信息科技有限公司 领课网络 美通社 睿维科技有限公司 郑州信源信息技术 荣怀集团 浙江群集大数据科技有限公司 北京易点租有限公司 浙江蕙康科技有限公司 致远创想 深圳智荟物联技术有限公司 源讯中国 武汉江寓生活服务有限公司 大账房 上海阳光喔教育科技有限公司 北京新学道教育科技有限公司 北京悦途出行网络科技公司 上海意贝斯特信息技术有限公司 御家汇 广州社众软件 浩鲸科技 华宇信息 中国云尚科技 卫宁健康 聚合联动 熙菱信息 鲸算科技 杭州沃朴物联科技有限公司 深圳市臻络科技有限公司 白云电气 百果园 海尔 六倍体科技 泉州银行 小滴课堂 医百顺 正泰中自控制 中国电子科技网络 卓源软件 重庆直通物流有限公司 海澜集团 南宁微服信息技术有限公司 日事清 小鹏汽车 平安人寿 光大银行
================================================ FILE: SECURITY.md ================================================ # Security Policy This is a project of the [Apache Software Foundation](https://apache.org) and follows the ASF [vulnerability handling process](https://apache.org/security/#vulnerability-handling). ## Reporting a Vulnerability To report a new vulnerability you have discovered please follow the [ASF vulnerability reporting process](https://apache.org/security/#reporting-a-vulnerability). ================================================ FILE: all/pom.xml ================================================ org.apache.seata seata-build ${revision} ../build/pom.xml 4.0.0 seata-all Seata All-in-one ${project.version} Seata is an easy-to-use, high-performance, java based, open source distributed transaction solution. org.apache.seata seata-dependencies ${project.version} pom import org.apache.seata seata-common ${project.version} org.apache.seata seata-config-core ${project.version} org.apache.seata seata-config-custom ${project.version} org.apache.seata seata-config-apollo ${project.version} org.apache.seata seata-config-nacos ${project.version} org.apache.seata seata-config-zk ${project.version} org.apache.seata seata-config-consul ${project.version} org.apache.seata seata-config-etcd3 ${project.version} org.apache.seata seata-config-spring-cloud ${project.version} org.apache.seata seata-core ${project.version} org.apache.seata seata-discovery-core ${project.version} org.apache.seata seata-discovery-custom ${project.version} org.apache.seata seata-discovery-consul ${project.version} org.apache.seata seata-discovery-eureka ${project.version} org.apache.seata seata-discovery-nacos ${project.version} org.apache.seata seata-discovery-redis ${project.version} org.apache.seata seata-discovery-sofa ${project.version} org.apache.seata seata-discovery-raft ${project.version} org.apache.seata seata-discovery-zk ${project.version} org.apache.seata seata-discovery-etcd3 ${project.version} org.apache.seata seata-discovery-namingserver ${project.version} org.apache.seata seata-brpc ${project.version} org.apache.seata seata-http ${project.version} org.apache.seata seata-http-jakarta ${project.version} org.apache.seata seata-dubbo-alibaba ${project.version} org.apache.seata seata-sofa-rpc ${project.version} org.apache.seata seata-motan ${project.version} org.apache.seata seata-rm ${project.version} org.apache.seata seata-rm-datasource ${project.version} ${project.groupId} seata-compressor-all org.apache.seata seata-rocketmq ${project.version} org.apache.seata seata-sqlparser-core ${project.version} org.apache.seata seata-sqlparser-antlr ${project.version} provided org.apache.seata seata-sqlparser-druid ${project.version} org.apache.seata seata-spring ${project.version} ${project.groupId} seata-serializer-all org.apache.seata seata-tcc ${project.version} org.apache.seata seata-tm ${project.version} org.apache.seata seata-serializer-seata ${project.version} org.apache.seata seata-serializer-protobuf ${project.version} provided org.apache.seata seata-grpc ${project.version} org.apache.seata seata-hsf ${project.version} org.apache.seata seata-serializer-fory ${project.version} org.apache.seata seata-serializer-kryo ${project.version} org.apache.seata seata-serializer-hessian ${project.version} org.apache.seata seata-serializer-fastjson2 ${project.version} org.apache.seata seata-compressor-gzip ${project.version} org.apache.seata seata-compressor-bzip2 ${project.version} org.apache.seata seata-compressor-zip ${project.version} org.apache.seata seata-compressor-lz4 ${project.version} org.apache.seata seata-compressor-deflater ${project.version} org.apache.seata seata-compressor-zstd ${project.version} org.apache.seata seata-saga-processctrl ${project.version} org.apache.seata seata-saga-statelang ${project.version} org.apache.seata seata-saga-engine ${project.version} org.apache.seata seata-saga-rm ${project.version} org.apache.seata seata-saga-engine-store ${project.version} org.apache.seata seata-saga-spring ${project.version} org.apache.seata seata-saga-annotation ${project.version} io.seata seata-all ${project.version} org.springframework spring-context org.springframework spring-core org.springframework spring-beans org.springframework spring-aop org.springframework spring-webmvc org.springframework spring-tx io.netty netty-all org.antlr antlr4 com.alibaba fastjson com.alibaba druid com.typesafe config org.slf4j slf4j-api ch.qos.logback logback-classic provided org.yaml snakeyaml provided org.apache.commons commons-lang3 org.apache.commons commons-pool2 commons-pool commons-pool org.apache.dubbo.extensions dubbo-filter-seata org.apache.seata seata-core com.google.protobuf protobuf-java provided com.alibaba dubbo provided com.alibaba.edas edas-sdk provided aopalliance aopalliance com.101tec zkclient provided org.apache.zookeeper zookeeper provided com.alipay.sofa registry-client-all provided com.alipay.sofa hessian provided com.alibaba.spring spring-context-support provided com.alibaba.nacos nacos-client provided com.ctrip.framework.apollo apollo-client provided redis.clients jedis provided com.netflix.eureka eureka-client provided com.netflix.archaius archaius-core provided com.ecwid.consul consul-api provided io.etcd jetcd-core provided com.google.guava guava com.google.guava listenablefuture javax.inject javax.inject provided org.apache.httpcomponents httpclient provided org.apache.httpcomponents httpcore provided com.github.ben-manes.caffeine caffeine com.alipay.sofa sofa-rpc-all provided com.weibo motan-core provided com.weibo motan-transport-netty provided io.protostuff protostuff-core provided io.protostuff protostuff-runtime provided io.grpc grpc-netty provided io.netty * io.grpc grpc-protobuf provided io.grpc grpc-stub provided org.postgresql postgresql provided com.fasterxml.jackson.core jackson-databind provided com.fasterxml.jackson.core jackson-core provided com.fasterxml.jackson.core jackson-annotations provided com.esotericsoftware kryo provided com.dameng DmJdbcDriver18 provided com.caucho hessian provided de.javakaffee kryo-serializers provided at.yawk.lz4 lz4-java provided net.bytebuddy byte-buddy kr.motd.maven os-maven-plugin ${os-maven-plugin.version} ${user.dir} LICENSE org.apache.maven.plugins maven-shade-plugin package shade true false false true org.apache.seata:* io.seata:* META-INF/spring.handlers META-INF/spring.schemas *:* file.conf registry.conf *:* META-INF/maven/** icu.easyj.maven.plugins easyj-maven-plugin create-pom-file package create-pom-file true true io.seata:seata-all org.apache.seata:* org.apache.maven.plugins maven-dependency-plugin release org.apache.maven.plugins maven-javadoc-plugin ${project.build.sourceEncoding} false ${project.build.sourceEncoding} true true false true true true io.seata:seata-* -Xdoclint:none attach-javadocs jar ================================================ FILE: bom/pom.xml ================================================ org.apache.seata seata-build ${revision} ../build/pom.xml 4.0.0 seata-bom pom Seata bom ${project.version} Seata bom org.apache.seata seata-all ${project.version} org.apache.seata seata-common ${project.version} org.apache.seata seata-config-core ${project.version} org.apache.seata seata-config-custom ${project.version} org.apache.seata seata-config-apollo ${project.version} org.apache.seata seata-config-nacos ${project.version} org.apache.seata seata-config-zk ${project.version} org.apache.seata seata-config-all ${project.version} org.apache.seata seata-config-etcd3 ${project.version} org.apache.seata seata-config-consul ${project.version} org.apache.seata seata-config-spring-cloud ${project.version} org.apache.seata seata-core ${project.version} org.apache.seata seata-discovery-consul ${project.version} org.apache.seata seata-discovery-core ${project.version} org.apache.seata seata-discovery-custom ${project.version} org.apache.seata seata-discovery-all ${project.version} org.apache.seata seata-discovery-eureka ${project.version} org.apache.seata seata-discovery-zk ${project.version} org.apache.seata seata-discovery-namingserver ${project.version} org.apache.seata seata-discovery-redis ${project.version} org.apache.seata seata-discovery-nacos ${project.version} org.apache.seata seata-discovery-etcd3 ${project.version} org.apache.seata seata-discovery-sofa ${project.version} org.apache.seata seata-discovery-raft ${project.version} org.apache.seata seata-brpc ${project.version} org.apache.seata seata-dubbo ${project.version} org.apache.seata seata-dubbo-alibaba ${project.version} org.apache.seata seata-sofa-rpc ${project.version} org.apache.seata seata-motan ${project.version} org.apache.seata seata-grpc ${project.version} org.apache.seata seata-hsf ${project.version} org.apache.seata seata-http ${project.version} org.apache.seata seata-rocketmq ${project.version} org.apache.seata seata-rm ${project.version} org.apache.seata seata-rm-datasource ${project.version} org.apache.seata seata-spring ${project.version} org.apache.seata seata-tcc ${project.version} org.apache.seata seata-tm ${project.version} org.apache.seata seata-metrics-all ${project.version} org.apache.seata seata-metrics-api ${project.version} org.apache.seata seata-metrics-core ${project.version} org.apache.seata seata-metrics-registry-compact ${project.version} org.apache.seata seata-metrics-exporter-prometheus ${project.version} org.apache.seata seata-serializer-all ${project.version} org.apache.seata seata-serializer-protobuf ${project.version} org.apache.seata seata-serializer-seata ${project.version} org.apache.seata seata-serializer-kryo ${project.version} org.apache.seata seata-serializer-hessian ${project.version} org.apache.seata seata-spring-boot-starter ${project.version} org.apache.seata seata-compressor-all ${project.version} org.apache.seata seata-compressor-gzip ${project.version} org.apache.seata seata-compressor-zip ${project.version} org.apache.seata seata-compressor-bzip2 ${project.version} org.apache.seata seata-compressor-lz4 ${project.version} org.apache.seata seata-compressor-deflater ${project.version} org.apache.seata seata-compressor-zstd ${project.version} org.apache.seata seata-saga-processctrl ${project.version} org.apache.seata seata-saga-statelang ${project.version} org.apache.seata seata-saga-engine ${project.version} org.apache.seata seata-saga-rm ${project.version} org.apache.seata seata-saga-engine-store ${project.version} org.apache.seata seata-saga-annotation ${project.version} org.apache.seata seata-sqlparser-core ${project.version} org.apache.seata seata-sqlparser-antlr ${project.version} org.apache.seata seata-sqlparser-druid ${project.version} org.apache.seata apm-seata-skywalking-plugin ${project.version} ================================================ FILE: build/pom.xml ================================================ org.apache apache 19 4.0.0 org.apache.seata seata-build pom ${revision} Seata Build ${project.version} plugin management for Seata built with Maven Apache License, Version 2.0 https://www.apache.org/licenses/LICENSE-2.0 repo Apache https://github.com/apache https://seata.apache.org Seata Seata https://seata.apache.org dev@seata.apache.org github https://github.com/apache/incubator-seata/issues git@github.com:apache/incubator-seata.git scm:git@github.com:apache/incubator-seata.git scm:git@github.com:apache/incubator-seata.git 2.7.0-SNAPSHOT 1.8 ${java.version} ${java.version} UTF-8 UTF-8 2.7.18 5.3.39 0.2.0-RC2 3.6.1 2.0 8.1.0 5.8.2 1.8.2 1.1.5 3.1.0 3.14.0 0.6.1 2.2.20 3.8 1.3.6 3.0.0 4.0 1.20 3.1.1 2.44.3 2.38.0 3.0.0-M3 12.1.0 3.0.0-M5 0.8.14 2.2.1 3.2.0 3.2.2 2.4.3 3.0.2 3.0.0 3.5.1 4.9.10 1.15.0 2.8.2 1.6.7 1.6 1.8 1.5.0.Final true true true false true true ${IMAGE_NAME} latest true true org.apache.maven.plugins maven-deploy-plugin ${maven-deploy-plugin.version} org.apache.maven.plugins maven-shade-plugin ${maven-shade-plugin.version} org.apache.maven.plugins maven-dependency-plugin ${maven-dependency-plugin.version} org.apache.maven.plugins maven-checkstyle-plugin ${maven-checkstyle-plugin.version} com.diffplug.spotless spotless-maven-plugin ${spotless-maven-plugin.version} org.apache.maven.plugins maven-javadoc-plugin ${maven-javadoc-plugin.version} org.xolstice.maven.plugins protobuf-maven-plugin ${protobuf-maven-plugin.version} true com.mycila license-maven-plugin ${license-maven-plugin.version} org.codehaus.mojo license-maven-plugin ${mojo-license-maven-plugin.version} icu.easyj.maven.plugins easyj-maven-plugin ${easyj-maven-plugin.version} simplify-pom simplify-pom .flattened-pom.xml true pl.project13.maven git-commit-id-plugin ${git-commit-id-plugin.version} get-the-git-infos revision ${maven.git-commit-id.skip} true yyyy-MM-dd'T'HH:mm:ssZ true ${project.build.outputDirectory}/seata-git.properties git.commit.message.full git.remote.origin.url git.branch ^git.build.(time|version)$ ^git.commit.(id|time)$ git.dirty com.github.eirslett frontend-maven-plugin ${frontend-maven-plugin.version} org.apache.maven.plugins maven-compiler-plugin ${maven-compiler-plugin.version} ${maven.compiler.source} ${maven.compiler.target} ${project.build.sourceEncoding} true org.apache.maven.plugins maven-resources-plugin ${maven-resources-plugin.version} ${project.build.sourceEncoding} org.apache.maven.plugins maven-jar-plugin ${maven-jar-plugin.version} true true true true ${maven.build.timestamp} **/META-INF/additional-spring-configuration-metadata.json protobuf/** **/*.proto static/console-fe/** org.apache.maven.plugins maven-clean-plugin ${maven-clean-plugin.version} ./ *-pom.xml **/db_store/** **/sessionStore/** **/root.data false icu.easyj.maven.plugins easyj-maven-plugin org.apache.maven.plugins maven-enforcer-plugin ${maven-enforcer-plugin.version} enforce-maven enforce [3.6.0,) pl.project13.maven git-commit-id-plugin release false org.apache.maven.plugins maven-javadoc-plugin ${project.build.sourceEncoding} ${project.build.sourceEncoding} false package jar org.apache.maven.plugins maven-gpg-plugin ${maven-gpg-plugin.version} sign-artifacts verify sign release-by-github-actions --pinentry-mode loopback false args-for-test-by-jdk17-and-above [17,) --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.math=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.regex=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED --add-opens java.sql/java.sql=ALL-UNNAMED --add-opens java.sql.rowset/javax.sql.rowset.serial=ALL-UNNAMED -Dnet.bytebuddy.experimental=true args-for-client-test org/apache/seata/server/**/*.java,org/apache/seata/console/**/*.java ================================================ FILE: changeVersion.sh ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # echo "./changeVersion.sh oldVersion newVersion" echo $1 echo $2 find ./ -name pom.xml | grep -v target | xargs perl -pi -e "s|$1|$2|g" #find ./ -name Version.java | grep -v target | xargs perl -pi -e "s|$1|$2|g" ================================================ FILE: changes/en-us/1.4.2.md ================================================ ### 1.4.2 [source](https://github.com/seata/seata/archive/v1.4.2.zip) | [binary](https://github.com/seata/seata/releases/download/v1.4.2/seata-server-1.4.2.zip)
Release notes ### Seata 1.4.2 Seata 1.4.2 Released. Seata is an easy-to-use, high-performance, open source distributed transaction solution. The version is updated as follows: ### feature: - [[#3172](https://github.com/seata/seata/pull/3172)] support undo_loge compression mode in AT - [[#3372](https://github.com/seata/seata/pull/3372)] Saga support customize whether update last retry log - [[#3411](https://github.com/seata/seata/pull/3411)] support seata server thread pool parameters configuration - [[#3348](https://github.com/seata/seata/pull/3348)] support redis sentinel storage mode in TC - [[#2667](https://github.com/seata/seata/pull/2667)] support password decryption when using db and redis storage mode - [[#3427](https://github.com/seata/seata/pull/3427)] add distributed lock interface - [[#3443](https://github.com/seata/seata/pull/3443)] send the `seata-server` log to `logstash` or `kafka` - [[#3486](https://github.com/seata/seata/pull/3486)] add transaction service group for metric - [[#3317](https://github.com/seata/seata/pull/3317)] support to obtain multiple configurations through a single node when using zookeeper as configuration center - [[#2933](https://github.com/seata/seata/pull/2933)] add antlr for mysql sqlparser - [[#3228](https://github.com/seata/seata/pull/3228)] support custom serialization plugin - [[#3516](https://github.com/seata/seata/pull/3516)] support acl-token when consul is used registry and configuration center - [[#3116](https://github.com/seata/seata/pull/3116)] support configuring apolloService and apolloCluster - [[#3468](https://github.com/seata/seata/pull/3468)] saga support loop execution on state - [[#3447](https://github.com/seata/seata/pull/3447)] support Transaction context printing in logging framework ### bugfix: - [[#3258](https://github.com/seata/seata/pull/3258)] fix AsyncWorker potential OOM problem - [[#3293](https://github.com/seata/seata/pull/3293)] fix configuration cache get value type mismatch exception - [[#3241](https://github.com/seata/seata/pull/3241)] forbidden use order by or limit in multi sql - [[#3406](https://github.com/seata/seata/pull/3406)] fix the value can not be push to nacos when special charset in config.txt - [[#3418](https://github.com/seata/seata/pull/3418)] fix getGeneratedKeys may get history pk - [[#3408](https://github.com/seata/seata/pull/3408)] fix the NPE problem of jar running mode when the third-dependency on separate packaging - [[#3431](https://github.com/seata/seata/pull/3431)] fix property bean may not be initialized when reading configuration - [[#3413](https://github.com/seata/seata/pull/3413)] fix the logic of rollback to savepoint and release to savepoint - [[#3367](https://github.com/seata/seata/pull/3367)] when the xa branch is rollback, it cannot be executed due to idle state - [[#3448](https://github.com/seata/seata/pull/3448)] reduce unnecessary competition and remove missing locks - [[#3451](https://github.com/seata/seata/pull/3451)] fix set auto-commit to true when local transactions are not being used. Failure to compete for a lock causes the global transaction to exit, invaliding the global row lock and dirty writing of the data. - [[#3481](https://github.com/seata/seata/pull/3481)] fix seata node refresh failure because of consul client throws exceptions - [[#3491](https://github.com/seata/seata/pull/3491)] fix typo in README.md - [[#3531](https://github.com/seata/seata/pull/3531)] fix the NPE of RedisTransactionStoreManager when get branch transactions - [[#3500](https://github.com/seata/seata/pull/3500)] fix oracle and postgreSQL can't query column info - [[#3560](https://github.com/seata/seata/pull/3560)] fix the problem that the asynchronous task of the transactions in the committing state has no time threshold and cannot recover the transaction - [[#3555](https://github.com/seata/seata/pull/3555)] do not call setBlob to invalid the jdbc exception - [[#3540](https://github.com/seata/seata/pull/3540)] fix server distribution missing files - [[#3597](https://github.com/seata/seata/pull/3597)] fix the possible NPE - [[#3568](https://github.com/seata/seata/pull/3568)] fix automatic datasource agent caused by ConcurrentHashMap.computeIfAbsent Deadlock problem - [[#3402](https://github.com/seata/seata/pull/3402)] fix the problem that the updated column cannot be resolved because the field name in the updated SQL contains the database name - [[#3464](https://github.com/seata/seata/pull/3464)] fix test case NPE and StackTraceLogger's log. - [[#3522](https://github.com/seata/seata/pull/3522)] fix register branch and store undolog when AT branch does not need compete lock - [[#3635](https://github.com/seata/seata/pull/3635)] fix pushing notification failed when the configuration changed in zookeeper - [[#3133](https://github.com/seata/seata/pull/3133)] fix the case that could not retry acquire global lock - [[#3156](https://github.com/seata/seata/pull/3156)] optimize the logic of SpringProxyUtils.findTargetClass ### optimize: - [[#3341](https://github.com/seata/seata/pull/3341)] optimize the format of the path to the specified configuration file - [[#3385](https://github.com/seata/seata/pull/3385)] optimize github action and fix unit test failure - [[#3175](https://github.com/seata/seata/pull/3175)] improve UUIDGenerator using "history time" version of snowflake algorithm - [[#3291](https://github.com/seata/seata/pull/3291)] mysql jdbc connect param - [[#3336](https://github.com/seata/seata/pull/3336)] support using System.getProperty to get netty config property - [[#3369](https://github.com/seata/seata/pull/3369)] add github action secrets env for dockerHub - [[#3343](https://github.com/seata/seata/pull/3343)] Migrate CI provider from Travis CI to Github Actions - [[#3397](https://github.com/seata/seata/pull/3397)] add the change records folder - [[#3303](https://github.com/seata/seata/pull/3303)] supports reading all configurations from a single Nacos dataId - [[#3380](https://github.com/seata/seata/pull/3380)] globalTransactionScanner listener optimize - [[#3123](https://github.com/seata/seata/pull/3123)] optimize the packing strategy of seata-server - [[#3415](https://github.com/seata/seata/pull/3415)] optimize maven clean plugin to clear the distribution directory - [[#3316](https://github.com/seata/seata/pull/3316)] optimize the property bean may not be initialized while reading config value - [[#3420](https://github.com/seata/seata/pull/3420)] optimize enumerated classes and add unit tests - [[#3533](https://github.com/seata/seata/pull/3533)] added interface to get current transaction role - [[#3436](https://github.com/seata/seata/pull/3436)] optimize typo in SQLType class - [[#3439](https://github.com/seata/seata/pull/3439)] adjust the order of springApplicationContextProvider so that it can be called before the XML bean - [[#3248](https://github.com/seata/seata/pull/3248)] optimize the config of load-balance migration to belong the client node - [[#3441](https://github.com/seata/seata/pull/3441)] optimize the auto-configuration processing of starter - [[#3466](https://github.com/seata/seata/pull/3466)] String comparison uses equalsIgnoreCase() - [[#3476](https://github.com/seata/seata/pull/3476)] support when the server parameter passed is hostname, it will be automatically converted to IP - [[#3236](https://github.com/seata/seata/pull/3236)] optimize the conditions for executing unlocking - [[#3485](https://github.com/seata/seata/pull/3485)] optimize useless codes in ConfigurationFactory - [[#3505](https://github.com/seata/seata/pull/3505)] optimize useless if judgments in the GlobalTransactionScanner class - [[#3544](https://github.com/seata/seata/pull/3544)] optimize the get pks by auto when auto generated keys is false - [[#3549](https://github.com/seata/seata/pull/3549)] unified the length of xid in different tables when using DB storage mode - [[#3551](https://github.com/seata/seata/pull/3551)] make RETRY_DEAD_THRESHOLD bigger and configurable - [[#3589](https://github.com/seata/seata/pull/3589)] Changed exception check by JUnit API usage - [[#3601](https://github.com/seata/seata/pull/3601)] make `LoadBalanceProperties` compatible with `spring-boot:2.x` and above - [[#3513](https://github.com/seata/seata/pull/3513)] Saga SpringBeanService invoker support switch json parser - [[#3318](https://github.com/seata/seata/pull/3318)] make CLIENT_TABLE_META_CHECKER_INTERVAL configurable - [[#3371](https://github.com/seata/seata/pull/3371)] add applicationId for metric - [[#3459](https://github.com/seata/seata/pull/3459)] remove duplicate validAddress code - [[#3215](https://github.com/seata/seata/pull/3215)] opt the reload during startup in file mode - [[#3631](https://github.com/seata/seata/pull/3631)] optimize nacos-config.py parameter - [[#3638](https://github.com/seata/seata/pull/3638)] optimize the error when use update or delete with join in sql - [[#3523](https://github.com/seata/seata/pull/3523)] optimize release savepoint when use oracle - [[#3458](https://github.com/seata/seata/pull/3458)] reversion the deleted md - [[#3574](https://github.com/seata/seata/pull/3574)] repair Spelling errors in comments in EventBus.java files - [[#3573](https://github.com/seata/seata/pull/3573)] fix designer directory path in README.md - [[#3662](https://github.com/seata/seata/pull/3662)] update gpg key - [[#3664](https://github.com/seata/seata/pull/3664)] optimize some javadocs - [[#3637](https://github.com/seata/seata/pull/3637)] register the participating companies and pull request information ### test - [[#3381](https://github.com/seata/seata/pull/3381)] test case for tmClient - [[#3607](https://github.com/seata/seata/pull/3607)] fixed bugs in EventBus unit tests - [[#3579](https://github.com/seata/seata/pull/3579)] add test case for StringFormatUtils - [[#3365](https://github.com/seata/seata/pull/3365)] optimize ParameterParserTest test case failed - [[#3359](https://github.com/seata/seata/pull/3359)] remove unused test case - [[#3578](https://github.com/seata/seata/pull/3578)] fix UnfinishedStubbing Exception in unit test case - [[#3383](https://github.com/seata/seata/pull/3383)] optimize StatementProxyTest unit test Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [caohdgege](https://github.com/caohdgege) - [a364176773](https://github.com/a364176773) - [wangliang181230](https://github.com/wangliang181230) - [xingfudeshi](https://github.com/xingfudeshi) - [jsbxyyx](https://github.com/jsbxyyx) - [selfishlover](https://github.com/selfishlover) - [l8189352](https://github.com/l81893521) - [Rubbernecker](https://github.com/Rubbernecker) - [lj2018110133](https://github.com/lj2018110133) - [github-ganyu](https://github.com/github-ganyu) - [dmego](https://github.com/dmego) - [spilledyear](https://github.com/spilledyear) - [hoverruan](https://github.com/hoverruan ) - [anselleeyy](https://github.com/anselleeyy) - [Ifdevil](https://github.com/Ifdevil) - [lvxianzheng](https://github.com/lvxianzheng) - [MentosL](https://github.com/MentosL) - [lian88jian](https://github.com/lian88jian) - [litianyu1992](https://github.com/litianyu1992) - [xyz327](https://github.com/xyz327) - [13414850431](https://github.com/13414850431) - [xuande](https://github.com/xuande) - [tanggen](https://github.com/tanggen) - [eas5](https://github.com/eas5) - [nature80](https://github.com/nature80) - [ls9527](https://github.com/ls9527) - [drgnchan](https://github.com/drgnchan) - [imyangyong](https://github.com/imyangyong) - [sunlggggg](https://github.com/sunlggggg) - [long187](https://github.com/long187) - [h-zhi](https://github.com/h-zhi) - [StellaiYang](https://github.com/StellaiYang) - [slinpq](https://github.com/slinpq) - [sustly](https://github.com/sustly) - [cznc](https://github.com/cznc) - [squallliu](https://github.com/squallliu) - [81519434](https://github.com/81519434) - [luoxn28](https://github.com/luoxn28) 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
================================================ FILE: changes/en-us/1.5.0.md ================================================ ### 1.5.0 [source](https://github.com/seata/seata/archive/v1.5.0.zip) | [binary](https://github.com/seata/seata/releases/download/v1.5.0/seata-server-1.5.0.zip)
Release notes ### Seata 1.5.0 Seata 1.5.0 Released. Seata is an easy-to-use, high-performance, open source distributed transaction solution. The version is updated as follows: ### feature: - [[#4115](https://github.com/seata/seata/pull/4115)] support console management - [[#3472](https://github.com/seata/seata/pull/3472)] add redisLocker's lua mode - [[#3575](https://github.com/seata/seata/pull/3575)] support the mixed use of different storages of locks and sessions - [[#3374](https://github.com/seata/seata/pull/3374)] add a Executor for INSERT ON DUPLICATE KEY UPDATE - [[#3642](https://github.com/seata/seata/pull/3642)] provide an api to share tcc phase-1's params to phase-2 - [[#3064](https://github.com/seata/seata/pull/3064)] support configuring the order of the TM and TCC interceptor - [[#2852](https://github.com/seata/seata/pull/2852)] support configuring scan target for GlobalTransactionScanner - [[#3683](https://github.com/seata/seata/pull/3683)] support redis distributed lock to prevent multi TC competition - [[#3545](https://github.com/seata/seata/pull/3545)] TCC mode support idempotent and anti hanging - [[#3009](https://github.com/seata/seata/pull/3009)] support server start with springboot and config with application.yaml - [[#3652](https://github.com/seata/seata/pull/3652)] support APM with SkyWalking - [[#3823](https://github.com/seata/seata/pull/3823)] TCC mode supports customized parameters list of the method in phase two - [[#3642](https://github.com/seata/seata/pull/3642)] TCC mode's try method supports passing `BusinessActionContext` implicitly - [[#3856](https://github.com/seata/seata/pull/3856)] support edas-hsf RPC framework - [[#3880](https://github.com/seata/seata/pull/3880)] contributing md support chinese. - [[#2568](https://github.com/seata/seata/pull/2568)] support GlobalTransactionInterceptor expression - [[#3886](https://github.com/seata/seata/pull/3886)] support the registry center network preferences - [[#3869](https://github.com/seata/seata/pull/3869)] support get configuration from environment - [[#3906](https://github.com/seata/seata/pull/3906)] support SPI unload - [[#3668](https://github.com/seata/seata/pull/3668)] support kotlin coroutine - [[#3968](https://github.com/seata/seata/pull/3968)] support brpc-java RPC framework - [[#4134](https://github.com/seata/seata/pull/4134)] init the console basic code - [[#4268](https://github.com/seata/seata/pull/4268)] query global session in the file mode - [[#4281](https://github.com/seata/seata/pull/4281)] query global session and global lock in the redis mode - [[#4293](https://github.com/seata/seata/pull/4293)] get global lock in the file mode - [[#4335](https://github.com/seata/seata/pull/4335)] Realize configuration center upload configuration interactive script (nacos,etcd3) - [[#4360](https://github.com/seata/seata/pull/4360)] Realize configuration center upload configuration interactive script (apollo,consul,zk) - [[#4320](https://github.com/seata/seata/pull/4320)] realize the interface of console: get global session and global lock in the db mode - [[#4435](https://github.com/seata/seata/pull/4435)] console front-end page implementation - [[#4480](https://github.com/seata/seata/pull/4480)] implementation of DefaultAuthSigner - [[#3870](https://github.com/seata/seata/pull/3870)] make seata-bom be the real Bill-Of-Material - [[#3487](https://github.com/seata/seata/pull/3487)] add db realization for distribute lock - [[#3889](https://github.com/seata/seata/pull/3889)] registry add heartbeat - [[#3951](https://github.com/seata/seata/pull/3951)] support zstd compressor - [[#2838](https://github.com/seata/seata/pull/2838)] Saga support auto configuration in the spring boot project ### bugfix: - [[#3497](https://github.com/seata/seata/pull/3497)] fix tcc phase two response timeout exception - [[#3686](https://github.com/seata/seata/pull/3686)] fix NPE and wrong cluster name of Apollo - [[#3702](https://github.com/seata/seata/pull/3702)] fix some comments - [[#3716](https://github.com/seata/seata/pull/3716)] fix the problem in the findTargetClass method - [[#3717](https://github.com/seata/seata/pull/3717)] fix typo of interval - [[#3773](https://github.com/seata/seata/pull/3773)] fix consul not found tc cluster - [[#3695](https://github.com/seata/seata/pull/3695)] fix mariadb unable to create XA connection - [[#3783](https://github.com/seata/seata/pull/3783)] fix the problem that store mode does not take effect - [[#3740](https://github.com/seata/seata/pull/3740)] fix that `LocalThread` is not cleared when the `Saga` transaction ends - [[#3792](https://github.com/seata/seata/pull/3792)] fix the Server can't find redis-host property - [[#3828](https://github.com/seata/seata/pull/3828)] fix StringUtils StackOverflowError - [[#3817](https://github.com/seata/seata/pull/3817)] fix TC SkyWalking topo calling node not gather - [[#3803](https://github.com/seata/seata/pull/3803)] fix ReflectionUtil throw unexpected exception - [[#3879](https://github.com/seata/seata/pull/3879)] fix postgresql multi schema throw not found channel exception - [[#3881](https://github.com/seata/seata/pull/3881)] fix getConfig with different default value return the first - [[#3897](https://github.com/seata/seata/pull/3897)] fix LocalDataTime type in FastjsonUndoLogParser can't be rollback - [[#3901](https://github.com/seata/seata/pull/3901)] fix seataio/seata-server servlet-api conflict - [[#3931](https://github.com/seata/seata/pull/3931)] fix the wrong path and filename when dump the jvm memory for analysis - [[#3978](https://github.com/seata/seata/pull/3978)] fix NPE cause by future timeout - [[#4266](https://github.com/seata/seata/pull/4266)] fix register branch and release lock failed when the size of rows that modified is greater than 1000 in oracle - [[#3949](https://github.com/seata/seata/pull/3949)] fix the problem that `nacos-config.py` will not skip blank options. fix bug that split options may cause content loss - [[#3988](https://github.com/seata/seata/pull/3988)] fix the problem that nacos not found user when password has special characters - [[#3998](https://github.com/seata/seata/pull/3998)] fix the NPE of jedis multi.exec - [[#4011](https://github.com/seata/seata/pull/4011)] fix can not get properties of distributed-lock-table in springboot - [[#4025](https://github.com/seata/seata/pull/4025)] fix potential database resource leak - [[#4023](https://github.com/seata/seata/pull/4023)] fix the problem that the xid is not cleared in some scenes of dubbo - [[#4039](https://github.com/seata/seata/pull/4039)] fix RM did not clear XID after the local transaction threw an exception - [[#4032](https://github.com/seata/seata/pull/4032)] fix ApplicationContext already closed problem when Seata server using ShutdownHook to destroy - [[#4074](https://github.com/seata/seata/pull/4074)] fix prevents XA mode resource suspension - [[#4107](https://github.com/seata/seata/pull/4107)] fix deadlock problems during project construction - [[#4158](https://github.com/seata/seata/pull/4158)] fix the logback can't load the `RPC_PORT` - [[#4162](https://github.com/seata/seata/pull/4162)] fix correct built-in properties for redis registry - [[#4165](https://github.com/seata/seata/pull/4165)] fix `StringUtils.toString(obj)` throw `ClassCastException` when the obj is primitive data array - [[#4169](https://github.com/seata/seata/pull/4169)] fix xa mode originalConnection has been closed, cause PhaseTwo fail to execute - [[#4177](https://github.com/seata/seata/pull/4177)] fix the problem of accidentally releasing the global lock - [[#4174](https://github.com/seata/seata/pull/4174)] fix delete undo log connection already closed - [[#4189](https://github.com/seata/seata/pull/4189)] fix the `kafka-appender.xml` and `logstash-appender.xml` - [[#4213](https://github.com/seata/seata/pull/4213)] fix code for "sessionMode" not execute problem - [[#4220](https://github.com/seata/seata/pull/4220)] fix some problems with `zstd` compressor and add the version of the `kotlin-maven-plugin` - [[#4222](https://github.com/seata/seata/pull/4222)] fix could not rollback when insert field list is empty - [[#4253](https://github.com/seata/seata/pull/4253)] update executor store the actually modified columns but not only the columns in set condition - [[#4276](https://github.com/seata/seata/pull/4276)] fix seata-test module UT not work - [[#4278](https://github.com/seata/seata/pull/4278)] fix the problem that mysql's Blob/Clob/NClob data type cannot be deserialized - [[#4302](https://github.com/seata/seata/pull/4302)] fix the problem that other ORMs may not be able to obtain the auto-incrementing primary key value - [[#4233](https://github.com/seata/seata/pull/4233)] fix data remanence problems in lock and branch under specific circumstances. - [[#4308](https://github.com/seata/seata/pull/4308)] fix the TableMetaCache parsing problem with the same table under multiple Postgresql schemas - [[#4326](https://github.com/seata/seata/pull/4326)] fix inability to build Executor when using mariadb driver - [[#4355](https://github.com/seata/seata/pull/4355)] fix mysql-loadbalance resource id error - [[#4310](https://github.com/seata/seata/pull/4310)] fix the problem that failed to obtain the self increment ID of MySQL database through "select last_insert_id" - [[#4331](https://github.com/seata/seata/pull/4331)] fix dirty write check exception that may occur when using ONLY_CARE_UPDATE_COLUMNS configuration - [[#4228](https://github.com/seata/seata/pull/4228)] fix resource suspension in xa mode caused by choose other ip as channel alternative - [[#4408](https://github.com/seata/seata/pull/4408)] fix the invalid environment variable in container env - [[#4441](https://github.com/seata/seata/pull/4441)] fix the problem that pipelined resources are not closed in redis mode and add branchSession judge branchSessions is not null - [[#4438](https://github.com/seata/seata/pull/4438)] fix the problem that GlobalSession could not be deleted normally in the case of delayed deletion in the file mode of the develop branch - [[#4432](https://github.com/seata/seata/pull/4432)] fix the inability to get some remote configurations - [[#4452](https://github.com/seata/seata/pull/4452)] fix the change log of 'service.disableGlobalTransaction' config - [[#4449](https://github.com/seata/seata/pull/4449)] fix redis mode page npe and optimize get globalSession on average - [[#4459](https://github.com/seata/seata/pull/4459)] fix the failure to obtain before image and after image on oracle and pgsql of the develop branch - [[#4471](https://github.com/seata/seata/pull/4471)] in branch 'develop', fix the error when service.vgroupMapping change - [[#4474](https://github.com/seata/seata/pull/4474)] fix Mysql multi-bit Bit type field rollback error - [[#4492](https://github.com/seata/seata/pull/4492)] fix the failure to update cluster list dynamically when use eureka of the develop branch - [[#4535](https://github.com/seata/seata/pull/4535)] fix FileSessionManagerTest fail - [[#4561](https://github.com/seata/seata/pull/4561)] fix allSessions/findGlobalSessions may return null and cause npe - [[#4505](https://github.com/seata/seata/pull/4505)] fix fastjson serialization of time data types - [[#4579](https://github.com/seata/seata/pull/4579)] fix prepareUndoLogAll of MySQLInsertOrUpdateExecutor - [[#4005](https://github.com/seata/seata/pull/4005)] fix PK constraint name isn't the same as the unique index name which is belong to PK - [[#4062](https://github.com/seata/seata/pull/4062)] fix saga complex parameter deserialization problem - [[#4199](https://github.com/seata/seata/pull/4199)] fix rpc tm request timeout - [[#4352](https://github.com/seata/seata/pull/4352)] fix some problem of the sql parser - [[#4487](https://github.com/seata/seata/pull/4487)] fix remove Pagination hideOnlyOnePage attribute - [[#4449](https://github.com/seata/seata/pull/4449)] fix optimize redis limit and fix redis page bug - [[#4608](https://github.com/seata/seata/pull/4608)] fix test case - [[#3110](https://github.com/seata/seata/pull/3110)] fix the problem of unit test ### optimize: - [[#4163](https://github.com/seata/seata/pull/4163)] improve CONTRIBUTING docs - [[#3678](https://github.com/seata/seata/pull/3678)] supplement missing configuration and new version documents - [[#3654](https://github.com/seata/seata/pull/3654)] fix typo,applicationContex -> applicationContext - [[#3615](https://github.com/seata/seata/pull/3615)] asynchronous deletion after the transaction is committed - [[#3687](https://github.com/seata/seata/pull/3687)] fix the case that could not retry acquire global lock - [[#3689](https://github.com/seata/seata/pull/3689)] modify the attribute prefix in the file file.properties - [[#3528](https://github.com/seata/seata/pull/3528)] optimize the memory footprint of redis mode - [[#3700](https://github.com/seata/seata/pull/3700)] optimize the speed of buildLockKey - [[#3588](https://github.com/seata/seata/pull/3588)] optimize the logic of datasource auto proxy - [[#3626](https://github.com/seata/seata/pull/3626)] remove repeat change status - [[#3722](https://github.com/seata/seata/pull/3722)] add the basic code of distributed lock - [[#3713](https://github.com/seata/seata/pull/3713)] unified the default value of enableClientBatchSendRequest - [[#3120](https://github.com/seata/seata/pull/3120)] optimize `Configuration` and add unit tests - [[#3735](https://github.com/seata/seata/pull/3735)] do not load `LoadBalance` if not necessary - [[#3770](https://github.com/seata/seata/pull/3770)] close the `Closeable` and optimize some code - [[#3627](https://github.com/seata/seata/pull/3627)] use TreeMap instead of the LinkedHashMap in TableMeta to compatible high level MySQL - [[#3760](https://github.com/seata/seata/pull/3760)] opt the logback's config of `seata-server` - [[#3765](https://github.com/seata/seata/pull/3765)] Transfer the operation of adding configuration class from 'AutoConfiguration' to 'EnvironmentPostProcessor' - [[#3730](https://github.com/seata/seata/pull/3730)] Refactoring the code of TCC mode - [[#3820](https://github.com/seata/seata/pull/3820)] add column `action_name` to the `tcc_fence_log` - [[#3738](https://github.com/seata/seata/pull/3738)] `JacksonUndoLogParser` supports to parsing `LocalDateTime` - [[#3794](https://github.com/seata/seata/pull/3794)] optimize the packaging of `seata-server` - [[#3795](https://github.com/seata/seata/pull/3795)] optimize zk registry lookup performance - [[#3840](https://github.com/seata/seata/pull/3840)] optimiza `apm-skwalking` operation method to generate rules - [[#3834](https://github.com/seata/seata/pull/3834)] optimize `seata-distribution` add `apm-seata-skywalking` - [[#3847](https://github.com/seata/seata/pull/3847)] optimize ConcurrentHashMap.newKeySet replace ConcurrentSet - [[#3311](https://github.com/seata/seata/pull/3311)] supports reading all configurations from a single Consul key - [[#3849](https://github.com/seata/seata/pull/3849)] optimize string concat - [[#3890](https://github.com/seata/seata/pull/3890)] optimize only the inserted fields are checked - [[#3895](https://github.com/seata/seata/pull/3895)] optimize decode exception - [[#3898](https://github.com/seata/seata/pull/3898)] add jib-maven-plugin - [[#3904](https://github.com/seata/seata/pull/3904)] ehance metrics and fix seata-server UT not work - [[#3212](https://github.com/seata/seata/pull/3212)] optimize recognize sql in limit and order by - [[#3905](https://github.com/seata/seata/pull/3905)] optimize nacos-config.sh to support ash - [[#3935](https://github.com/seata/seata/pull/3935)] optimize Send redis command at one time using pipeline - [[#3916](https://github.com/seata/seata/pull/3916)] optimize determine whether the server in the register is alive - [[#3918](https://github.com/seata/seata/pull/3918)] cache reflection results of the fields and methods - [[#3898](https://github.com/seata/seata/pull/3898)] add jib-maven-plugin - [[#3907](https://github.com/seata/seata/pull/3907)] optimize set server port - [[#3912](https://github.com/seata/seata/pull/3912)] support config JVM param in env - [[#3939](https://github.com/seata/seata/pull/3939)] use map instead of if else judge for more change in the future - [[#3955](https://github.com/seata/seata/pull/3955)] add a start banner for seata - [[#3954](https://github.com/seata/seata/pull/3954)] replace @Deprecated getOwnernName to getOwnerName in druid - [[#3981](https://github.com/seata/seata/pull/3981)] optimize service port priority - [[#4013](https://github.com/seata/seata/pull/4013)] optimize channel alive check - [[#3982](https://github.com/seata/seata/pull/3982)] optimize readme doc and upgrade some dependencies - [[#3949](https://github.com/seata/seata/pull/3949)] `nacos-config.py` support default parameters and optional input parameters - [[#3991](https://github.com/seata/seata/pull/3991)] disable listening in the FileConfiguration center in Springboot - [[#3994](https://github.com/seata/seata/pull/3994)] Optimize the mechanism of periodically deleting tasks in the `tcc_fence_log` table - [[#3327](https://github.com/seata/seata/pull/3327)] supports reading all configurations from a single Etcd3 key - [[#4001](https://github.com/seata/seata/pull/4001)] support to read YML configuration from Nacos, Zookeeper, Consul, Etcd3 - [[#4017](https://github.com/seata/seata/pull/4017)] optimize file configuration - [[#4018](https://github.com/seata/seata/pull/4018)] optimize Apollo configuration - [[#4021](https://github.com/seata/seata/pull/4021)] optimize Nacos、Consul、Zookeeper、Etcd3 configuration - [[#4034](https://github.com/seata/seata/pull/4034)] optimize Nacos, Consul, Zookeeper and Etcd3 configuration Junit test Class - [[#4055](https://github.com/seata/seata/pull/4055)] optimize NetUtil#getLocalAddress0 - [[#4086](https://github.com/seata/seata/pull/4086)] optimize lazily load branch transactions and task scheduling - [[#4056](https://github.com/seata/seata/pull/4056)] optimize the DurationUtil - [[#4103](https://github.com/seata/seata/pull/4103)] optimize AbstractLockManager#collectRowLocks logic - [[#3733](https://github.com/seata/seata/pull/3733)] optimize acquire lock logic - [[#4144](https://github.com/seata/seata/pull/4144)] support default configuration of tx-service-group - [[#4157](https://github.com/seata/seata/pull/4157)] optimize client batch sending. - [[#4191](https://github.com/seata/seata/pull/4191)] support rpc timeout can be customized. - [[#4216](https://github.com/seata/seata/pull/4216)] no more attempt to clean undolog for none AT mode - [[#4176](https://github.com/seata/seata/pull/4176)] use expire key instead hash when using redis as registry center. - [[#4196](https://github.com/seata/seata/pull/4196)] tc batch response to client. - [[#4212](https://github.com/seata/seata/pull/4212)] optimize the interface of the console - [[#4237](https://github.com/seata/seata/pull/4237)] skip check lock when all the before image is empty - [[#4251](https://github.com/seata/seata/pull/4251)] optimize partial code handling - [[#4262](https://github.com/seata/seata/pull/4262)] optimize tcc module code handling - [[#4235](https://github.com/seata/seata/pull/4235)] optimize instance saved in eureka - [[#4277](https://github.com/seata/seata/pull/4277)] optimize acquire lock return fail-fast code in redis-pipeline mode. - [[#4284](https://github.com/seata/seata/pull/4284)] support authentication of MSE-Nacos with ak/sk - [[#4299](https://github.com/seata/seata/pull/4299)] optimize exceptions to make them friendly - [[#4300](https://github.com/seata/seata/pull/4300)] optimize let DefaultCoordinator invoke NettyRemotingServer's close method,no longer closed by ServerRunner - [[#4270](https://github.com/seata/seata/pull/4270)] improve the performance of global commit and global rollback, asynchronous branch transaction cleanup - [[#4307](https://github.com/seata/seata/pull/4307)] when in TCC mode there is no need to delete global locks - [[#4303](https://github.com/seata/seata/pull/4303)] `tcc_fence_log` table hanging log records are deleted asynchronously - [[#4328](https://github.com/seata/seata/pull/4328)] upload configuration script support comments - [[#4305](https://github.com/seata/seata/pull/4305)] optimize acquire global lock fail error log print on tc - [[#4336](https://github.com/seata/seata/pull/4336)] add SQL exception prompt not supported by AT mode - [[#4359](https://github.com/seata/seata/pull/4359)] support configuration metadata read from environment variables - [[#4247](https://github.com/seata/seata/pull/4247)] add tests for `java17` and `springboot` in the `github/actions` - [[#4353](https://github.com/seata/seata/pull/4353)] Slimming down for the `seata-all.jar` - [[#4393](https://github.com/seata/seata/pull/4393)] skip reload for redis & db mode - [[#4400](https://github.com/seata/seata/pull/4400)] asynchronous tasks handle global transactions in parallel - [[#4391](https://github.com/seata/seata/pull/4391)] commit/rollback retry timeout event - [[#4409](https://github.com/seata/seata/pull/4409)] add copyright header to test classes - [[#4282](https://github.com/seata/seata/pull/4282)] optimize build UndoItem logic - [[#4407](https://github.com/seata/seata/pull/4407)] file mode does not require lazy processing of sessions - [[#4436](https://github.com/seata/seata/pull/4436)] optimize global session query in file mode - [[#4431](https://github.com/seata/seata/pull/4431)] limit the number of queries in Redis storage mode - [[#4465](https://github.com/seata/seata/pull/4465)] optimize client version transfer in tc batch response to client mode. - [[#4469](https://github.com/seata/seata/pull/4469)] optimize the way to get configuration in DB mode of console - [[#4478](https://github.com/seata/seata/pull/4478)] optimize Nacos config and naming properties - [[#4522](https://github.com/seata/seata/pull/4522)] optimize GC parameters in JVM - [[#4517](https://github.com/seata/seata/pull/4517)] enhance fail/timeout status metric and log level - [[#4451](https://github.com/seata/seata/pull/4451)] filesessionmanager changed to singleton and optimized task thread pool processing - [[#4551](https://github.com/seata/seata/pull/4551)] optimize metrics rt statistics - [[#4574](https://github.com/seata/seata/pull/4574)] support accessKey/secretKey auto configuration - [[#4583](https://github.com/seata/seata/pull/4583)] use HmacSHA256 instead of HmacSHA1 for ram signature - [[#4591](https://github.com/seata/seata/pull/4591)] optimize the default value of the switch - [[#3780](https://github.com/seata/seata/pull/3780)] optimize upgrade the Druid version - [[#3797](https://github.com/seata/seata/pull/3797)] optimize support instance `BusinessActionContext` outside the TCC try method - [[#3909](https://github.com/seata/seata/pull/3909)] optimize `collectRowLocks` method - [[#3763](https://github.com/seata/seata/pull/3763)] optimize github actions - [[#4345](https://github.com/seata/seata/pull/4345)] optimize fix the path of the package - [[#4346](https://github.com/seata/seata/pull/4346)] optimize the log of the server and remove lombok - [[#4348](https://github.com/seata/seata/pull/4348)] optimize Unified management the versions of maven-plugin - [[#4354](https://github.com/seata/seata/pull/4354)] optimize the tests of `SAGA` - [[#4227](https://github.com/seata/seata/pull/4227)] optimize the versions of the dependencies - [[#4403](https://github.com/seata/seata/pull/4403)] optimize disable `SAGA` tests - [[#4453](https://github.com/seata/seata/pull/4453)] optimize upgrade eureka-clients and xstream dependencies - [[#4481](https://github.com/seata/seata/pull/4481)] optimize nacos config and naming properties - [[#4477](https://github.com/seata/seata/pull/4477)] optimize debug log and fix typo - [[#4484](https://github.com/seata/seata/pull/4484)]optimize the log of TM/RM register - [[#3874](https://github.com/seata/seata/pull/4484)] optimize Add logo of registered enterprise,and Change image source to Alicdn - [[#4458](https://github.com/seata/seata/pull/4458)] optimize fix the README.md of metrices module - [[#4482](https://github.com/seata/seata/pull/4482)] optimize remove duplicated word ### test: Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [wangliang181230](https://github.com/wangliang181230) - [a364176773](https://github.com/a364176773) - [lvekee](https://github.com/lvekee) - [caohdgege](https://github.com/caohdgege) - [lightClouds917](https://github.com/lightClouds917) - [objcoding](https://github.com/objcoding) - [siyu](https://github.com/Pinocchio2018) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [pengten](https://github.com/pengten) - [Bughue](https://github.com/Bughue) - [doubleDimple](https://github.com/doubleDimple) - [zhaoyuguang](https://github.com/zhaoyuguang) - [liuqiufeng](https://github.com/liuqiufeng) - [jsbxyyx](https://github.com/jsbxyyx) - [lcmvs](https://github.com/lcmvs) - [onlinechild](https://github.com/onlinechild) - [xjlgod](https://github.com/xjlgod) - [h-zhi](https://github.com/h-zhi) - [tanzzj](https://github.com/tanzzj) - [miaoxueyu](https://github.com/miaoxueyu) - [selfishlover](https://github.com/selfishlover) - [tuwenlin](https://github.com/tuwenlin) - [dmego](https://github.com/dmego) - [xiaochangbai](https://github.com/xiaochangbai) - [Rubbernecker](https://github.com/Rubbernecker) - [ruanun](https://github.com/ruanun) - [huan415](https://github.com/huan415) - [drgnchan](https://github.com/drgnchan) - [cmonkey](https://github.com/cmonkey) - [13414850431](https://github.com/13414850431) - [ls9527](https://github.com/ls9527) - [xingfudeshi](https://github.com/xingfudeshi) - [spilledyear](https://github.com/spilledyear) - [kaka2code](https://github.com/kaka2code) - [iqinning](https://github.com/iqinning) - [yujianfei1986](https://github.com/yujianfei1986) - [elrond-g](https://github.com/elrond-g) - [jameslcj](https://github.com/jameslcj) - [zhouchuhang](https://github.com/zch0214) - [xujj](https://github.com/XBNGit) - [mengxzh](https://github.com/mengxzh) - [portman](https://github.com/iportman) - [anselleeyy](https://github.com/anselleeyy) - [wangyuewen](https://github.com/2858917634) - [imherewait](https://github.com/imherewait) - [wfnuser](https://github.com/wfnuser) - [zhixing](https://github.com/chenlei3641) 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
================================================ FILE: changes/en-us/1.5.2.md ================================================ ### 1.5.2 [source](https://github.com/seata/seata/archive/v1.5.2.zip) | [binary](https://github.com/seata/seata/releases/download/v1.5.2/seata-server-1.5.2.zip)
Release notes ### Seata 1.5.2 Seata 1.5.2 Released. Seata is an easy-to-use, high-performance, open source distributed transaction solution. The version is updated as follows: ### feature: - [[#4661](https://github.com/seata/seata/pull/4713)] support xid consistency load balance - [[#4676](https://github.com/seata/seata/pull/4676)] support server to expose Nacos services by mounting SLB - [[#4642](https://github.com/seata/seata/pull/4642)] support batch message parallel processing - [[#4567](https://github.com/seata/seata/pull/4567)] support where method condition(find_in_set) ### bugfix: - [[#4515](https://github.com/seata/seata/pull/4515)] fix the error of SeataTCCFenceAutoConfiguration when database unused - [[#4661](https://github.com/seata/seata/pull/4661)] fix sql exception with PostgreSQL in module console - [[#4667](https://github.com/seata/seata/pull/4682)] fix the exception in RedisTransactionStoreManager for update map During iteration - [[#4678](https://github.com/seata/seata/pull/4678)] fix the error of key transport.enableRmClientBatchSendRequest cache penetration if not configure - [[#4701](https://github.com/seata/seata/pull/4701)] fix missing command line args - [[#4607](https://github.com/seata/seata/pull/4607)] fix bug on skipping lock check - [[#4696](https://github.com/seata/seata/pull/4696)] fix oracle database insert value - [[#4726](https://github.com/seata/seata/pull/4726)] fix batch message send may return NullPointException - [[#4729](https://github.com/seata/seata/pull/4729)] fix set AspectTransactional.rollbackForClassName with wrong value - [[#4653](https://github.com/seata/seata/pull/4653)] fix the sql exception when pk is non-numeric in INSERT_ON_DUPLICATE SQL ### optimize: - [[#4650](https://github.com/seata/seata/pull/4650)] fix some security vulnerabilities - [[#4670](https://github.com/seata/seata/pull/4670)] optimize the thread pool size of branchResultMessageExecutor - [[#4662](https://github.com/seata/seata/pull/4662)] optimize rollback transaction metrics - [[#4693](https://github.com/seata/seata/pull/4693)] optimize the console navigation bar - [[#4700](https://github.com/seata/seata/pull/4700)] fix maven-compiler-plugin and maven-resources-plugin execute failed - [[#4711](https://github.com/seata/seata/pull/4711)] separate lib dependencies for deployments - [[#4720](https://github.com/seata/seata/pull/4720)] optimize pom description - [[#4728](https://github.com/seata/seata/pull/4728)] upgrade logback dependency to 1.2.9 - [[#4745](https://github.com/seata/seata/pull/4745)] support mysql8 in release package - [[#4626](https://github.com/seata/seata/pull/4626)] Replace `flatten-maven-plugin` with `easyj-maven-plugin` to fix the conflict between `shade` and `flatten` - [[#4629](https://github.com/seata/seata/pull/4629)] check relation of before status and after status when updating global session - [[#4662](https://github.com/seata/seata/pull/4662)] make EnhancedServiceLoader more readable - [[#4445](https://github.com/seata/seata/pull/4445)] optimize transaction timeout judgment - [[#4958](https://github.com/seata/seata/pull/4958)] do not execute triggerAfterCommit() in case of timeout ### test: - [[#4544](https://github.com/seata/seata/pull/4544)] optimize jackson dependencies in TransactionContextFilterTest - [[#4731](https://github.com/seata/seata/pull/4731)] fix UT failed in AsyncWorkerTest and LockManagerTest Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [pengten](https://github.com/pengten) - [YSF-A](https://github.com/YSF-A) - [tuwenlin](https://github.com/tuwenlin) - [Ifdevil](https://github.com/Ifdevil) - [wingchi-leung](https://github.com/wingchi-leung) - [liurong](https://github.com/robynron) - [opelok-z](https://github.com/opelok-z) - [a364176773](https://github.com/a364176773) - [2129zxl](https://github.com/2129zxl) - [Smery-lxm](https://github.com/Smery-lxm) - [doubleDimple](https://github.com/doubleDimple) - [wangliang181230](https://github.com/wangliang181230) - [Bughue](https://github.com/Bughue) - [AYue-94](https://github.com/AYue-94) - [lingxiao-wu](https://github.com/lingxiao-wu) - [caohdgege](https://github.com/caohdgege) - [miaoxueyu](https://github.com/miaoxueyu) 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
================================================ FILE: changes/en-us/1.6.0.md ================================================ ### 1.6.0 [source](https://github.com/seata/seata/archive/v1.6.0.zip) | [binary](https://github.com/seata/seata/releases/download/v1.6.0/seata-server-1.6.0.zip)
Release notes ### Seata 1.6.0 Seata 1.6.0 Released. Seata is an easy-to-use, high-performance, open source distributed transaction solution. The version is updated as follows: ### feature: - [[#4863](https://github.com/seata/seata/pull/4863)] support oracle and postgresql multi primary key - [[#4649](https://github.com/seata/seata/pull/4649)] seata-server support multiple registry - [[#4779](https://github.com/seata/seata/pull/4779)] support Apache Dubbo3 - [[#4479](https://github.com/seata/seata/pull/4479)] TCC mode supports tcc annotation marked on both interface and implementation class - [[#4877](https://github.com/seata/seata/pull/4877)] seata client support jdk17 - [[#4914](https://github.com/seata/seata/pull/4914)] support mysql update join sql - [[#4542](https://github.com/seata/seata/pull/4542)] support oracle timestamp types - [[#5111](https://github.com/seata/seata/pull/5111)] support Nacos contextPath - [[#4802](https://github.com/seata/seata/pull/4802)] dockerfile support arm64 ### bugfix: - [[#4780](https://github.com/seata/seata/pull/4780)] fix can't post TimeoutRollbacked event after a successful timeout rollback - [[#4954](https://github.com/seata/seata/pull/4954)] fix output expression incorrectly throws npe - [[#4817](https://github.com/seata/seata/pull/4817)] fix in high version springboot property not Standard - [[#4838](https://github.com/seata/seata/pull/4838)] fix when use Statement.executeBatch() can not generate undo log - [[#4533](https://github.com/seata/seata/pull/4533)] fix rollback event repeated and some event status not correct - [[#4912](https://github.com/seata/seata/pull/4912)] fix mysql InsertOnDuplicateUpdate column case is different and cannot be matched - [[#4543](https://github.com/seata/seata/pull/4543)] fix support Oracle nclob types - [[#4915](https://github.com/seata/seata/pull/4915)] fix failed to get server recovery properties - [[#4919](https://github.com/seata/seata/pull/4919)] fix XID port and address null:0 before coordinator.init - [[#4928](https://github.com/seata/seata/pull/4928)] fix rpcContext.getClientRMHolderMap NPE - [[#4953](https://github.com/seata/seata/pull/4953)] fix InsertOnDuplicateUpdate bypass modify pk - [[#4978](https://github.com/seata/seata/pull/4978)] fix kryo support circular reference - [[#4874](https://github.com/seata/seata/pull/4874)] fix startup failure by using OpenJDK 11 - [[#5018](https://github.com/seata/seata/pull/5018)] fix loader path in startup scripts - [[#5004](https://github.com/seata/seata/pull/5004)] fix duplicate image row for update join - [[#5032](https://github.com/seata/seata/pull/5032)] fix mysql InsertOnDuplicateUpdate sql query error caused by placeholder index calculation error - [[#5033](https://github.com/seata/seata/pull/5033)] fix null exception when sql columns is empty for insert on duplicate - [[#5038](https://github.com/seata/seata/pull/5038)] remove @EnableConfigurationProperties({SagaAsyncThreadPoolProperties.class}) - [[#5050](https://github.com/seata/seata/pull/5050)] fix global session is not change to Committed in saga mode - [[#5052](https://github.com/seata/seata/pull/5052)] fix update join condition placeholder param error - [[#5031](https://github.com/seata/seata/pull/5031)] fix mysql InsertOnDuplicateUpdate should not use null index value as image sql query condition - [[#5075](https://github.com/seata/seata/pull/5075)] fix InsertOnDuplicateUpdateExecutor could not intercept the sql which has no primary and unique key - [[#5093](https://github.com/seata/seata/pull/5093)] fix access key loss after seata server restart - [[#5092](https://github.com/seata/seata/pull/5092)] fix when seata and jpa are used together, their AutoConfiguration order is incorrect - [[#5109](https://github.com/seata/seata/pull/5109)] fix NPE caused when there is no @GlobalTransactional annotation on the RM side - [[#5098](https://github.com/seata/seata/pull/5098)] Druid disable oracle implicit cache - [[#4860](https://github.com/seata/seata/pull/4860)] fix metrics tags coverage in the seata-server side - [[#5028](https://github.com/seata/seata/pull/5028)] fix insert value null parsed as string in insert on duplicate SQL - [[#5078](https://github.com/seata/seata/pull/5078)] fix could not intercept the sql witch has no primary and unique key - [[#5097](https://github.com/seata/seata/pull/5097)] fix access key loss after server restart - [[#5131](https://github.com/seata/seata/pull/5131)] fix rollback xa connection active state - [[#5134](https://github.com/seata/seata/pull/5134)] fix hikari datasource auto proxy fail - [[#5163](https://github.com/seata/seata/pull/5163)] fix bad service configuration file and compilation failure ### 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 - [[#5124](https://github.com/seata/seata/pull/5124)] support oracle on delete tccfence logs - [[#4468](https://github.com/seata/seata/pull/4968)] support kryo 5.3.0 - [[#4807](https://github.com/seata/seata/pull/4807)] optimize docker image and oss publish - [[#4445](https://github.com/seata/seata/pull/4445)] optimize transaction timeout judgment - [[#4958](https://github.com/seata/seata/pull/4958)] do not execute triggerAfterCommit() if timeout - [[#4582](https://github.com/seata/seata/pull/4582)] redis mode support sorted set by timeout - [[#4963](https://github.com/seata/seata/pull/4963)] add ARM64 CI workflow - [[#4434](https://github.com/seata/seata/pull/4434)] remove seata-server's CMS parameters ### test: - [[#4411](https://github.com/seata/seata/pull/4411)] add UT for oracle in AT mode - [[#4794](https://github.com/seata/seata/pull/4794)] try to fix the test `DataSourceProxyTest.getResourceIdTest()` - [[#5101](https://github.com/seata/seata/pull/5101)] fix ClassNotFoundException during the zk unit test Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [renliangyu857](https://github.com/renliangyu857) - [wangliang181230](https://github.com/wangliang181230) - [a364176773](https://github.com/a364176773) - [tuwenlin](https://github.com/tuwenlin) - [lcmvs](https://github.com/lcmvs) - [AlexStocks](https://github.com/AlexStocks) - [liujunlin5168](https://github.com/liujunlin5168) - [pengten](https://github.com/pengten) - [liuqiufeng](https://github.com/liuqiufeng) - [yujianfei1986](https://github.com/yujianfei1986) - [Bughue](https://github.com/Bughue) - [AlbumenJ](https://github.com/AlbumenJ) - [doubleDimple](https://github.com/doubleDimple) - [jsbxyyx](https://github.com/jsbxyyx) - [tuwenlin](https://github.com/tuwenlin) - [CrazyLionLi](https://github.com/JavaLionLi) - [whxxxxx](https://github.com/whxxxxx) - [neillee95](https://github.com/neillee95) - [crazy-sheep](https://github.com/crazy-sheep) - [zhangzq7](https://github.com/zhangzq7) - [l81893521](https://github.com/l81893521) - [zhuyoufeng](https://github.com/zhuyoufeng) - [xingfudeshi](https://github.com/xingfudeshi) - [odidev](https://github.com/odidev) - [miaoxueyu](https://github.com/miaoxueyu) 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
================================================ FILE: changes/en-us/1.6.1.md ================================================ ### 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
================================================ FILE: changes/en-us/1.7.0.md ================================================ ### 1.7.0 [source](https://github.com/seata/seata/archive/v1.7.0.zip) | [binary](https://github.com/seata/seata/releases/download/v1.7.0/seata-server-1.7.0.zip)
Release notes ### Seata 1.7.0 Seata 1.7.0 Released. Seata is an easy-to-use, high-performance, open source distributed transaction solution. The version is updated as follows: ### feature: - [[#5476](https://github.com/seata/seata/pull/5476)] First support `native-image` for `seata-client` - [[#5495](https://github.com/seata/seata/pull/5495)] console integration saga-statemachine-designer - [[#5668](https://github.com/seata/seata/pull/5668)] compatible with file.conf and registry.conf configurations in version 1.4.2 and below ### bugfix: - [[#5682](https://github.com/seata/seata/pull/5682)] fix saga mode replay context lost startParams - [[#5671](https://github.com/seata/seata/pull/5671)] fix saga mode serviceTask inputParams json autoType convert exception - [[#5194](https://github.com/seata/seata/pull/5194)] fix wrong keyword order for oracle when creating a table - [[#5021](https://github.com/seata/seata/pull/5201)] Fix JDK Reflection for Spring origin proxy failed in JDK17 - [[#5023](https://github.com/seata/seata/pull/5203)] Fix `seata-core` dependency transitive conflict in `seata-dubbo` - [[#5224](https://github.com/seata/seata/pull/5224)] fix oracle initialize script index_name is duplicate - [[#5233](https://github.com/seata/seata/pull/5233)] fix the inconsistent configuration item names related to LoadBalance - [[#5266](https://github.com/seata/seata/pull/5265)] fix server console has queried the released lock - [[#5245](https://github.com/seata/seata/pull/5245)] fix the incomplete dependency of distribution module - [[#5239](https://github.com/seata/seata/pull/5239)] fix `getConfig` throw `ClassCastException` when use JDK proxy - [[#5281](https://github.com/seata/seata/pull/5281)] parallel request handle throw IndexOutOfBoundsException - [[#5288](https://github.com/seata/seata/pull/5288)] fix auto-increment of pk columns in Oracle in AT mode - [[#5287](https://github.com/seata/seata/pull/5287)] fix auto-increment of pk columns in PostgreSQL in AT mode - [[#5299](https://github.com/seata/seata/pull/5299)] fix GlobalSession deletion when retry rollback or retry commit timeout - [[#5307](https://github.com/seata/seata/pull/5307)] fix that keywords don't add escaped characters - [[#5311](https://github.com/seata/seata/pull/5311)] remove RollbackRetryTimeout sessions during in file storage recover - [[#4734](https://github.com/seata/seata/pull/4734)] check if table meta cache should be refreshed in AT mode - [[#5316](https://github.com/seata/seata/pull/5316)] fix G1 jvm parameter in jdk8 - [[#5321](https://github.com/seata/seata/pull/5321)] fix When the rollback logic on the TC side returns RollbackFailed, the custom FailureHandler is not executed - [[#5332](https://github.com/seata/seata/pull/5332)] fix bugs found in unit tests - [[#5145](https://github.com/seata/seata/pull/5145)] fix global session is always begin in saga mode - [[#5413](https://github.com/seata/seata/pull/5413)] fix bad service configuration file and compilation failure - [[#5415](https://github.com/seata/seata/pull/5415)] fix transaction timeout on client side not execute hook and failureHandler - [[#5447](https://github.com/seata/seata/pull/5447)] fix oracle xa mode cannnot be used By same database - [[#5472](https://github.com/seata/seata/pull/5472)] fix if using `@GlobalTransactional` in RM, `ShouldNeverHappenException` will be thrown - [[#5535](https://github.com/seata/seata/pull/5535)] fix the log file path was loaded incorrectly - [[#5538](https://github.com/seata/seata/pull/5538)] fix finished transaction swallows exception when committing - [[#5539](https://github.com/seata/seata/pull/5539)] fix the full table scan issue with 'setDate' condition in Oracle 10g - [[#5540](https://github.com/seata/seata/pull/5540)] fix GlobalStatus=9 can't be cleared in DB storage mode - [[#5552](https://github.com/seata/seata/pull/5552)] fix mariadb rollback failed - [[#5583](https://github.com/seata/seata/pull/5583)] fix grpc interceptor xid unbinding problem - [[#5602](https://github.com/seata/seata/pull/5602)] fix log in participant transaction role - [[#5645](https://github.com/seata/seata/pull/5645)] fix oracle insert undolog failed - [[#5659](https://github.com/seata/seata/pull/5659)] fix the issue of case sensitivity enforcement on the database after adding escape characters to keywords - [[#5663](https://github.com/seata/seata/pull/5663)] bugfix: fix the timeout is null when the connectionProxyXA connection is reused - [[#5675](https://github.com/seata/seata/pull/5675)] bugfix: fix compatibility between xxx.grouplist and grouplist.xxx configuration items - [[#5690](https://github.com/seata/seata/pull/5690)] fix console print `unauthorized error` - [[#5711](https://github.com/seata/seata/pull/5711)] fix get configuration item contains underlined error ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more - [[#5212](https://github.com/seata/seata/pull/5212)] optimize log message level - [[#5237](https://github.com/seata/seata/pull/5237)] optimize exception log message print(EnhancedServiceLoader.loadFile#cahtch) - [[#5089](https://github.com/seata/seata/pull/5089)] optimize the check of the delay value of the TCC fence log clean task - [[#5243](https://github.com/seata/seata/pull/5243)] optimize kryo 5.4.0 optimize compatibility with jdk17 - [[#5153](https://github.com/seata/seata/pull/5153)] Only AT mode try to get channel with other app - [[#5177](https://github.com/seata/seata/pull/5177)] If `server.session.enable-branch-async-remove` is true, delete the branch asynchronously and unlock it synchronously. - [[#5273](https://github.com/seata/seata/pull/5273)] Optimize the compilation configuration of the `protobuf-maven-plugin` plug-in to solve the problem of too long command lines in higher versions. - [[#5303](https://github.com/seata/seata/pull/5303)] remove startup script the -Xmn configuration - [[#5325](https://github.com/seata/seata/pull/5325)] add store mode,config type and registry type log info - [[#5315](https://github.com/seata/seata/pull/5315)] optimize the log of SPI - [[#5323](https://github.com/seata/seata/pull/5323)] add time info for global transaction timeout log - [[#5414](https://github.com/seata/seata/pull/5414)] optimize transaction fail handler - [[#5537](https://github.com/seata/seata/pull/5537)] optimize transaction log on client side - [[#5541](https://github.com/seata/seata/pull/5541)] optimize server log output - [[#5548](https://github.com/seata/seata/pull/5548)] update expire gpg key and publish workflow - [[#5638](https://github.com/seata/seata/pull/5638)] optimize: set server's transaction level to READ_COMMITTED - [[#5646](https://github.com/seata/seata/pull/5646)] refactor ColumnUtils and EscapeHandler - [[#5648](https://github.com/seata/seata/pull/5648)] optimize server logs print - [[#5647](https://github.com/seata/seata/pull/5647)] support case-sensitive attributes for table and column metadata - [[#5678](https://github.com/seata/seata/pull/5678)] optimize escape character for case of columnNames - [[#5685](https://github.com/seata/seata/pull/5685)] optimize github actions for CodeQL, skywalking-eyes and checkout - [[#5700](https://github.com/seata/seata/pull/5700)] optimize distributed lock log ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] fix some security vulnerabilities - [[#5683](https://github.com/seata/seata/pull/5683)] add Hessian Serializer WhiteDenyList - [[#5696](https://github.com/seata/seata/pull/5696)] fix several node.js security vulnerabilities ### test: - [[#5380](https://github.com/seata/seata/pull/5380)] fix UpdateExecutorTest failed - [[#5382](https://github.com/seata/seata/pull/5382)] fix multi spring version test failed Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [xssdpgy](https://github.com/xssdpgy) - [albumenj](https://github.com/albumenj) - [PeppaO](https://github.com/PeppaO) - [yuruixin](https://github.com/yuruixin) - [dmego](https://github.com/dmego) - [CrazyLionLi](https://github.com/JavaLionLi) - [xingfudeshi](https://github.com/xingfudeshi) - [Bughue](https://github.com/Bughue) - [pengten](https://github.com/pengten) - [wangliang181230](https://github.com/wangliang181230) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [funky-eyes](https://github.com/funky-eyes) - [isharpever](https://github.com/isharpever) - [ZhangShiYeChina](https://github.com/ZhangShiYeChina) - [mxsm](https://github.com/mxsm) - [l81893521](https://github.com/l81893521) - [liuqiufeng](https://github.com/liuqiufeng) - [yixia](https://github.com/wt-better) - [jumtp](https://github.com/jumtp) 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
================================================ FILE: changes/en-us/1.7.1.md ================================================ Add changes here for all PR submitted to the develop branch. ### feature: - [[#5803](https://github.com/seata/seata/pull/5803)] docker image supports JVM parameter injection ### bugfix: - [[#5749](https://github.com/seata/seata/pull/5749)] case of the pk col-name in the business sql is inconsistent with the case in the table metadata, resulting in a rollback failure - [[#5762](https://github.com/seata/seata/pull/5762)] change some fields type of TableMetaCache to avoid integer overflow - [[#5769](https://github.com/seata/seata/pull/5769)] fix the problem that the parameter prefix requirement of the setAttachment method in sofa-rpc is not met - [[#5814](https://github.com/seata/seata/pull/5814)] fix XA transaction start exception and rollback failure - [[#5771](https://github.com/seata/seata/pull/5771)] insert executor keywords unescape - [[#5819](https://github.com/seata/seata/pull/5814)] fix oracle column alias cannot find ### optimize: - [[#5804](https://github.com/seata/seata/pull/5804)] optimize docker default timezone - [[#5815](https://github.com/seata/seata/pull/5815)] support the nacos application name property - [[#5820](https://github.com/seata/seata/pull/5820)] unified log output directory - [[#5822](https://github.com/seata/seata/pull/5822)] upgrade some deprecated github actions - [[#5168](https://github.com/seata/seata/pull/5168)] optimize: publish images based on java `8`, `8-slim`, `17`, `17-slim` ### security: - [[#5728](https://github.com/seata/seata/pull/5728)] fix some dependencies vulnerability - [[#5766](https://github.com/seata/seata/pull/5766)] fix some serializer vulnerabilities ### test: - [[#XXX](https://github.com/seata/seata/pull/XXX)] XXX Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [capthua](https://github.com/capthua) - [robynron](https://github.com/robynron) - [dmego](https://github.com/dmego) - [xingfudeshi](https://github.com/xingfudeshi) - [hadoop835](https://github.com/hadoop835) - [funky-eyes](https://github.com/funky-eyes) - [DroidEye2ONGU](https://github.com/DroidEye2ONGU) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. ================================================ FILE: changes/en-us/1.8.0.md ================================================ ### 1.8.0 [source](https://github.com/seata/seata/archive/v1.8.0.zip) | [binary](https://github.com/seata/seata/releases/download/v1.8.0/seata-server-1.8.0.zip)
Release notes ### Seata 1.8.0 Seata 1.8.0 Released. Seata is an easy-to-use, high-performance, open source distributed transaction solution. The version is updated as follows: ### feature: - [[#3672](https://github.com/seata/seata/pull/3672)] support Dameng database - [[#5892](https://github.com/seata/seata/pull/5892)] support PolarDB-X 2.0 database ### bugfix: - [[#5833](https://github.com/seata/seata/pull/5833)] bugfix: fix TC retry rollback wrongly, after the XA transaction fail and rollback - [[#5884](https://github.com/seata/seata/pull/5884)] fix dm escaped characters for upper and lower case column names - [[#5931](https://github.com/seata/seata/pull/5931)] fix the issue of missing sentinel password in store redis mode - [[#5970](https://github.com/seata/seata/pull/5970)] fix some configurations that are not deprecated show "Deprecated" ### optimize: - [[#5866](https://github.com/seata/seata/pull/5866)] some minor syntax optimization - [[#5889](https://github.com/seata/seata/pull/5889)] remove dependency without license - [[#5890](https://github.com/seata/seata/pull/5890)] remove 7z format compression support - [[#5891](https://github.com/seata/seata/pull/5891)] remove mariadb.jdbc dependency - [[#5828](https://github.com/seata/seata/pull/5828)] fix codecov chart not display - [[#5927](https://github.com/seata/seata/pull/5927)] optimize some scripts related to Apollo - [[#5918](https://github.com/seata/seata/pull/5918)] standardized the properties of codecov.yml - [[#5939](https://github.com/seata/seata/pull/5939)] support jmx port in seata ### security: - [[#5867](https://github.com/seata/seata/pull/5867)] fix npm package vulnerabilities - [[#5898](https://github.com/seata/seata/pull/5898)] fix npm package vulnerabilities ### test: - [[#5888](https://github.com/seata/seata/pull/5888)] remove sofa test cases - [[#5831](https://github.com/seata/seata/pull/5831)] upgrade druid and add `test-druid.yml` - [[#5862](https://github.com/seata/seata/pull/5862)] fix unit test in java 21 - [[#5914](https://github.com/seata/seata/pull/5914)] upgrade native-lib-loader version - [[#5960](https://github.com/seata/seata/pull/5960)] fix zookeeper UT failed - [[#5981](https://github.com/seata/seata/pull/5981)] fixed jedis version for `seata-server` Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [capthua](https://github.com/capthua) - [funky-eyes](https://github.com/funky-eyes) - [iquanzhan](https://github.com/iquanzhan) - [leizhiyuan](https://github.com/leizhiyuan) - [l81893521](https://github.com/l81893521) - [PeppaO](https://github.com/PeppaO) - [wangliang181230](https://github.com/wangliang181230) - [hsien999](https://github.com/hsien999) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. ================================================ FILE: changes/en-us/2.0.0.md ================================================ ### 2.0.0 [source](https://github.com/seata/seata/archive/v2.0.0.zip) | [binary](https://github.com/seata/seata/releases/download/v2.0.0/seata-server-2.0.0.zip)
Release notes ### Seata 2.0.0 Seata 2.0.0 Released. Seata is an easy-to-use, high-performance, open source distributed transaction solution. The version is updated as follows: ### feature: - [[#5165](https://github.com/seata/seata/pull/5165)] optimize TCC structure, supporting API access. add integration layer module(seata-integration-tx-api) for transaction process definition and proxy enhancement. - [[#5352](https://github.com/seata/seata/pull/5352)] add jackson json parser and gson json parser for tcc business action context - [[#5377](https://github.com/seata/seata/pull/5377)] make AbstractHttpExecutor.class support http put - [[#5396](https://github.com/seata/seata/pull/5396)] TC log appender metric - [[#5118](https://github.com/seata/seata/pull/5118)] support two-stage concurrent notification execution - [[#5529](https://github.com/seata/seata/pull/5529)] docker image supports JVM parameter injection - [[#3887](https://github.com/seata/seata/pull/3887)] add SQL Server database support in AT mode - [[#4033](https://github.com/seata/seata/pull/4033)] add SQLServer support for Server DB storage mode - [[#5717](https://github.com/seata/seata/pull/5717)] compatible with file.conf and registry.conf configurations in version 1.4.2 and below - [[#5842](https://github.com/seata/seata/pull/5842)] adding metainfo to docker image - [[#5902](https://github.com/seata/seata/pull/5902)] support IPv6 - [[#5907](https://github.com/seata/seata/pull/5907)] support polardb-x 2.0 in AT mode - [[#5932](https://github.com/seata/seata/pull/5932)] support Dameng database - [[#5946](https://github.com/seata/seata/pull/5946)] add sqlserver's adaptation to the console paging interface - [[#5226](https://github.com/seata/seata/pull/5226)] support raft cluster and store mode ### bugfix: - [[#5677](https://github.com/seata/seata/pull/5677)] fix saga mode serviceTask inputParams json autoType convert exception - [[#5194](https://github.com/seata/seata/pull/5194)] fix wrong keyword order for oracle when creating a table - [[#5021](https://github.com/seata/seata/pull/5201)] fix JDK Reflection for Spring origin proxy failed in JDK17 - [[#5023](https://github.com/seata/seata/pull/5203)] fix `seata-core` dependency transitive conflict in `seata-dubbo` - [[#5224](https://github.com/seata/seata/pull/5224)] fix oracle initialize script index_name is duplicate - [[#5233](https://github.com/seata/seata/pull/5233)] fix the inconsistent configuration item names related to LoadBalance - [[#5245](https://github.com/seata/seata/pull/5245)] fix the incomplete dependency of distribution module - [[#5239](https://github.com/seata/seata/pull/5239)] fix `getConfig` throw `ClassCastException` when use JDK proxy - [[#5266](https://github.com/seata/seata/pull/5265)] fix server console has queried the released lock - [[#5282](https://github.com/seata/seata/pull/5282)] parallel request handle throw IndexOutOfBoundsException - [[#5294](https://github.com/seata/seata/pull/5294)] fix auto-increment of pk columns in PostgreSQL/Oracle in AT mode - [[#5298](https://github.com/seata/seata/pull/5298)] don't remove GlobalSession when retry rollback or retry commit timeout - [[#5304](https://github.com/seata/seata/pull/5304)] remove RollbackRetryTimeout sessions during in file storage recover - [[#5310](https://github.com/seata/seata/pull/5310)] fix that keywords don't add escaped characters - [[#5318](https://github.com/seata/seata/pull/5318)] fix G1 jvm parameter in jdk8 - [[#5330](https://github.com/seata/seata/pull/5330)] fix bugs found in unit tests - [[#5337](https://github.com/seata/seata/pull/5337)] fix bugs found in feature#5165 about sorting problem of multiple interceptor under the spring used environment, by the way fix the BeforeTransaction(AfterTransaction) transaction ordering problem when the order is consistent - [[#5347](https://github.com/seata/seata/pull/5347)] Fix console print `unauthorized error` - [[#5355](https://github.com/seata/seata/pull/5355)] fix bug when customizing context-path - [[#5362](https://github.com/seata/seata/pull/5362)] fix When the rollback logic on the TC side returns RollbackFailed, the custom FailureHandler is not executed - [[#5372](https://github.com/seata/seata/pull/5372)] fix transaction timeout on client side not execute hook and failureHandler - [[#4734](https://github.com/seata/seata/pull/4734)] check if table meta cache should be refreshed in AT mode - [[#5426](https://github.com/seata/seata/pull/5426)] fix the GlobalTransactional annotation npe issue. - [[#5464](https://github.com/seata/seata/pull/5464)] fix global session is always begin in saga mode - [[#5478](https://github.com/seata/seata/pull/5478)] fix finished transaction swallows exception when committing - [[#5491](https://github.com/seata/seata/pull/5491)] fix method name not print in logs - [[#5449](https://github.com/seata/seata/pull/5449)] fix Oracle XA transaction reentrant issues - [[#5531](https://github.com/seata/seata/pull/5531)] fix the log file path was loaded incorrectly - [[#5523](https://github.com/seata/seata/pull/5523)] fix GlobalStatus=9 can't be cleared in DB storage mode - [[#5558](https://github.com/seata/seata/pull/5558)] fix mariadb rollback failed - [[#5556](https://github.com/seata/seata/pull/5556)] fix oracle insert undolog failed - [[#5579](https://github.com/seata/seata/pull/5579)] fix RM_CHANNELS get npe when resourceId is empty - [[#5577](https://github.com/seata/seata/pull/5577)] fix grpc interceptor xid unbinding problem - [[#5594](https://github.com/seata/seata/pull/5594)] fix log in participant transaction role - [[#5604](https://github.com/seata/seata/pull/5604)] fix the `asyncCommit` and `queueToRetryCommit` always failed in db mode - [[#5661](https://github.com/seata/seata/pull/5661)] bugfix: the timeout is null when the connectionProxyXA connection is reused - [[#5678](https://github.com/seata/seata/pull/5675)] bugfix: fix compatibility between xxx.grouplist and grouplist.xxx configuration items - [[#5715](https://github.com/seata/seata/pull/5715)] fix get configuration item contains underlined error - [[#5748](https://github.com/seata/seata/pull/5748)] case of the pk col-name in the business sql is inconsistent with the case in the table metadata, resulting in a rollback failure - [[#5745](https://github.com/seata/seata/pull/5745)] fix the problem that the parameter prefix requirement of the setAttachment method in sofa-rpc is not met - [[#5772](https://github.com/seata/seata/pull/5762)] change some fields type of TableMetaCache to avoid integer overflow - [[#5787](https://github.com/seata/seata/pull/5794)] Solution cluster cannot be customized when redis serves as the registry - [[#5810](https://github.com/seata/seata/pull/5810)] fix XA transaction start exception and rollback failure caused by druid dependency conflict - [[#5821](https://github.com/seata/seata/pull/5821)] fix insert executor keywords unescape - [[#5835](https://github.com/seata/seata/pull/5835)] bugfix: fix TC retry rollback wrongly, after the XA transaction fail and rollback - [[#5881](https://github.com/seata/seata/pull/5880)] fix delete branch table unlock failed - [[#5930](https://github.com/seata/seata/pull/5930)] fix the issue of missing sentinel password in store redis mode - [[#5958](https://github.com/seata/seata/pull/5958)] required to be unlocked when a re-election occurs in a commit state - [[#5971](https://github.com/seata/seata/pull/5971)] fix some configurations that are not deprecated show "Deprecated" - [[#5977](https://github.com/seata/seata/pull/5977)] fix that rpcserver is not closed when raftServer is closed - [[#5954](https://github.com/seata/seata/pull/5954)] fix the issue of saved branch session status does not match the actual branch session status - [[#5990](https://github.com/seata/seata/pull/5990)] fix the issue that the Lua script is not synchronized when the redis sentinel master node is down - [[#5887](https://github.com/seata/seata/pull/5887)] fix global transaction hook repeat execute - [[#6018](https://github.com/seata/seata/pull/6018)] fix incorrect metric report - [[#6024](https://github.com/seata/seata/pull/6024)] fix the white screen after click the "View Global Lock" button on the transaction info page in the console - [[#6015](https://github.com/seata/seata/pull/6015)] fix can't integrate dubbo with spring - [[#6049](https://github.com/seata/seata/pull/6049)] fix registry type for raft under the network interruption did not carry out the sleep 1s - [[#6050](https://github.com/seata/seata/pull/6050)] change RaftServer#destroy to wait all shutdown procedures done ### optimize: - [[#6033](https://github.com/seata/seata/pull/6033)] optimize the isReference judgment logic in HSFRemotingParser, remove unnecessary judgment about FactoryBean - [[#5966](https://github.com/seata/seata/pull/5966)] decouple saga expression handling and remove evaluator package - [[#5928](https://github.com/seata/seata/pull/5928)] add Saga statelang semantic validation - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more - [[#5212](https://github.com/seata/seata/pull/5212)] optimize log message level - [[#5237](https://github.com/seata/seata/pull/5237)] optimize exception log message print(EnhancedServiceLoader.loadFile#cahtch) - [[#5243](https://github.com/seata/seata/pull/5243)] optimize kryo 5.4.0 optimize compatibility with jdk17 - [[#5153](https://github.com/seata/seata/pull/5153)] Only AT mode try to get channel with other app - [[#5177](https://github.com/seata/seata/pull/5177)] If `server.session.enable-branch-async-remove` is true, delete the branch asynchronously and unlock it synchronously. - [[#4858](https://github.com/seata/seata/pull/4858)] reorganize the usage of task session manager - [[#4881](https://github.com/seata/seata/pull/4881)] reorganize the usage of Sessionmanager and listener - [[#5273](https://github.com/seata/seata/pull/5273)] Optimize the compilation configuration of the `protobuf-maven-plugin` plug-in to solve the problem of too long command lines in higher versions. - [[#5278](https://github.com/seata/seata/pull/5278)] clean multi-sessionmanager-instance pattern - [[#5302](https://github.com/seata/seata/pull/5302)] remove startup script the -Xmn configuration - [[#4880](https://github.com/seata/seata/pull/4880)] optimize logs when commit/rollback catch an exception - [[#5322](https://github.com/seata/seata/pull/5322)] optimize the log of SPI - [[#5323](https://github.com/seata/seata/pull/5323)] add time info for global transaction timeout log - [[#5328](https://github.com/seata/seata/pull/5333)] add corresponding lua implementation for Redis mode of global transaction and transaction storage - [[#5341](https://github.com/seata/seata/pull/5341)] optimize gRPC Interceptor for TCC mode - [[#5342](https://github.com/seata/seata/pull/5342)] optimize the check of the delay value of the TCC fence log clean task - [[#5325](https://github.com/seata/seata/pull/5325)] add store mode,config type and registry type log info - [[#5351](https://github.com/seata/seata/pull/5351)] optimize RPC filter for TCC mode - [[#5354](https://github.com/seata/seata/pull/5354)] reconstruct the RPC integration module - [[#5370](https://github.com/seata/seata/pull/5370)] optimize transaction fail handler - [[#5461](https://github.com/seata/seata/pull/5461)] optimize license workflow - [[#5456](https://github.com/seata/seata/pull/5456)] refactor ColumnUtils and EscapeHandler - [[#5438](https://github.com/seata/seata/pull/5438)] optimize code style properties - [[#5471](https://github.com/seata/seata/pull/5471)] optimize transaction log on client side - [[#5485](https://github.com/seata/seata/pull/5485)] optimize server log output - [[#4907](https://github.com/seata/seata/pull/4907)] optimize thread scheduling and code - [[#5487](https://github.com/seata/seata/pull/5487)] mark the lockholder of branchsession as final - [[#5519](https://github.com/seata/seata/pull/5519)] optimize FenceHandler for oracle - [[#5501](https://github.com/seata/seata/pull/5501)] support updating transaction state with optimistic locking - [[#5419](https://github.com/seata/seata/pull/5419)] optimize images based on java 8/17 and support maven-3.9.0 - [[#5549](https://github.com/seata/seata/pull/5549)] update expire gpg key and publish workflow - [[#5576](https://github.com/seata/seata/pull/5576)] The common fence clean task is only initiated when useTCCFence is set to true - [[#5623](https://github.com/seata/seata/pull/5623)] optimize possible conflict between asyncCommitting thread and retryCommitting thread - [[#5553](https://github.com/seata/seata/pull/5553)] support case-sensitive attributes for table and column metadata - [[#5644](https://github.com/seata/seata/pull/5644)] optimize server logs print - [[#5680](https://github.com/seata/seata/pull/5680)] optimize escape character for case of columnNames - [[#5714](https://github.com/seata/seata/pull/5714)] optimize distributed lock log - [[#5723](https://github.com/seata/seata/pull/5723)] optimize docker default timezone - [[#5779](https://github.com/seata/seata/pull/5779)] remove unnecessary log outputs and unify the log output path. - [[#5802](https://github.com/seata/seata/pull/5802)] set server's transaction level to READ_COMMITTED - [[#5783](https://github.com/seata/seata/pull/5783)] support the nacos application name property - [[#5524](https://github.com/seata/seata/pull/5524)] support for more operational commands in seata-server.sh - [[#5836](https://github.com/seata/seata/pull/5836)] separate MySQL from Mariadb implementations - [[#5869](https://github.com/seata/seata/pull/5869)] some minor syntax optimization - [[#5885](https://github.com/seata/seata/pull/5885)] optimize log in ConnectionProxyXA - [[#5894](https://github.com/seata/seata/pull/5894)] remove dependency without license - [[#5895](https://github.com/seata/seata/pull/5895)] remove 7z format compression support - [[#5896](https://github.com/seata/seata/pull/5896)] remove mariadb.jdbc dependency - [[#5384](https://github.com/seata/seata/pull/5384)] unified project version - [[#5419](https://github.com/seata/seata/pull/5419)] publish images based on java 8/17 and support maven-3.9.0 - [[#5829](https://github.com/seata/seata/pull/5829)] fix codecov chart not display - [[#5878](https://github.com/seata/seata/pull/5878)] optimize `httpcore` and `httpclient` dependencies - [[#5917](https://github.com/seata/seata/pull/5917)] upgrade native-lib-loader version - [[#5926](https://github.com/seata/seata/pull/5926)] optimize some scripts related to Apollo - [[#5938](https://github.com/seata/seata/pull/5938)] support jmx port in seata - [[#5951](https://github.com/seata/seata/pull/5951)] remove un support config in jdk17 - [[#5959](https://github.com/seata/seata/pull/5959)] modify code style and remove unused import - [[#6002](https://github.com/seata/seata/pull/6002)] remove fst serialization - [[#6045](https://github.com/seata/seata/pull/6045)] optimize derivative product check base on mysql - [[#6342](https://github.com/seata/seata/pull/6342)] compatible with integration-tx-api module ### security: - [[#5642](https://github.com/seata/seata/pull/5642)] add Hessian Serializer WhiteDenyList - [[#5694](https://github.com/seata/seata/pull/5694)] fix several node.js security vulnerabilities - [[#5801](https://github.com/seata/seata/pull/5801)] fix some dependencies vulnerability - [[#5805](https://github.com/seata/seata/pull/5805)] fix some serializer vulnerabilities - [[#5868](https://github.com/seata/seata/pull/5868)] fix npm package vulnerabilities - [[#5916](https://github.com/seata/seata/pull/5916)] upgrade nodejs dependency - [[#5942](https://github.com/seata/seata/pull/5942)] upgrade dependencies version - [[#5987](https://github.com/seata/seata/pull/5987)] upgrade some dependencies version - [[#6013](https://github.com/seata/seata/pull/6013)] upgrade seata-server spring version ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] - [[#5309](https://github.com/seata/seata/pull/5309)] add unit test [ArrayUtils, ConfigTools, MapUtil] - [[#5335](https://github.com/seata/seata/pull/5335)] add unit test [EnhancedServiceLoader,ExtensionDefinition,SizeUtilTest,ReflectionUtil,LowerCaseLinkHashMap,FileLoader,ObjectHolder] - [[#5366](https://github.com/seata/seata/pull/5366)] fix UpdateExecutorTest failed - [[#5383](https://github.com/seata/seata/pull/5383)] fix multi spring version test failed - [[#5391](https://github.com/seata/seata/pull/5391)] add unit test for config module - [[#5428](https://github.com/seata/seata/pull/5428)] fix FileTransactionStoreManagerTest failed - [[#5622](https://github.com/seata/seata/pull/5622)] add unit test [ExporterType, RegistryType] - [[#5637](https://github.com/seata/seata/pull/5637)] add unit test [BatchResultMessage, HeartbeatMessage, RegisterRMResponse, ResultCode, RegisterTMResponse, MergeResultMessage, MergedWarpMessage, Version] - [[#5893](https://github.com/seata/seata/pull/5893)] remove sofa test cases - [[#5845](https://github.com/seata/seata/pull/5845)] upgrade druid and add `test-druid.yml` - [[#5863](https://github.com/seata/seata/pull/5863)] fix unit test in java 21 - [[#5986](https://github.com/seata/seata/pull/5986)] fix zookeeper UT failed - [[#5995](https://github.com/seata/seata/pull/5995)] add test cases for RaftClusterMetadataMsg - [[#6001](https://github.com/seata/seata/pull/6001)] add test cases for RaftMsgExecute under branch package - [[#5996](https://github.com/seata/seata/pull/5996)] add test cases for RaftMsgExecute under global package - [[#6003](https://github.com/seata/seata/pull/6003)] add test cases for RaftMsgExecute under lock package - [[#6009](https://github.com/seata/seata/pull/6009)] add test cases for RaftServerFactory ### Contributors: Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [xssdpgy](https://github.com/xssdpgy) - [albumenj](https://github.com/albumenj) - [PeppaO](https://github.com/PeppaO) - [yuruixin](https://github.com/yuruixin) - [CrazyLionLi](https://github.com/JavaLionLi) - [xingfudeshi](https://github.com/xingfudeshi) - [Bughue](https://github.com/Bughue) - [pengten](https://github.com/pengten) - [wangliang181230](https://github.com/wangliang181230) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [funky-eyes](https://github.com/funky-eyes) - [isharpever](https://github.com/isharpever) - [mxsm](https://github.com/mxsm) - [liuqiufeng](https://github.com/liuqiufeng) - [l81893521](https://github.com/l81893521) - [dmego](https://github.com/dmego) - [zsp419](https://github.com/zsp419) - [tuwenlin](https://github.com/tuwenlin) - [sixlei](https://github.com/sixlei) - [yixia](https://github.com/wt-better) - [capthua](https://github.com/capthua) - [robynron](https://github.com/robynron) - [XQDD](https://github.com/XQDD) - [Weelerer](https://github.com/Weelerer) - [Ifdevil](https://github.com/Ifdevil) - [iquanzhan](https://github.com/iquanzhan) - [leizhiyuan](https://github.com/leizhiyuan) - [Aruato](https://github.com/Aruato) - [ptyin](https://github.com/ptyin) - [jsbxyyx](https://github.com/jsbxyyx) - [xxxcrel](https://github.com/xxxcrel) 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
================================================ FILE: changes/en-us/2.1.0.md ================================================ Add changes here for all PR submitted to the 2.x branch. ### feature: - [[#6370](https://github.com/seata/seata/pull/6370)] seata saga decouple spring, optimize architecture. - [[#6205](https://github.com/apache/incubator-seata/pull/6205)] mock server - [[#6169](https://github.com/apache/incubator-seata/pull/6169)] full support for states in the refactored state machine designer - [[#6230](https://github.com/apache/incubator-seata/pull/6230)] RocketMQ transaction are supported - [[#6326](https://github.com/apache/incubator-seata/pull/6326)] support raft node metadata sync - [[#6415](https://github.com/apache/incubator-seata/pull/6415)] support autolayout in seata-statemachine-designer ### bugfix: - [[#6090](https://github.com/apache/incubator-seata/pull/6090)] fix the TCC aspect exception handling process, do not wrapping the internal call exceptions - [[#6075](https://github.com/apache/incubator-seata/pull/6075)] fix missing table alias for on update column of image SQL - [[#6086](https://github.com/apache/incubator-seata/pull/6086)] fix oracle column alias cannot find - [[#6085](https://github.com/apache/incubator-seata/pull/6085)] fix jdk9+ compile error - [[#6101](https://github.com/apache/incubator-seata/pull/6101)] fix the consumer can't generate tcc proxy in dubbo 3.x version - [[#6077](https://github.com/apache/incubator-seata/pull/6077)] fix could not rollback when table with multiple primary - [[#6121](https://github.com/apache/incubator-seata/pull/6121)] fix the branch transaction order error when rolling back - [[#6182](https://github.com/apache/incubator-seata/pull/6182)] fix guava-32.0.0-jre.jar zip file is empty in ci - [[#6196](https://github.com/apache/incubator-seata/pull/6196)] fix asf config file format error - [[#6143](https://github.com/apache/incubator-seata/pull/6143)] gracefully shut down the server - [[#6204](https://github.com/apache/incubator-seata/pull/6204)] fix the problem that The incorrect configuration needs to be fixed - [[#6248](https://github.com/apache/incubator-seata/pull/6248)] fix JDBC resultSet, statement, connection closing order - [[#6261](https://github.com/apache/incubator-seata/pull/6261)] AT mode support the URL of a PGSQL cluster - [[#6256](https://github.com/apache/incubator-seata/pull/6256)] fix raft-discovery cannot read registry configuration for seata-all sdk - [[#6232](https://github.com/apache/incubator-seata/pull/6232)] convert to utf8mb4 if mysql column is json type - [[#6278](https://github.com/apache/incubator-seata/pull/6278)] fix ProtocolV1SerializerTest failed - [[#6324](https://github.com/apache/incubator-seata/pull/6324)] fix Parse protocol file failed - [[#6331](https://github.com/apache/incubator-seata/pull/6331)] fixed the problem that TCC nested transactions cannot add TwoPhaseBusinessAction and GlobalTransactional annotations at the same time - [[#6354](https://github.com/apache/incubator-seata/pull/6354)] fix dynamic degradation does not work properly - [[#6363](https://github.com/apache/incubator-seata/pull/6363)] fix known problems of docker image - [[#6372](https://github.com/apache/incubator-seata/pull/6372)] fix initializing the sql file postgresql.sql index name conflict - [[#6380](https://github.com/apache/incubator-seata/pull/6380)] fix sql exception when checking for the existence of the UNDO_LOG table on SQL server - [[#6385](https://github.com/apache/incubator-seata/pull/6385)] fix the bug where Role.participant does not execute hooks but clears them. - [[#6465](https://github.com/apache/incubator-seata/pull/6465)] fix(6257): fix saga mode replay context lost start in 2.x - [[#6469](https://github.com/apache/incubator-seata/pull/6469)] fix Error in insert sql of [lock_table] data table to sqlserver database - [[#6496](https://github.com/apache/incubator-seata/pull/6496)] fix XA did not rollback but close when executing a long-running SQL(or deadlock SQL) - [[#6493](https://github.com/apache/incubator-seata/pull/6493)] fix SQLServer-related SQL error in seata server when using database of SQLServer - [[#6497](https://github.com/apache/incubator-seata/pull/6497)] fix tcc properties class when autoconfigure - [[#6554](https://github.com/apache/incubator-seata/pull/6554)] fix unfixed serializer - [[#6555](https://github.com/apache/incubator-seata/pull/6555)] businessActionContext is compatible with io seata - [[#6553](https://github.com/apache/incubator-seata/pull/6553)] fix saga "cannot matching status" - [[#6575](https://github.com/apache/incubator-seata/pull/6575)] fix io.seata ActionInterceptorHandler use org.apache.seata BusinessActionContextParameter ### optimize: - [[#6031](https://github.com/apache/incubator-seata/pull/6031)] add a check for the existence of the undolog table - [[#6089](https://github.com/apache/incubator-seata/pull/6089)] modify the semantics of RaftServerFactory and remove unnecessary singleton - [[#4473](https://github.com/apache/incubator-seata/pull/4473)] rm appdata size limit - [[#6071](https://github.com/apache/incubator-seata/pull/6071)] add git infos to jars - [[#6042](https://github.com/apache/incubator-seata/pull/6042)] add secure authentication to interfaces in ClusterController - [[#6091](https://github.com/apache/incubator-seata/pull/6091)] Optimizing the method of obtaining the tc address during raft authentication - [[#6098](https://github.com/apache/incubator-seata/pull/6098)] optimize the retry logic in the acquireMetadata method - [[#6034](https://github.com/apache/incubator-seata/pull/6034)] using namespace from command line when deployment with helm charts - [[#6116](https://github.com/apache/incubator-seata/pull/6034)] remove lgtm.com stuff - [[#6148](https://github.com/apache/incubator-seata/pull/6148)] support Nacos ram role authentication - [[#6145](https://github.com/apache/incubator-seata/pull/6145)] upgrade jettison to 1.5.4 - [[#6164](https://github.com/apache/incubator-seata/pull/6164)] redis registry push empty protection optimize - [[#6174](https://github.com/apache/incubator-seata/pull/6174)] add ASF basic config - [[#6181](https://github.com/apache/incubator-seata/pull/6181)] update contributing doc - [[#6179](https://github.com/apache/incubator-seata/pull/6179)] remove @author info - [[#6176](https://github.com/apache/incubator-seata/pull/6176)] update source header - [[#6178](https://github.com/apache/incubator-seata/pull/6178)] update the header of Apache License - [[#6186](https://github.com/apache/incubator-seata/pull/6186)] update README.md(update mailing list and repository urls) - [[#6184](https://github.com/apache/incubator-seata/pull/6184)] update NOTICE file - [[#6192](https://github.com/apache/incubator-seata/pull/6192)] remove the useless file - [[#6194](https://github.com/apache/incubator-seata/pull/6194)] fix asf.yaml parse error - [[#5399](https://github.com/apache/incubator-seata/pull/5399)] optimizing branch register resource only at RM server end - [[#6154](https://github.com/apache/incubator-seata/pull/6154)] console log optimize for "kubectl logs -f" - [[#6116](https://github.com/apache/incubator-seata/pull/6116)] rewrite NettyPoolKey's hashcode and equals to fix duplicate construction of channel object pools - [[#6195](https://github.com/apache/incubator-seata/pull/6195)] update the url in change log to apache/incubator-seata - [[#6200](https://github.com/apache/incubator-seata/pull/6200)] cancel required_status_checks - [[#6201](https://github.com/apache/incubator-seata/pull/6201)] restore required_status_checks kept to remove context validation - [[#6218](https://github.com/apache/incubator-seata/pull/6218)] remove Seata-Docker link - [[#6227](https://github.com/apache/incubator-seata/pull/6227)] validate that the primary key is free of illegal characters - [[#6004](https://github.com/apache/incubator-seata/pull/6004)] optimize RM TM startup connect server fail fast - [[#6243](https://github.com/apache/incubator-seata/pull/6243)] optimize links in the console header - [[#6238](https://github.com/apache/incubator-seata/pull/6238)] optimize some files - [[#6239](https://github.com/apache/incubator-seata/pull/6239)] update security policy, disclaimer and notice - [[#6245](https://github.com/apache/incubator-seata/pull/6245)] in file mode, the configuration in the application takes effect, when the spring configuration in the configuration center is changed - [[#6247](https://github.com/apache/incubator-seata/pull/6247)] optimize asf.yml - [[#6259](https://github.com/apache/incubator-seata/pull/6259)] modify error message which is global session size more than config - [[#6264](https://github.com/apache/incubator-seata/pull/6264)] fix jib-maven-plugin build failed - [[#6246](https://github.com/apache/incubator-seata/pull/6246)] build the frontend at the same time as the maven build - [[#6268](https://github.com/apache/incubator-seata/pull/6268)] optimize outdate npmjs dependencies in console - [[#6271](https://github.com/apache/incubator-seata/pull/6271)] unifty the git information - [[#6265](https://github.com/apache/incubator-seata/pull/6265)] optimization fails to build frontend on arm64 - [[#6267](https://github.com/apache/incubator-seata/pull/6267)] add Server deserialization validation - [[#6275](https://github.com/apache/incubator-seata/pull/6275)] optimize the label's format in .asf.yaml - [[#6291](https://github.com/apache/incubator-seata/pull/6291)] seata-server is developed in idea and console support output logs - [[#6283](https://github.com/apache/incubator-seata/pull/6283)] add a compatible module to support io.seata APIs - [[#6294](https://github.com/apache/incubator-seata/pull/6294)] split the frontend resource build process into separate profiles - [[#6285](https://github.com/apache/incubator-seata/pull/6285)] optimize time query conditions in the console - [[#6297](https://github.com/apache/incubator-seata/pull/6297)] fix problem of `maven-pmd-plugin` - [[#6298](https://github.com/apache/incubator-seata/pull/6298)] repackage name to org.apache.seata - [[#6302](https://github.com/apache/incubator-seata/pull/6302)] add io.seata package shade - [[#6306](https://github.com/apache/incubator-seata/pull/6306)] replace some URL to org/apache/seata - [[#6304](https://github.com/apache/incubator-seata/pull/6304)] disable Publish OSSRH workflow - [[#6310](https://github.com/apache/incubator-seata/pull/6310)] seata-server compatible io.seata package - [[#6301](https://github.com/apache/incubator-seata/pull/6301)] upgrade console frontend dependencies and supported nodejs versions - [[#6301](https://github.com/apache/incubator-seata/pull/6312)] add saga related io.seata compatible api - [[#6313](https://github.com/apache/incubator-seata/pull/6313)] console display the version number - [[#6315](https://github.com/apache/incubator-seata/pull/6315)] compatible with lower versions of SPI - [[#6327](https://github.com/apache/incubator-seata/pull/6327)] compatible with integration.http and integration.http.Jakarta - [[#6328](https://github.com/apache/incubator-seata/pull/6328)] compatible with integration.grpc - [[#6330](https://github.com/apache/incubator-seata/pull/6330)] remove mariadb API - [[#6329](https://github.com/apache/incubator-seata/pull/6312)] add saga subcomponent-level io.seata compatible api - [[#6254](https://github.com/apache/incubator-seata/pull/6254)] optimize Hessian Serialize - [[#6332](https://github.com/apache/incubator-seata/pull/6332)] remove mysql dependency from the distribution package - [[#6343](https://github.com/apache/incubator-seata/pull/6343)] compatible with tm module and rm-datasource module - [[#6357](https://github.com/apache/incubator-seata/pull/6357)] optimize serialization/deserialization of protocol codec - [[#6345](https://github.com/apache/incubator-seata/pull/6345)] compatible with tcc module - [[#6356](https://github.com/apache/incubator-seata/pull/6356)] remove authentication from the health check page - [[#6360](https://github.com/apache/incubator-seata/pull/6360)] optimize 401 issues for some links - [[#6366](https://github.com/apache/incubator-seata/pull/6366)] optimized globaltransaction compatibility issues - [[#6369](https://github.com/apache/incubator-seata/pull/6369)] optimize arm64 ci - [[#6386](https://github.com/apache/incubator-seata/pull/6386)] replace `byte-buddy` to JDK proxy in `ConfigurationCache` - [[#6391](https://github.com/apache/incubator-seata/pull/6091)] forbid duplicate registration of TCC resources - [[#6393](https://github.com/apache/incubator-seata/pull/6393)] determine the version before sync metadata and add retry mechanism - [[#6387](https://github.com/apache/incubator-seata/pull/6387)] optimize tcc use compatible - [[#6402](https://github.com/apache/incubator-seata/pull/6402)] optimize rm-datasource use compatible - [[#6403](https://github.com/apache/incubator-seata/pull/6403)] optimize config compatible module - [[#6419](https://github.com/apache/incubator-seata/pull/6419)] optimize integration-tx-api compatible - [[#6427](https://github.com/apache/incubator-seata/pull/6427)] support spi、saga、spring module compatible - [[#6442](https://github.com/apache/incubator-seata/pull/6442)] clarify if conditions - [[#6487](https://github.com/apache/incubator-seata/pull/6487)] fix typo and package name - [[#6442](https://github.com/apache/incubator-seata/pull/6442)] clarify if conditions - [[#6405](https://github.com/apache/incubator-seata/pull/6405)] fix kotlin compile failure - [[#6412](https://github.com/apache/incubator-seata/pull/6412)] optimize core compatible module - [[#6429](https://github.com/apache/incubator-seata/pull/6429)] remove repetitive words - [[#6518](https://github.com/apache/incubator-seata/pull/6518)] optimize ConfigurationCache proxy method - [[#6458](https://github.com/apache/incubator-seata/pull/6458)] add null value check for MAC address - [[#6516](https://github.com/apache/incubator-seata/pull/6516)] optimize code format - [[#6529](https://github.com/apache/incubator-seata/pull/6529)] optimize release maven plugin - [[#6548](https://github.com/apache/incubator-seata/pull/6548)] upgrade the byte-buddy version to 1.14.15 - [[#6539](https://github.com/apache/incubator-seata/pull/6539)] add subcomponents license - [[#6540](https://github.com/apache/incubator-seata/pull/6540)] exclude com.google.guava:listenablefuture - [[#6549](https://github.com/apache/incubator-seata/pull/6549)] macos workflow support arm testing - [[#6558](https://github.com/apache/incubator-seata/pull/6558)] remove mysql-connector-java from pom.xml - [[#6570](https://github.com/apache/incubator-seata/pull/6570)] add notice file to binary - [[#6578](https://github.com/apache/incubator-seata/pull/6578)] registry.conf supplemented raft configuration - [[#6576](https://github.com/apache/incubator-seata/pull/6576)] remove oracle datatype parser - [[#6583](https://github.com/apache/incubator-seata/pull/6583)] optimize the default compilation to be independent of the Git Env - [[#6585](https://github.com/apache/incubator-seata/pull/6585)] optimize compatible module pom.xml - [[#6597](https://github.com/apache/incubator-seata/pull/6597)] remove binary from source code - [[#6605](https://github.com/apache/incubator-seata/pull/6605)] revised the license and notice - [[#6609](https://github.com/apache/incubator-seata/pull/6609)] revised the notice file - [[#6610](https://github.com/apache/incubator-seata/pull/6610)] revised the notice file ### security: - [[#6069](https://github.com/apache/incubator-seata/pull/6069)] Upgrade Guava dependencies to fix security vulnerabilities - [[#6145](https://github.com/apache/incubator-seata/pull/6145)] upgrade jettison to 1.5.4 - [[#6144](https://github.com/apache/incubator-seata/pull/6144)] upgrade nacos client to 1.4.6 - [[#6147](https://github.com/apache/incubator-seata/pull/6147)] upgrade kafka-clients to 3.6.1 - [[#6339](https://github.com/apache/incubator-seata/pull/6339)] upgrade spring mvc and tomcat.embed - [[#6340](https://github.com/apache/incubator-seata/pull/6340)] upgrade and tidy some dependencies - [[#6350](https://github.com/apache/incubator-seata/pull/6350)] remove enableDegrade properties - [[#6349](https://github.com/apache/incubator-seata/pull/6349)] transfer dockerhub repo - [[#6362](https://github.com/apache/incubator-seata/pull/6362)] upgrade Spring related dependence - [[#6375](https://github.com/apache/incubator-seata/pull/6375)] override console nested dependencies ### test: - [[#6081](https://github.com/apache/incubator-seata/pull/6081)] add `test-os.yml` for testing the OS - [[#6125](https://github.com/apache/incubator-seata/pull/6125)] unbind xid in TransactionTemplateTest - [[#6157](https://github.com/apache/incubator-seata/pull/6157)] increase common module unit test coverage - [[#6250](https://github.com/apache/incubator-seata/pull/6250)] increase seata-core module unit test coverage - [[#6325](https://github.com/apache/incubator-seata/pull/6325)] fix mockServerTest fail cause using same port with seata-server - [[#6430](https://github.com/apache/incubator-seata/pull/6430)] increase common module unit test coverage - [[#6456](https://github.com/apache/incubator-seata/pull/6456)] adjust the test cases related to dynamic configuration - [[#6466](https://github.com/apache/incubator-seata/pull/6466)] support redis integration testing - [[#6484](https://github.com/apache/incubator-seata/pull/6484)] fix FileConfigurationTest and MockServerTest fail - [[#6545](https://github.com/apache/incubator-seata/pull/6545)] fix TestConfigCustomSPI compatibility test fail - [[#6560](https://github.com/apache/incubator-seata/pull/6560)] fix mock-server test, do not shutdown in Runtime.getRuntime().addShutdownHook - [[#6565](https://github.com/apache/incubator-seata/pull/6565)] fix testCompensationStateMachine fail ### refactor: - [[#6280](https://github.com/apache/incubator-seata/pull/6280)] refactor Saga designer using diagram-js - [[#6269](https://github.com/apache/incubator-seata/pull/6269)] standardize Seata Exception - [[#6420](https://github.com/apache/incubator-seata/pull/6420)] refactor Configuration Cache Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [ptyin](https://github.com/ptyin) - [laywin](https://github.com/laywin) - [imcmai](https://github.com/imcmai) - [DroidEye2ONGU](https://github.com/DroidEye2ONGU) - [funky-eyes](https://github.com/funky-eyes) - [Bughue](https://github.com/Bughue) - [wangliang181230](https://github.com/wangliang181230) - [ggbocoder](https://github.com/ggbocoder) - [leezongjie](https://github.com/leezongjie) - [l81893521](https://github.com/l81893521) - [baiyangtx](https://github.com/baiyangtx) - [lightClouds917](https://github.com/lightClouds917) - [xingfudeshi](https://github.com/xingfudeshi) - [PleaseGiveMeTheCoke](https://github.com/PleaseGiveMeTheCoke) - [sunrui1225](https://github.com/sunrui1225) - [PeppaO](https://github.com/PeppaO) - [AlbumenJ](https://github.com/AlbumenJ) - [dreamskyvision](https://github.com/dreamskyvision) - [jsbxyyx](https://github.com/jsbxyyx) - [liuqiufeng](https://github.com/liuqiufeng) - [saberyjs](https://github.com/SABERYJS) - [gggyd123](https://github.com/gggyd123) - [jonasHanhan](https://github.com/jonasHanhan) - [Code-breaker1998](https://github.com/Code-breaker1998) - [yixia](https://github.com/wt-better) - [MikhailNavitski](https://github.com/MikhailNavitski) - [deung](https://github.com/deung) - [tanyaofei](https://github.com/tanyaofei) - [xjlgod](https://github.com/xjlgod) - [TakeActionNow2019](https://github.com/TakeActionNow2019) - [sunxunle](https://github.com/sunxunle) - [bageyang](https://github.com/bageyang) - [YeonCheolGit](https://github.com/YeonCheolGit) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. ================================================ FILE: changes/en-us/2.2.0.md ================================================ Add changes here for all PR submitted to the 2.x branch. ### feature: - [[#6536](https://github.com/apache/incubator-seata/pull/6536)] support naming server client - [[#6226](https://github.com/apache/incubator-seata/pull/6226)] multi-version seata protocol support - [[#6537](https://github.com/apache/incubator-seata/pull/6537)] support Namingserver - [[#6538](https://github.com/apache/incubator-seata/pull/6538)] Integration of naming server on the Seata server side - [[#6766](https://github.com/apache/incubator-seata/pull/6766)] add TCC three-phase hooks ### bugfix: - [[#6592](https://github.com/apache/incubator-seata/pull/6592)] fix @Async annotation not working in ClusterWatcherManager - [[#6624](https://github.com/apache/incubator-seata/pull/6624)] fix Alibaba Dubbo convert error - [[#6627](https://github.com/apache/incubator-seata/pull/6627)] fix the issue of xaEnded not being reset - [[#6626](https://github.com/apache/incubator-seata/pull/6626)] fix hsf ConsumerModel convert error - [[#6816](https://github.com/apache/incubator-seata/pull/6816)] Fix NPE when getting branchType in a non-global transaction context - [[#6642](https://github.com/apache/incubator-seata/pull/6642)] codecov token not found - [[#6661](https://github.com/apache/incubator-seata/pull/6661)] fix `tableMeta` cache scheduled refresh issue - [[#6486](https://github.com/apache/incubator-seata/pull/6486)] fix mysql undo log update sql data more than max allowed packet - [[#6668](https://github.com/apache/incubator-seata/pull/6668)] thread safety issue when adding and removing instances - [[#6678](https://github.com/apache/incubator-seata/pull/6678)] fix the same record has different lowkeys due to mixed case of table names yesterday - [[#6697](https://github.com/apache/incubator-seata/pull/6697)] v0 ByteBuf should not decode by super class - [[#6707](https://github.com/apache/incubator-seata/pull/6707)] fix readonly branch commit errors in Oracle XA transactions - [[#6711](https://github.com/apache/incubator-seata/pull/6711)] fix dameng rollback info un compress fail - [[#6714](https://github.com/apache/incubator-seata/pull/6714)] fix dameng delete undo fail - [[#6511](https://github.com/apache/incubator-seata/pull/6511)] fix the failure of rollbacking back of the delete SQL at AT mode when using SQLServer - [[#6701](https://github.com/apache/incubator-seata/pull/6728)] fix support serialization for dm.jdbc.driver.DmdbTimestamp - [[#6757](https://github.com/apache/incubator-seata/pull/6757)] the bug where multiple nodes cannot be retrieved from the naming server - [[#6769](https://github.com/apache/incubator-seata/pull/6769)] fix tcc fence deadLock - [[#6778](https://github.com/apache/incubator-seata/pull/6778)] fix namingserver node term - [[#6765](https://github.com/apache/incubator-seata/pull/6765)] fix MySQL driver loading by replacing custom classloader with system classloader for better compatibility and simplified process - [[#6781](https://github.com/apache/incubator-seata/pull/6781)] the issue where the TC occasionally fails to go offline from the NamingServer - [[#6785](https://github.com/apache/incubator-seata/pull/6785)] fix prometheus fail to return seata metrics data when using Nacos - [[#6797](https://github.com/apache/incubator-seata/pull/6797)] fall back to any of available cluster address when query cluster address is empty - [[#6800](https://github.com/apache/incubator-seata/pull/6800)] make exception message generic for all database drivers - [[#6759](https://github.com/apache/incubator-seata/pull/6759)] fix the error of active refresh failure of cross-database table metadata - [[#6812](https://github.com/apache/incubator-seata/pull/6812)] bugfix: change group and node offline status are not pushed in real time - [[#6817](https://github.com/apache/incubator-seata/pull/6817)] bugfix: fix namingserver changVgroup failed - [[#6820](https://github.com/apache/incubator-seata/pull/6820)] Fix file path error in the Dockerfile - [[#6825](https://github.com/apache/incubator-seata/pull/6825)] Fix the issue of XA mode transaction timeout and inability to roll back in Postgres - [[#6833](https://github.com/apache/incubator-seata/pull/6833)] SQLIntegrityConstraintViolationException capture incorrectly when inserting a globallock - [[#6835](https://github.com/apache/incubator-seata/pull/6835)] Fix the issue of missing request body of post method in HttpClientUtil - [[#6845](https://github.com/apache/incubator-seata/pull/6845)] fix rocksDB opens the same file multiple times - [[#6840](https://github.com/apache/incubator-seata/pull/6840)] Fix the issue of unsafe deserialization in ProcessorYaml.java - [[#6843](https://github.com/apache/incubator-seata/pull/6843)] Fix 403 error when sending a POST request from the console - [[#6850](https://github.com/apache/incubator-seata/pull/6850)] raft mode is backward compatible with version 2.0 - [[#6855](https://github.com/apache/incubator-seata/pull/6855)] after scaling down a Raft cluster, the metadata still contains the removed node - [[#6859](https://github.com/apache/incubator-seata/pull/6859)] remove duplicated dependency in pom ### optimize: - [[#6499](https://github.com/apache/incubator-seata/pull/6499)] split the task thread pool for committing and rollbacking statuses - [[#6208](https://github.com/apache/incubator-seata/pull/6208)] optimize : load SeataSerializer by version - [[#6209](https://github.com/apache/incubator-seata/pull/6209)] Eliminate RpcMessage and Encoder/Decoder dependencies - [[#6634](https://github.com/apache/incubator-seata/pull/6634)] select channel handles based on protocol versions - [[#6523](https://github.com/apache/incubator-seata/pull/6523)] upgrade alibaba/druid version to 1.2.20 - [[#6566](https://github.com/apache/incubator-seata/pull/6566)] Add support for configuring exposeProxy in GlobalTransactionScanner - [[#6534](https://github.com/apache/incubator-seata/pull/6534)] optimize: send async response - [[#6640](https://github.com/apache/incubator-seata/pull/6640)] modify codecov config - [[#6640](https://github.com/apache/incubator-seata/pull/6648)] add license header - [[#6666](https://github.com/apache/incubator-seata/pull/6666)] add ExceptionUtil class for unwarp error msg - [[#6654](https://github.com/apache/incubator-seata/pull/6654)] add Namingserver package module - [[#6667](https://github.com/apache/incubator-seata/pull/6667)] optimize Namingserver log output - [[#6687](https://github.com/apache/incubator-seata/pull/6687)] delete static code built on the frontend - [[#6700](https://github.com/apache/incubator-seata/pull/6700)] remove sdk version checking - [[#6727](https://github.com/apache/incubator-seata/pull/6727)] deserialize performance optimize - [[#6732](https://github.com/apache/incubator-seata/pull/6732)] add the default console and security config on application.example.yml and application.raft.example.yml - [[#6651](https://github.com/apache/incubator-seata/pull/6651)] add license header for proto file - [[#6653](https://github.com/apache/incubator-seata/pull/6653)] optimize multiple licenses and remove license urls - [[#6655](https://github.com/apache/incubator-seata/pull/6655)] update front-end license - [[#6652](https://github.com/apache/incubator-seata/pull/6673)] add license header for spring config file - [[#6674](https://github.com/apache/incubator-seata/pull/6674)] update source license - [[#6650](https://github.com/apache/incubator-seata/pull/6650)] add license header for SPI file - [[#6741](https://github.com/apache/incubator-seata/pull/6741)] upgrade tomcat-embed-core to 9.0.90 - [[#6742](https://github.com/apache/incubator-seata/pull/6742)] upgrade npmjs version in console - [[#6743](https://github.com/apache/incubator-seata/pull/6743)] upgrade npmjs version in saga - [[#6746](https://github.com/apache/incubator-seata/pull/6746)] optimize compatible dependencies - [[#6745](https://github.com/apache/incubator-seata/pull/6745)] fix node-gyp build error on arm64 and macos - [[#6749](https://github.com/apache/incubator-seata/pull/6749)] optimize WebSecurityConfig csrf - [[#6748](https://github.com/apache/incubator-seata/pull/6748)] optimize ConsistentHashLoadBalance Algorithm - [[#6747](https://github.com/apache/incubator-seata/pull/6747)] optimize fastjson deserialization - [[#6755](https://github.com/apache/incubator-seata/pull/6755)] optimize namingserver code logic - [[#6763](https://github.com/apache/incubator-seata/pull/6763)] optimize NacosConfiguration singleton reload - [[#6761](https://github.com/apache/incubator-seata/pull/6761)] optimize the namingserver code to improve readability - [[#6768](https://github.com/apache/incubator-seata/pull/6768)] report the tcc fence transaction isolation level - [[#6770](https://github.com/apache/incubator-seata/pull/6770)] Automatic deletion of namingserver vgroup through Caffeine map - [[#6780](https://github.com/apache/incubator-seata/pull/6780)] optimize the reflection operation in class `SerializerServiceLoader` - [[#6784](https://github.com/apache/incubator-seata/pull/6784)] upgrade axios to 1.7.4 - [[#6787](https://github.com/apache/incubator-seata/pull/6787)] upgrade elliptic to 6.5.7 - [[#6783](https://github.com/apache/incubator-seata/pull/6783)] rename the server naming/v1 api to vgroup/v1 - [[#6793](https://github.com/apache/incubator-seata/pull/6793)] fix npmjs conflicts - [[#6793](https://github.com/apache/incubator-seata/pull/6795)] optimize the initialization logic for server meta - [[#6794](https://github.com/apache/incubator-seata/pull/6794)] optimize NacosMockTest UT case - [[#6806](https://github.com/apache/incubator-seata/pull/6806)] optimize `tableMeta` cache scheduled refresh issue - [[#6808](https://github.com/apache/incubator-seata/pull/6808)] change version to 2.2.0-SNAPSHOT - [[#6819](https://github.com/apache/incubator-seata/pull/6819)] merge the packaging processes of namingserver and seata-server - [[#6827](https://github.com/apache/incubator-seata/pull/6827)] rename namingserver registry type - [[#6836](https://github.com/apache/incubator-seata/pull/6836)] add independent nacos for the CI process - [[#6841](https://github.com/apache/incubator-seata/pull/6841)] update the LICENSE and NOTICE files and standardize dependency versions - [[#6823](https://github.com/apache/incubator-seata/pull/6823)] fix typo - [[#6779](https://github.com/apache/incubator-seata/pull/6779)] use curator instead of zkclient in config model - [[#6831](https://github.com/apache/incubator-seata/pull/6831)] use curator instead of zkclient in registry model - [[#6852](https://github.com/apache/incubator-seata/pull/6852)] optimize raft metadata api - [[#6863](https://github.com/apache/incubator-seata/pull/6863)] update NOTICE.md ### refactor: ### security: ### test: - [[#6533](https://github.com/apache/incubator-seata/pull/6533)] increase integration-tx-api module unit test coverage - [[#6608](https://github.com/apache/incubator-seata/pull/6608)] add unit test for sql-parser-core - [[#6647](https://github.com/apache/incubator-seata/pull/6647)] improve the test case coverage of saga module to 70% - [[#6695](https://github.com/apache/incubator-seata/pull/6695)] old version(< 0.7.1) client test case for multi-version protocol - [[#6752](https://github.com/apache/incubator-seata/pull/6752)] Improve the test case coverage of metrics module - [[#6764](https://github.com/apache/incubator-seata/pull/6764)] add Apollo mock test case - [[#6750](https://github.com/apache/incubator-seata/pull/6750)] increase spring autoconfigure module unit test converage - [[#6773](https://github.com/apache/incubator-seata/pull/6773)] fix the wrong code coverage from codecov icon in default branch - [[#6821](https://github.com/apache/incubator-seata/pull/6821)] fix the test case assertions - [[#6803](https://github.com/apache/incubator-seata/pull/6803)] optimize: compilation and packaging for the ARM64 architecture Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [tuwenlin](https://github.com/tuwenlin) - [YeonCheolGit](https://github.com/YeonCheolGit) - [liuqiufeng](https://github.com/liuqiufeng) - [God-Gan](https://github.com/God-Gan) - [Bughue](https://github.com/Bughue) - [funky-eyes](https://github.com/funky-eyes) - [tanyaofei](https://github.com/tanyaofei) - [traitsisgiorgos](https://github.com/traitsisgiorgos) - [wanghongzhou](https://github.com/wanghongzhou) - [ggbocoder](https://github.com/ggbocoder) - [azatyamanaev](https://github.com/azatyamanaev) - [xjlgod](https://github.com/xjlgod) - [xingfudeshi](https://github.com/xingfudeshi) - [wuwen5](https://github.com/wuwen5) - [jsbxyyx](https://github.com/jsbxyyx) - [iAmClever](https://github.com/iAmClever) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [liuqiufeng](https://github.com/liuqiufeng) - [caohdgege](https://github.com/caohdgege) - [TakeActionNow2019](https://github.com/TakeActionNow2019) - [imashimaro](https://github.com/hmj776521114) - [lyl2008dsg](https://github.com/lyl2008dsg) - [lightClouds917](https://github.com/lightClouds917) - [l81893521](https://github.com/l81893521) - [laywin](https://github.com/laywin) - [xiaoxiangyeyu0](https://github.com/xiaoxiangyeyu0) - [LegGasai](https://github.com/LegGasai) - [yangli-stu](https://github.com/yangli-stu) - [heliang666s](https://github.com/heliang666s) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. ================================================ FILE: changes/en-us/2.3.0.md ================================================ ### 2.3.0
Release notes ### Apache Seata(incubating) 2.3.0 Seata 2.3.0 Released. Seata is an easy-to-use, high-performance, open source distributed transaction solution. The version is updated as follows: ### feature: - [[#6904](https://github.com/apache/incubator-seata/pull/6904)] add fastjson2 serializer support - [[#6876](https://github.com/apache/incubator-seata/pull/6876)] support kingbase - [[#6881](https://github.com/apache/incubator-seata/pull/6881)] support grpc - [[#6864](https://github.com/apache/incubator-seata/pull/6864)] support shentong database - [[#6974](https://github.com/apache/incubator-seata/pull/6974)] support fastjson2 undolog parser - [[#6992](https://github.com/apache/incubator-seata/pull/6992)] support grpc serializer - [[#6973](https://github.com/apache/incubator-seata/pull/6973)] support saga annotation - [[#6926](https://github.com/apache/incubator-seata/pull/6926)] support ssl communication for raft nodes ### bugfix: - [[#6899](https://github.com/apache/incubator-seata/pull/6899)] fix file.conf read failed after package - [[#6890](https://github.com/apache/incubator-seata/pull/6890)] fix designerJson to standardJson: subStateMachine compensateState cannot be recognized - [[#6907](https://github.com/apache/incubator-seata/pull/6907)] fix the issue of Codecov not generating reports - [[#6923](https://github.com/apache/incubator-seata/pull/6923)] Enhance 401 Error Handling by Refreshing Token - [[#6925](https://github.com/apache/incubator-seata/pull/6925)] fix the issue in Raft model a follower's crash may lead to the continued use of expired tokens - [[#6932](https://github.com/apache/incubator-seata/pull/6932)] when enabling local transactions, the lock contention failure in file & raft mode does not exit, leading to a lingering lock - [[#6940](https://github.com/apache/incubator-seata/pull/6940)] Fix NacosRegistry lookup behavior transactionServiceGroup is empty causing NPE error - [[#6943](https://github.com/apache/incubator-seata/pull/6943)] fix the conversion error for `convertBranchSession` in concurrent environment. - [[#6948](https://github.com/apache/incubator-seata/pull/6948)] Fix the CI build issue on the ARM64 platform - [[#6947](https://github.com/apache/incubator-seata/pull/6947)] fix npe for nacos registry when look up address - [[#6984](https://github.com/apache/incubator-seata/pull/6984)] support building docker image on openjdk23 - [[#6994](https://github.com/apache/incubator-seata/pull/6994)] fix the problem of building undoLog exception when update join does not update data - [[#7005](https://github.com/apache/incubator-seata/pull/7005)] fix the Raft NPE issue caused by two-phase concurrency - [[#7010](https://github.com/apache/incubator-seata/pull/7010)] fix error while the "context" is key word in DM8 when delete undolog - [[#7022](https://github.com/apache/incubator-seata/pull/7022)] fix `store.mode` property in `application.raft.example.yml` - [[#7025](https://github.com/apache/incubator-seata/pull/7025)] fix vGroupMappingManager is NOT init - [[#7044](https://github.com/apache/incubator-seata/pull/7044)] fix tableMeta refresh after closed - [[#7117](https://github.com/apache/incubator-seata/pull/7117)] fix prefix: seata.server.raft.ssl should not be null - [[#7127](https://github.com/apache/incubator-seata/pull/7127)] fix branchType server decode error ### optimize: - [[#6826](https://github.com/apache/incubator-seata/pull/6826)] remove the branch registration operation of the XA read-only transaction - [[#6874](https://github.com/apache/incubator-seata/pull/6874)] modify the version to 2.3.0-SNAPSHOT - [[#6892](https://github.com/apache/incubator-seata/pull/6892)] upgrade npmjs version in console module - [[#6883](https://github.com/apache/incubator-seata/pull/6874)] remove write only object - [[#6892](https://github.com/apache/incubator-seata/pull/6892)] upgrade npmjs version - [[#6889](https://github.com/apache/incubator-seata/pull/6889)] Correct word spelling errors - [[#6898](https://github.com/apache/incubator-seata/pull/6898)] upgrade npmjs version in saga module - [[#6879](https://github.com/apache/incubator-seata/pull/6879)] fix log argument mismatch issue - [[#6902](https://github.com/apache/incubator-seata/pull/6900)] optimize readme docs - [[#6807](https://github.com/apache/incubator-seata/pull/6807)] splitting MergedWarpMessage enhances the server parallel processing capability - [[#6905](https://github.com/apache/incubator-seata/pull/6905)] remove incompatible licenses at build time - [[#6906](https://github.com/apache/incubator-seata/pull/6906)] h2 dependency adds test scope - [[#6911](https://github.com/apache/incubator-seata/pull/6911)] fix some typos in project - [[#6918](https://github.com/apache/incubator-seata/pull/6918)] Use the openjdk image of eclipse-temurin as the base image - [[#6938](https://github.com/apache/incubator-seata/pull/6938)] Update online chat information in README.md - [[#6950](https://github.com/apache/incubator-seata/pull/6950)] Remove JVM parameter app.id - [[#6959](https://github.com/apache/incubator-seata/pull/6959)] update the naming and description for the `seata-http-jakarta` module - [[#6991](https://github.com/apache/incubator-seata/pull/6991)] gRPC serialization default to Protobuf - [[#6993](https://github.com/apache/incubator-seata/pull/6993)] optimize transaction metrics - [[#6995](https://github.com/apache/incubator-seata/pull/6995)] upgrade outdate npmjs dependencies - [[#6996](https://github.com/apache/incubator-seata/pull/6996)] optimize lock release logic in AT transaction mode - [[#7023](https://github.com/apache/incubator-seata/pull/7023)] optimize fail fast, when all server not available - [[#7027](https://github.com/apache/incubator-seata/pull/7027)] raft mode maintains the reload logic consistent with the file - [[#6891](https://github.com/apache/incubator-seata/pull/6891)] add StateType Enum - [[#7040](https://github.com/apache/incubator-seata/pull/7040)] optimize the print info in ConfigurationFactory - [[#7046](https://github.com/apache/incubator-seata/pull/7046)] remove the dependency conflict for spring-webmvc - [[#7043](https://github.com/apache/incubator-seata/pull/7043)] finish rollback if sendResult/msg not found - [[#7051](https://github.com/apache/incubator-seata/pull/7051)] add namingserver jib - [[#7054](https://github.com/apache/incubator-seata/pull/7054)] In file mode when the lock cannot be acquired output the holder's xid - [[#7154](https://github.com/apache/incubator-seata/pull/7154)] remove unused dependencies - [[#7153](https://github.com/apache/incubator-seata/pull/7153)] upgrade tomcat-embed to 9.0.98 - [[#7152](https://github.com/apache/incubator-seata/pull/7152)] remove org.eclipse.jetty dependency - [[#7151](https://github.com/apache/incubator-seata/pull/7151)] upgrade xstream to 1.4.21 ### refactor: - [[#7017](https://github.com/apache/incubator-seata/pull/7017)] remove dependency on seata-server module - [[#7155](https://github.com/apache/incubator-seata/pull/7155)] refactor the code that does not comply with license requirements ### test: - [[#6869](https://github.com/apache/incubator-seata/pull/6869)] Add unit tests for the `seata-core` module - [[#6927](https://github.com/apache/incubator-seata/pull/6927)] Add unit tests for the `seata-rocketmq` module - [[#7018](https://github.com/apache/incubator-seata/pull/7018)] Add unit tests for the `seata-tm` module - [[#7030](https://github.com/apache/incubator-seata/pull/7030)] Add unit tests for the `seata-common` module Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [funky-eyes](https://github.com/funky-eyes) - [dk2k](https://github.com/dk2k) - [MaoMaoandSnail](https://github.com/MaoMaoandSnail) - [yougecn](https://github.com/yougecn) - [arrrnold17](https://github.com/arrrnold17) - [xjlgod](https://github.com/xjlgod) - [PleaseGiveMeTheCoke](https://github.com/PleaseGiveMeTheCoke) - [dsomehan](https://github.com/dsomehan) - [psxjoy](https://github.com/psxjoy) - [xingfudeshi](https://github.com/xingfudeshi) - [o-jimin](https://github.com/o-jimin) - [lixingjia77](https://github.com/lixingjia77) - [whaon](https://github.com/whaon) - [YvCeung](https://github.com/YvCeung) - [jsbxyyx](https://github.com/jsbxyyx) - [lightClouds917](https://github.com/lightClouds917) - [Muluo-cyan](https://github.com/Muluo-cyan) - [yixia](https://github.com/wt-better) - [ChinaJeckXu](https://github.com/ChinaJeckXu) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. ================================================ FILE: changes/en-us/2.4.0.md ================================================ ### 2.4.0
Release notes ### Apache Seata(incubating) 2.4.0 Seata 2.4.0 Released. Seata is an easy-to-use, high-performance, open source distributed transaction solution. The version is updated as follows: ### feature: - [[#7157](https://github.com/apache/incubator-seata/pull/7157)] migrate the console to the naming server - [[#7213](https://github.com/apache/incubator-seata/pull/7213)] support kingbase xa mode ### bugfix: - [[#7104](https://github.com/apache/incubator-seata/pull/7104)] fix impl of supportsSourceType is not defined - [[#7116](https://github.com/apache/incubator-seata/pull/7116)] fix prefix: seata.server.raft.ssl should not be null - [[#7112](https://github.com/apache/incubator-seata/pull/7112)] bugfix: remove the condition that IPv6 must start with fe80 - [[#7107](https://github.com/apache/incubator-seata/pull/7107)] fix the issue of failing to parse annotations in TCC mode when the business object is a proxy object. - [[#7124](https://github.com/apache/incubator-seata/pull/7124)] bugfix: GlobalTransactionScanner.afterPropertiesSet need do scanner check - [[#7135](https://github.com/apache/incubator-seata/pull/7135)] treating a unique index conflict during rollback as a dirty write - [[#7150](https://github.com/apache/incubator-seata/pull/7150)] The time difference between the raft node and the follower node cannot synchronize data - [[#7102](https://github.com/apache/incubator-seata/pull/7150)] bugfix: modify XA mode pre commit transaction from commit phase to before close phase - [[#7188](https://github.com/apache/incubator-seata/pull/7188)] bugfix: Fix missing branchType in BusinessActionContext - [[#7219](https://github.com/apache/incubator-seata/pull/7219)] bugfix: NotSupportExc can't be thrown out in some cases - [[#7241](https://github.com/apache/incubator-seata/pull/7241)] upgrade tomcat-embed-core to 9.0.99 to fix CVE-2025-24813 - [[#7272](https://github.com/apache/incubator-seata/pull/7272)] fix: fix transaction info not display - [[#7277](https://github.com/apache/incubator-seata/pull/7277)] Fix MySQL jdbc driver can't be found properly ### optimize: - [[#6828](https://github.com/apache/incubator-seata/pull/6828)] spring boot compatible with file.conf and registry.conf - [[#7012](https://github.com/apache/incubator-seata/pull/7012)] When the number of primary keys exceeds 1000, use union to concatenate the SQL - [[#7075](https://github.com/apache/incubator-seata/pull/7075)] fast fail when channel is null - [[#7089](https://github.com/apache/incubator-seata/pull/7089)] support instance registration to the registry center - [[#7093](https://github.com/apache/incubator-seata/pull/7093)] add a test workflow for JDK 21 - [[#7088](https://github.com/apache/incubator-seata/pull/7088)] expand english abbreviations to full words - [[#7064](https://github.com/apache/incubator-seata/pull/7064)] remove unnecessary null checks - [[#7130](https://github.com/apache/incubator-seata/pull/7130)] Expose some keepalive-related configuration for Druid, Hikari, and DBCP - [[#7131](https://github.com/apache/incubator-seata/pull/7131)] Remove org.codehaus.jackson dependency - [[#7134](https://github.com/apache/incubator-seata/pull/7134)] upgrade tomcat-embed to 9.0.98 - [[#7138](https://github.com/apache/incubator-seata/pull/7138)] Remove org.eclipse.jetty dependency - [[#7139](https://github.com/apache/incubator-seata/pull/7139)] upgrade xstream to 1.4.21 - [[#7141](https://github.com/apache/incubator-seata/pull/7141)] remove unused dependencies - [[#7142](https://github.com/apache/incubator-seata/pull/7142)] upgrade commons-compress to 1.27.1 - [[#7149](https://github.com/apache/incubator-seata/pull/7149)] Fix abnormal character display issues in ./distribution/NOTICE.md - [[#7170](https://github.com/apache/incubator-seata/pull/7170)] Optimize seata client I/O processing by adjusting thread count - [[#7187](https://github.com/apache/incubator-seata/pull/7187)] Add dependency-check-maven plugin to detect potential vulnerabilities - [[#7179](https://github.com/apache/incubator-seata/pull/7179)] Use shared EventLoop for TM and RM clients to reduce thread overhead and improve performance - [[#7194](https://github.com/apache/incubator-seata/pull/7194)] automatically skipping proxy for datasource of type AbstractRoutingDataSource - [[#7215](https://github.com/apache/incubator-seata/pull/7215)] intercept non-leader write requests of the console trx operation - [[#7224](https://github.com/apache/incubator-seata/pull/7224)] optimize changeGlobalStatus interface of console - [[#7222](https://github.com/apache/incubator-seata/pull/7222)] in raft mode add the vgroup field to global lock - [[#7229](https://github.com/apache/incubator-seata/pull/7229)] update Notice - [[#7234](https://github.com/apache/incubator-seata/pull/7234)] discover the raft leader node from the naming server - [[#7242](https://github.com/apache/incubator-seata/pull/7242)] optimize: optimize ratelimit bucketTokenNumPerSecond config - [[#7259](https://github.com/apache/incubator-seata/pull/7259)] transfer the logback appender configuration to the yml configuration - [[#6998](https://github.com/apache/incubator-seata/pull/6998)] skip sending some request if client-version is v0 - [[#7250](https://github.com/apache/incubator-seata/pull/7250)] compatible for client_protocol_version > server_protocol_version - [[#7242](https://github.com/apache/incubator-seata/pull/7242)] optimize ratelimit bucketTokenNumPerSecond config - [[#7232](https://github.com/apache/incubator-seata/pull/7232)] add license header - [[#7260](https://github.com/apache/incubator-seata/pull/7260)] upgrade npmjs dependencies - [[#7284](https://github.com/apache/incubator-seata/pull/7284)] add dependency-check profile - [[#7073](https://github.com/apache/incubator-seata/pull/7073)] support virtual thread,replace the usages of synchronized with ReentrantLock - [[#6756](https://github.com/apache/incubator-seata/pull/6756)] feature: add single server rate limit - [[#7037](https://github.com/apache/incubator-seata/pull/7037)] support fury undolog parser - [[#7069](https://github.com/apache/incubator-seata/pull/7069)] Raft cluster mode supports address translation - [[#7038](https://github.com/apache/incubator-seata/pull/7038)] support fury serializer - [[#7171](https://github.com/apache/incubator-seata/pull/7171)] support EpollEventLoopGroup in client - [[#7223](https://github.com/apache/incubator-seata/pull/7223)] apply Spotless with Palantir java format - [[#7114](https://github.com/apache/incubator-seata/pull/7114)] support raft mode registry to namingserver - [[#7133](https://github.com/apache/incubator-seata/pull/7133)] Implement scheduled handling for end status transaction - [[#7183](https://github.com/apache/incubator-seata/pull/7183)] client discovers raft nodes through the naming server - [[#7182](https://github.com/apache/incubator-seata/pull/7182)] use the ip of the peerId as the host of the raft node - [[#7181](https://github.com/apache/incubator-seata/pull/7181)] raft implements domain name resolution and selects peerId - [[#7283](https://github.com/apache/incubator-seata/pull/7283)] optimize: use retry logic to end global trx ### security: - [[#6069](https://github.com/apache/incubator-seata/pull/6069)] Upgrade Guava dependencies to fix security vulnerabilities - [[#6145](https://github.com/apache/incubator-seata/pull/6145)] upgrade jettison to 1.5.4 - [[#6144](https://github.com/apache/incubator-seata/pull/6144)] upgrade nacos client to 1.4.6 - [[#6147](https://github.com/apache/incubator-seata/pull/6147)] upgrade kafka-clients to 3.6.1 - [[#6338](https://github.com/apache/incubator-seata/pull/6338)] upgrade jackson version - [[#7201](https://github.com/apache/incubator-seata/pull/7202)] upgrade protobuf.version to 3.25.5 - [[#7214](https://github.com/apache/incubator-seata/pull/7214)] upgrade jackson to 2.18.3 - [[#7249](https://github.com/apache/incubator-seata/pull/7249)] upgrade axios to 1.8.2 ### test: - [[#7092](https://github.com/apache/incubator-seata/pull/7092)] fix the issue of NacosMockTest failing to run - [[#7098](https://github.com/apache/incubator-seata/pull/7098)] Add unit tests for the `seata-common` module - [[#7160](https://github.com/apache/incubator-seata/pull/7160)] Refactored tests in `LowerCaseLinkHashMapTest` to use parameterized unit testing - [[#7167](https://github.com/apache/incubator-seata/pull/7167)] Refactored tests in `DurationUtilTest` to simplify and use parameterized unit testing - [[#7189](https://github.com/apache/incubator-seata/pull/7189)] fix the runtime exception in the saga test case - [[#7197](https://github.com/apache/incubator-seata/pull/7197)] add some UT cases for config module - [[#7199](https://github.com/apache/incubator-seata/pull/7199)] add some UT cases for client processor - [[#7203](https://github.com/apache/incubator-seata/pull/7203)] Refactored tests in rm.datasource.sql.Druid and seata-sqlparser-druid module - [[#7221](https://github.com/apache/incubator-seata/pull/7221)] add UT for gRPC Encoder/Decode - [[#7227](https://github.com/apache/incubator-seata/pull/7227)] add mock test for seata-discovery-consul module - [[#7233][https://github.com/apache/incubator-seata/pull/7233]] add mock test for seata-discovery-etcd3 - [[#7243](https://github.com/apache/incubator-seata/pull/7243)] add unit test for seata-discovery-eureka - [[#7255](https://github.com/apache/incubator-seata/pull/7255)] more unit tests for Discovery-Eureka ### refactor: - [[#7145](https://github.com/apache/incubator-seata/pull/7145)] refactor the code that does not comply with license requirements - [[#7236](https://github.com/apache/incubator-seata/pull/7236)] changed folder name in org.apache.seata.server.storage.raft.sore from sore to store ### doc: - [[#7226](https://github.com/apache/incubator-seata/pull/7226)] write better docs for CONTRIBUTING.md Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [lyl2008dsg](https://github.com/lyl2008dsg) - [remind](https://github.com/remind) - [lightClouds917](https://github.com/lightClouds917) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [PeppaO](https://github.com/PeppaO) - [xjlgod](https://github.com/xjlgod) - [funky-eyes](https://github.com/funky-eyes) - [MaoMaoandSnail](https://github.com/MaoMaoandSnail) - [psxjoy](https://github.com/psxjoy) - [xiaoxiangyeyu0](https://github.com/xiaoxiangyeyu0) - [wxrqforever](https://github.com/wxrqforever) - [xingfudeshi](https://github.com/xingfudeshi) - [YongGoose](https://github.com/YongGoose) - [Monilnarang](https://github.com/Monilnarang) - [iAmClever](https://github.com/iAmClever) - [s-ramyalakshmi](https://github.com/s-ramyalakshmi) - [YoWuwuuuw](https://github.com/YoWuwuuuw) - [mehedikhan72](https://github.com/mehedikhan72) - [AndrewSf](https://github.com/andrewseif) - [bigcyy](https://github.com/bigcyy) - [wjwang00](https://github.com/wjwang00) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.
================================================ FILE: changes/en-us/2.5.0.md ================================================ Add changes here for all PR submitted to the 2.x branch. ### feature: - [[#7261](https://github.com/apache/incubator-seata/pull/7261)] enforce account initialization and disable default credentials - [[#7451](https://github.com/apache/incubator-seata/pull/7451)] seata-server supports the HTTP/2 protocol - [[#7496](https://github.com/apache/incubator-seata/pull/7496)] add oceanbase oracle support ### bugfix: - [[#7349](https://github.com/apache/incubator-seata/pull/7349)] Resolve NullPointerException in EtcdRegistryServiceImplMockTest - [[#7354](https://github.com/apache/incubator-seata/pull/7354)] fix the drivers in the libs folder cannot be loaded - [[#7356](https://github.com/apache/incubator-seata/pull/7356)] fix codecov bug - [[#7370](https://github.com/apache/incubator-seata/pull/7370)] fix ISSUE_TEMPLATE not work - [[#7397](https://github.com/apache/incubator-seata/pull/7397)] Resolve NullPointer and port binding errors - [[#7502](https://github.com/apache/incubator-seata/pull/7502)] remove extra dots and keep the naming style consistent with other tables - [[#7498](https://github.com/apache/incubator-seata/pull/7498)] fix the class name whitelist check issue in fury deserialization - [[#7504](https://github.com/apache/incubator-seata/pull/7504)] fix load driver class in Hikari - [[#7529](https://github.com/apache/incubator-seata/pull/7529)] fix the server does not send heartbeats when the namingserver is used with other registries - [[#7546](https://github.com/apache/incubator-seata/pull/7546)] fix client spring version compatible ### optimize: - [[#7270](https://github.com/apache/incubator-seata/pull/7270)] enhance ci configuration - [[#7282](https://github.com/apache/incubator-seata/pull/7282)] optimize unexpected NullPointerException in lookup method in FileRegistryServiceImpl class - [[#7310](https://github.com/seata/seata/pull/7310)] Optimize minor issues in the naming-server - [[#7329](https://github.com/apache/incubator-seata/pull/7329)] upgrade tomcat to 9.0.100 - [[#7346](https://github.com/apache/incubator-seata/pull/7346)] replace tomcat with netty-http on the server - [[#7344](https://github.com/apache/incubator-seata/pull/7344)] raft mode performs transaction size check in advance - [[#7343](https://github.com/apache/incubator-seata/pull/7343)] upgrade tomcat to 9.0.104 - [[#7337](https://github.com/apache/incubator-seata/pull/7337)] Add ChannelEventListener support to prevent memory leaks - [[#7344](https://github.com/apache/incubator-seata/pull/7344)] raft mode performs transaction size check in advance - [[#7345](https://github.com/apache/incubator-seata/pull/7345)] add empty check and duplicate type check to RegistryFactory - [[#7350](https://github.com/apache/incubator-seata/pull/7350)] optimize codecov.yml - [[#7360](https://github.com/apache/incubator-seata/pull/7360)] Update resource cleanup logic for channel disconnection - [[#7363](https://github.com/apache/incubator-seata/pull/7363)] Upgrade npmjs dependencies - [[#7372](https://github.com/apache/incubator-seata/pull/7372)] optimize license ignore - [[#7375](https://github.com/apache/incubator-seata/pull/7375)] optimize close() logic of discovery module - [[#7388](https://github.com/apache/incubator-seata/pull/7388)] optimize binary packaging directory structure - [[#7412](https://github.com/apache/incubator-seata/pull/7412)] Helm template adapted to the new version of seata - [[#7414](https://github.com/apache/incubator-seata/pull/7414)] Remove the unused defaultEventExecutorGroup from the NettyClientBootstrap - [[#7415](https://github.com/apache/incubator-seata/pull/7415)] Use threadPool to asynchronously process server http requests - [[#7418](https://github.com/apache/incubator-seata/pull/7418)] add jackson notice - [[#7419](https://github.com/apache/incubator-seata/pull/7419)] Add maven profile to support packaging source code - [[#7428](https://github.com/apache/incubator-seata/pull/7428)] pmd-check log as ERROR level - [[#7430](https://github.com/apache/incubator-seata/pull/7430)] Add support for parsing @RequestParam annotation in netty-http-server - [[#7432](https://github.com/apache/incubator-seata/pull/7432)] conditionally include test modules using Maven profiles - [[#7445](https://github.com/apache/incubator-seata/pull/7432)] separate the license from the server and namingserver - [[#7426](https://github.com/apache/incubator-seata/pull/7426)] add some license header - [[#7450](https://github.com/apache/incubator-seata/pull/7450)] Apply Spotless to the entire codebase - [[#7456](https://github.com/apache/incubator-seata/pull/7456)] Druid SQL parser throws ParserException for unsupported REPLACE statement - [[#7466](https://github.com/apache/incubator-seata/pull/7466)] add contribution intention check box to issue template - [[#7478](https://github.com/apache/incubator-seata/pull/7478)] metrics add retry status - [[#7483](https://github.com/apache/incubator-seata/pull/7483)] change the value of retryDeadThreshold to 70 seconds - [[#7488](https://github.com/apache/incubator-seata/pull/7488)] upgrade tomcat to 9.0.106 - [[#7518](https://github.com/apache/incubator-seata/pull/7518)] avoid using unstable API in ChannelEventHandlerIntegrationTest - [[#7530](https://github.com/apache/incubator-seata/pull/7530)] optimize 1.2.12 test-druid CI - [[#7391](https://github.com/apache/incubator-seata/pull/7530)] optimize: upgrade tomcat to 9.0.105 - [[#7390](https://github.com/apache/incubator-seata/pull/7530)] optimize: optimize license header check - [[#7389](https://github.com/apache/incubator-seata/pull/7530)] optimize: fix some js resource missing license header - [[#7536](https://github.com/apache/incubator-seata/pull/7536)] optimize: optimize druid 1.2.12 ci ### test: - [[#7092](https://github.com/apache/incubator-seata/pull/7092)] fix the issue of NacosMockTest failing to run - [[#7098](https://github.com/apache/incubator-seata/pull/7098)] Add unit tests for the `seata-common` module - [[#7160](https://github.com/apache/incubator-seata/pull/7160)] Refactored tests in `LowerCaseLinkHashMapTest` to use parameterized unit testing - [[#7167](https://github.com/apache/incubator-seata/pull/7167)] Refactored tests in `DurationUtilTest` to simplify and use parameterized unit testing - [[#7189](https://github.com/apache/incubator-seata/pull/7189)] fix the runtime exception in the saga test case - [[#7197](https://github.com/apache/incubator-seata/pull/7197)] add some UT cases for config module - [[#7199](https://github.com/apache/incubator-seata/pull/7199)] add some UT cases for client processor - [[#7203](https://github.com/apache/incubator-seata/pull/7203)] Refactored tests in rm.datasource.sql.Druid and seata-sqlparser-druid module - [[#7221](https://github.com/apache/incubator-seata/pull/7221)] add UT for gRPC Encoder/Decode - [[#7227](https://github.com/apache/incubator-seata/pull/7227)] add mock test for seata-discovery-consul module - [[#7233](https://github.com/apache/incubator-seata/pull/7233)] add mock test for seata-discovery-etcd3 - [[#7243](https://github.com/apache/incubator-seata/pull/7243)] add unit test for seata-discovery-eureka - [[#7255](https://github.com/apache/incubator-seata/pull/7255)] more unit tests for Discovery-Eureka - [[#7286](https://github.com/apache/incubator-seata/pull/7286)] Simplified complex test testMsgSerialize in RaftSyncMessageTest by separating it into two tests - [[#7287](https://github.com/apache/incubator-seata/pull/7287)] Refactored testGetErrorMsgWithValidCodeReturnsExpectedMsg to use parameterized unit testing - [[#7288](https://github.com/apache/incubator-seata/pull/7288)] Refactored testSetCodeAndMsgUpdatesValuesCorrectly to use parameterized unit testing - [[#7294](https://github.com/apache/incubator-seata/pull/7294)] improved test testGetInsertParamsValue in SqlServerInsertRecognizerTest by splitting and parameterizing - [[#7295](https://github.com/apache/incubator-seata/pull/7295)] updated 3 tests in StringUtilsTest to use parameterized unit testing - [[#7205](https://github.com/apache/incubator-seata/issues/7205)] add UT for namingserver module - [[#7359](https://github.com/apache/incubator-seata/issues/7359)] merge submodule test reports - [[#7423](https://github.com/apache/incubator-seata/pull/7423)] add UT for org.apache.seata.spring.annotation.scannercheckers - [[#7420](https://github.com/apache/incubator-seata/pull/7420)] add UT for RemotingFactoryBeanParser class - [[#7379](https://github.com/apache/incubator-seata/issues/7379)] add UT for TccAnnotationProcessor class - [[#7422](https://github.com/apache/incubator-seata/pull/7422)] add UT for seata-spring-boot-starter module - [[#7433](https://github.com/apache/incubator-seata/pull/7433)] add UT for GlobalTransactionScanner class - [[#7436](https://github.com/apache/incubator-seata/pull/7436)] fix namingserver ut error - [[#7435](https://github.com/apache/incubator-seata/pull/7435)] Add common test config for dynamic server port assignment in tests - [[#7442](https://github.com/apache/incubator-seata/pull/7442)] add some UT for saga compatible - [[#7457](https://github.com/apache/incubator-seata/pull/7457)] improve unit test coverage of seata-rm moudle - [[#7464](https://github.com/apache/incubator-seata/pull/7464)] improve unit test coverage of seata-gRPC moudle - [[#7468](https://github.com/apache/incubator-seata/pull/7468)] add UT for SupportSqlWhereMethod class - [[#7501](https://github.com/apache/incubator-seata/pull/7501)] add unit test case for fury serializer - [[#7528](https://github.com/apache/incubator-seata/pull/7528)] fix UT failed in spring-boot-starter - [[#7275](https://github.com/apache/incubator-seata/pull/7275)] test: add UT for rm datasource module - [[#7321](https://github.com/apache/incubator-seata/pull/7321)] test: add test for apm-seata-skywalking-plugin module - [[#7400](https://github.com/apache/incubator-seata/pull/7400)] test: add test for SpringProxyUtils and OrderUtils - [[#7385](https://github.com/apache/incubator-seata/pull/7385)] optimize: remove HttpServletRequest from the watch API ### refactor: - [[#7315](https://github.com/apache/incubator-seata/pull/7315)] Refactor log testing to use ListAppender for more accurate and efficient log capture - [[#7461](https://github.com/apache/incubator-seata/pull/7461)] Refactor server netty config changed to use CONFIG format Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [Monilnarang](https://github.com/Monilnarang) - [xingfudeshi](https://github.com/xingfudeshi) - [wjwang00](https://github.com/wjwang00) - [YongGoose](https://github.com/YongGoose) - [JisoLya](https://github.com/JisoLya) - [YoWuwuuuw](https://github.com/YoWuwuuuw) - [PleaseGiveMeTheCoke](https://github.com/PleaseGiveMeTheCoke) - [funky-eyes](https://github.com/funky-eyes) - [xucq07](https://github.com/xucq07) - [PengningYang](https://github.com/PengningYang) - [WangzJi](https://github.com/WangzJi) - [maple525866](https://github.com/maple525866) - [YvCeung](https://github.com/YvCeung) - [jsbxyyx](https://github.com/jsbxyyx) - [simzyoo](https://github.com/simzyoo) - [Dltmd202](https://github.com/Dltmd202) - [diguage](https://github.com/diguage) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [xxsc0529](https://github.com/xxsc0529) - [xjlgod](https://github.com/xjlgod) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. ================================================ FILE: changes/en-us/2.6.0.md ================================================ Add changes here for all PR submitted to the 2.x branch. ### feature: - [[#7485](https://github.com/apache/incubator-seata/pull/7485)] Add http request filter for seata-server - [[#7509](https://github.com/apache/incubator-seata/pull/7509)] Reuse connection to merge branch transactions - [[#7492](https://github.com/apache/incubator-seata/pull/7492)] upgrade HTTP client in common module to support HTTP/2 - [[#7503](https://github.com/apache/incubator-seata/pull/7503)] support fory serializer and fory undolog parser - [[#7551](https://github.com/apache/incubator-seata/pull/7551)] XAUtils add support for DM Database - [[#7559](https://github.com/apache/incubator-seata/pull/7559)] Introduce Cleanup API for TableMetaRefreshHolder Instance - [[#7669](https://github.com/apache/incubator-seata/pull/7669)] add support for Jackson serialization and deserialization of PostgreSQL array types - [[#7664](https://github.com/apache/incubator-seata/pull/7664)] support shentongdatabase XA mode - [[#7675](https://github.com/apache/incubator-seata/pull/7675)] support Oracle Batch Insert - [[#7663](https://github.com/apache/incubator-seata/pull/7663)] add Java 25 support in CI configuration files - [[#7851](https://github.com/apache/incubator-seata/pull/7851)] add support for managing transaction groups - [[#7857](https://github.com/apache/incubator-seata/pull/7857)] support displaying cluster information in the console - [[#7826](https://github.com/apache/incubator-seata/pull/7826)] Support HTTP/2 response handling for the Watch API in Server Raft mode - [[#7863](https://github.com/apache/incubator-seata/pull/7863)] Exclude namingserver and console module builds from build workflows with JDK versions less than 25 - [[#7870](https://github.com/apache/incubator-seata/pull/7870)] upgrade the namingserver and console modules to JDK 25 and SpringBoot 3.5, and add the spring-ai dependency in the console module. - [[#7872](https://github.com/apache/incubator-seata/pull/7872)] Automatically calculate the values for JVM parameters - [[#7876](https://github.com/apache/incubator-seata/pull/7876)] feature: add MCP custom configuration and authentication code - [[#7878](https://github.com/apache/incubator-seata/pull/7878)] console supports creation and modification of transaction groups for Raft clusters - [[#7893](https://github.com/apache/incubator-seata/pull/7893)] add global and branch session and lock management MCP tools ### bugfix: - [[#7471](https://github.com/apache/seata/issues/7471)] Fix SerialArray equals() method for multi-dimensional array comparison in Phase 2 rollback - [[#7482](https://github.com/apache/incubator-seata/pull/7482)] Github Action workflow does not run the corresponding Kotlin test - [[#7538](https://github.com/apache/incubator-seata/pull/7538)] unify DmdbTimestamp comparison via UTC Instant to prevent rollback failure - [[#7546](https://github.com/seata/seata/pull/7546)] fix client spring version compatible - [[#7505](https://github.com/apache/incubator-seata/pull/7505)] prevent Netty I/O thread blocking by async channel release via reconnectExecutor - [[#7563](https://github.com/apache/incubator-seata/pull/7563)] Fix NPE when server-side filter is disabled and filter chain is null. - [[#7570](https://github.com/apache/incubator-seata/pull/7570)] Fix order() behavior in GlobalTransactionalInterceptorHandler to ensure correct sorting of invocation handlers - [[#7596](https://github.com/apache/incubator-seata/pull/7596)] Fixed the issue where deserialization failed when the xss filter obtained the default keyword - [[#7613](https://github.com/apache/incubator-seata/pull/7613)] Fixed the SQL error in the datetime format time query in the global lock query - [[#7622](https://github.com/seata/seata/pull/7622)] adjust the order of org.apache.seata.saga.rm.SagaResourceManage - [[#7624](https://github.com/apache/incubator-seata/pull/7624)] fix the compatibility issue of yml configuration files - [[#7644](https://github.com/apache/incubator-seata/pull/7644)] fix the compatibility issue of spotless when java 25 - [[#7662](https://github.com/apache/incubator-seata/pull/7662)] ensure visibility of rm and The methods in MockTest are executed in order - [[#7683](https://github.com/apache/incubator-seata/pull/7683)] Override XABranchXid equals() and hashCode() to fix memory leak in mysql driver - [[#7643](https://github.com/apache/incubator-seata/pull/7643)] fix DM transaction rollback not using database auto-increment primary keys - [[#7708](https://github.com/apache/incubator-seata/pull/7708)] Use xaActive to determine whether xaResource needs to execute the end method - [[#7747](https://github.com/apache/incubator-seata/pull/7747)] undo log table name dynamic derivation - [[#7749](https://github.com/apache/incubator-seata/pull/7749)] fix error parsing application/x-www-form-urlencoded requests in Http2HttpHandler - [[#7761](https://github.com/apache/incubator-seata/pull/7761)] special handling is applied to the Byte[] type to ensure the correct primary key value - [[#7771](https://github.com/apache/incubator-seata/pull/7771)] Shentongdata xa mode should be hold the same connection - [[#7785](https://github.com/apache/incubator-seata/pull/7785)] fix the failure test - [[#7796](https://github.com/apache/incubator-seata/pull/7796)] fix the NPE on ConsulConfigurationTest method - [[#7839](https://github.com/apache/incubator-seata/pull/7839)] resolve TransactionAutoConfiguration compatibility with Spring Boot 4.x - [[#7843](https://github.com/apache/incubator-seata/pull/7843)] fix index type misjudgment in Dm/KingbaseTableMetaCache - [[#7856](https://github.com/apache/incubator-seata/pull/7856)] fix comma missing in package.json/min-document - [[#7860](https://github.com/apache/incubator-seata/pull/7860)] Fix the issue where delayed messages in RocketMQ transactions were silently ignored, now explicitly throwing an exception - [[#7879](https://github.com/apache/incubator-seata/pull/7879)] fix:correct server port and naming server port - [[#7881](https://github.com/apache/incubator-seata/pull/7881)] the vgroup_table in the SQL files of all databases should use a three-column unique constraint - [[#7891](https://github.com/apache/incubator-seata/pull/7891)] raft split-brain causes incorrect cluster information - [[#7908](https://github.com/apache/incubator-seata/pull/7908)] handle timestamp with time zone in postgresql primary key - [[#7938](https://github.com/apache/incubator-seata/pull/7938)] ensure the Jakarta-related package paths are correct. - [[#7959](https://github.com/apache/incubator-seata/pull/7959)] fix consoleApiService bean that could not be found - [[#7966](https://github.com/apache/incubator-seata/pull/7966)] fix different element order in two lists causes failure to set the index as primary key index ### optimize: - [[#7460](https://github.com/apache/incubator-seata/pull/7460)] Remove hardcoded port configuration in core module test classes - [[#7478](https://github.com/apache/incubator-seata/pull/7484)] optimize: remove client id metric - [[#7557](https://github.com/seata/seata/pull/7557)] upgrade some npmjs dependencies - [[#7576](https://github.com/seata/seata/pull/7576)] Add empty push protection for Configuration - [[#7577](https://github.com/seata/seata/pull/7577)] remove the 4MB size limit when decompressing with zstd - [[#7578](https://github.com/seata/seata/pull/7578)] zstd decompression is changed from jni to ZstdInputStream - [[#7591](https://github.com/seata/seata/pull/7591)] Optimize default xssFilter config retrieval when no explicit configuration is provided - [[#7608](https://github.com/seata/seata/pull/7608)] modify the parameter name in refreshToken method - [[#7603](https://github.com/seata/seata/pull/7603)] upgrade Apache Tomcat dependency from 9.0.106 to 9.0.108 - [[#7614](https://github.com/seata/seata/pull/7614)] update README.md - [[#7443](https://github.com/seata/seata/pull/7443)] Replace @LocalTCC with @SagaTransactional in the saga annotation pattern - [[#7645](https://github.com/seata/seata/pull/7645)] simplifying the relevant transport.* configuration types - [[#7668](https://github.com/seata/seata/pull/7668)] correct variable name typo in DeflaterUtil - [[#7673](https://github.com/apache/incubator-seata/pull/7673)] bump @babel/runtime from ^7.26.10 to ^7.27.0 - [[#7689](https://github.com/apache/incubator-seata/pull/7689)] optimize source release - [[#7711](https://github.com/apache/incubator-seata/pull/7711)] add fastjson support for serialization and deserialization of PostgreSQL array types - [[#7722](https://github.com/apache/incubator-seata/pull/7722)] optimize serializer type meaning - [[#7739](https://github.com/apache/incubator-seata/pull/7739)] optimize docker image building process - [[#7741](https://github.com/apache/incubator-seata/pull/7741)] supports publishing image based on JDK 25 - [[#7743](https://github.com/seata/seata/pull/7743)] upgrade Apache Tomcat dependency from 9.0.108 to 9.0.109 - [[#7740](https://github.com/apache/incubator-seata/pull/7740)] enhance HttpClient to support h2c - [[#7744](https://github.com/apache/incubator-seata/pull/7744)] upgrade Apache Tomcat dependency from 9.0.109 to 9.0.110 - [[#7751](https://github.com/apache/incubator-seata/pull/7751)] remove unused dependency - [[#7807](https://github.com/apache/incubator-seata/pull/7807)] support mariadb 3.x - [[#7781](https://github.com/apache/incubator-seata/pull/7781)] highlight pmd-check log - [[#7704](https://github.com/apache/incubator-seata/pull/7704)] fix frontend security vulnerabilities - [[#7710](https://github.com/apache/incubator-seata/pull/7710)] fix some spell errors in code and comments - [[#7721](https://github.com/apache/incubator-seata/pull/7721)] optimize common module - [[#7768](https://github.com/apache/incubator-seata/pull/7768)] optimize docker image building process - [[#7809](https://github.com/apache/incubator-seata/pull/7809)] optimize README.md - [[#7813](https://github.com/apache/incubator-seata/pull/7813)] add decode buffer limit - [[#7822](https://github.com/apache/incubator-seata/pull/7822)] add the request and response objects in HTTP thread context - [[#7829](https://github.com/apache/incubator-seata/pull/7829)] optimize lz4 compressor - [[#7864](https://github.com/apache/incubator-seata/pull/7864)] automatically skip the compilation of console and namingserver modules in JDK<25 - [[#7867](https://github.com/apache/incubator-seata/pull/7867)] optimize global transaction support non-private modifier methods - [[#7868](https://github.com/apache/incubator-seata/pull/7868)] change build_arm64-binary CI to JDK25 Version and runs on ubuntu-24.04-arm - [[#7873](https://github.com/apache/incubator-seata/pull/7873)] upgrade jacoco plugin version from 0.8.7 to 0.8.14 in order to adapt JDK25 - [[#7885](https://github.com/apache/incubator-seata/pull/7885)] replace fury with fory - [[#7884](https://github.com/apache/incubator-seata/pull/7884)] upgrade tomcat-embed-core version to 11.0.10 - [[#7888](https://github.com/apache/incubator-seata/pull/7888)] bump org.apache.tomcat.embed:tomcat-embed-core - [[#7889](https://github.com/apache/incubator-seata/pull/7889)] bump org.apache.tomcat.embed:tomcat-embed-core in /console - [[#7894](https://github.com/apache/incubator-seata/pull/7894)] optimize method and class names in the saga module - [[#7905](https://github.com/apache/incubator-seata/pull/7905)] format content - [[#7909](https://github.com/apache/incubator-seata/pull/7909)] add comments to the namingserver address configuration in console application file - [[#7913](https://github.com/apache/incubator-seata/pull/7913)] remove @author info - [[#7931](https://github.com/apache/incubator-seata/pull/7931)] pin the Spring version for namingserver and console - [[#7942](https://github.com/apache/incubator-seata/pull/7942)] update jib-maven-plugin version and increase parallel test execution limits - [[#7935](https://github.com/apache/incubator-seata/pull/7935)] add OkHttp and MockWebServer dependencies to resolve version conflicts ### security: - [[#7632](https://github.com/apache/incubator-seata/pull/7632)] upgrade sha.js to version 2.4.12 - [[#7633](https://github.com/apache/incubator-seata/pull/7633)] Upgrade cipher-base to version 1.0.6 - [[#7716](https://github.com/apache/incubator-seata/pull/7716)] Update commons-lang to 3.18.0 - [[#7699](https://github.com/apache/incubator-seata/pull/7699)] Upgrade axios to version 1.12.2 - [[#7845](https://github.com/apache/incubator-seata/pull/7845)] upgrade node-forge to version 1.3.2 or later - [[#7849](https://github.com/apache/incubator-seata/pull/7849)] upgrade min-document to version 2.19.1 or later - [[#7847](https://github.com/apache/incubator-seata/pull/7847)] upgrade js-yaml to 3.14.2, 4.1.1 or later ### test: - [[#7635](https://github.com/apache/incubator-seata/pull/7635)] fix JUnit test method access modifiers and annotations - [[#7541](https://github.com/seata/seata/pull/7541)] fix jakarta UT failed in jdk17+ - [[#7540](https://github.com/seata/seata/pull/7540)] fix port of mock server - [[#7580](https://github.com/seata/seata/pull/7580)] fix the exception caused by the disorder of test case execution order - [[#7584](https://github.com/apache/incubator-seata/pull/7584)] deflake ConsulConfigurationTest#testInitSeataConfig with short await/retry to absorb CI timing delay - [[#7610](https://github.com/apache/incubator-seata/pull/7610)] Enable Nacos integration tests when nacosCaseEnabled is true - [[#7672](https://github.com/apache/incubator-seata/pull/7672)] Add unit tests for the `seata-common` module - [[#7679](https://github.com/apache/incubator-seata/pull/7679)] fix old version connect timeout - [[#7638](https://github.com/apache/incubator-seata/pull/7638)]Add unit tests for the `seata-common` module and remove a todo - [[#7709](https://github.com/apache/incubator-seata/pull/7709)] add UT for dm module - [[#7725](https://github.com/apache/incubator-seata/pull/7725)] add UT for compressor module - [[#7718](https://github.com/apache/incubator-seata/pull/7718)] add UT for config module - [[#7723](https://github.com/apache/incubator-seata/pull/7723)] add UT for fastjson2 to test PostgreSQL Array type - [[#7731](https://github.com/apache/incubator-seata/pull/7731)] add UT for rm.fence - [[#7737](https://github.com/apache/incubator-seata/pull/7737)] add UT for DefaultResourceManager and ClusterWatcherManager - [[#7757](https://github.com/apache/incubator-seata/pull/7757)] add UT for undo module - [[#7763](https://github.com/apache/incubator-seata/pull/7763)] add UT for RegistryNamingServerProperties and RegistryMetadataProperties - [[#7764](https://github.com/apache/incubator-seata/pull/7764)] add some UT for server/coordinator module - [[#7777](https://github.com/apache/incubator-seata/pull/7777)] add UT for seata-saga-statelang module - [[#7776](https://github.com/apache/incubator-seata/pull/7776)] add UT for XA module - [[#7788](https://github.com/apache/incubator-seata/pull/7788)] add some UT for rm-datasource module - [[#7774](https://github.com/apache/incubator-seata/pull/7774)] add some UT for server/console module - [[#7767](https://github.com/apache/incubator-seata/pull/7767)] add some UT for server/cluster module - [[#7750](https://github.com/apache/incubator-seata/pull/7750)] add some UT for server module - [[#7733](https://github.com/apache/incubator-seata/pull/7733)] add some UT for core module - [[#7728](https://github.com/apache/incubator-seata/pull/7728)] add some UT for compatible module - [[#7727](https://github.com/apache/incubator-seata/pull/7727)] add some UT for compatible module - [[#7803](https://github.com/apache/incubator-seata/pull/7803)] Fix flakiness in `DataCompareUtilsTest` caused by non-deterministic Map key iteration order. - [[#7804](https://github.com/apache/incubator-seata/pull/7804)] fix testXARollbackWithResourceLock() to ensure ci runs normally - [[#7779](https://github.com/apache/incubator-seata/pull/7779)] improve unit tests for RaftRegistryServiceImpl - [[#7801](https://github.com/apache/incubator-seata/pull/7801)] Fix non-deteriministic in JsonParserWrapTest#testToJSONString due to key order - [[#7800](https://github.com/apache/incubator-seata/pull/7800)] fix non-deterministic in StringUtilsTest#testToStringAndCycleDependency - [[#7802](https://github.com/apache/incubator-seata/pull/7802)] Fix non-deterministic in `ConnectionContextProxyTest`. - [[#7808](https://github.com/apache/incubator-seata/pull/7808)] Deflake multiple Insert Executor tests by fixing order-dependent primary key (PK) value comparison - [[#7815](https://github.com/apache/incubator-seata/pull/7815)] test: fix combine test to avoid failure due to ordering - [[#7819](https://github.com/apache/incubator-seata/pull/7819)] fix brittle RPC status test - [[#7827](https://github.com/apache/incubator-seata/pull/7827)] Fix non-deteriministic in TableMetaTest#testGetPrimaryKeyOnlyName - [[#7859](https://github.com/apache/incubator-seata/pull/7859)] Fix flaky tests in MetadataTest caused by shared state and brittle toString assertions - [[#7858](https://github.com/apache/incubator-seata/pull/7858)] Fix flakiness in HttpTest.convertParamOfJsonStringTest caused by non-deterministic Map iteration order - [[#7874](https://github.com/apache/incubator-seata/pull/7874)] add unit tests for DBType and RedisKeyConstants in core module - [[#7900](https://github.com/apache/incubator-seata/pull/7900)] add unit tests for ConnectionContext class - [[#7901](https://github.com/apache/incubator-seata/pull/7901)] add unit tests for core module (LockStatus, MessageType, ProtocolConstants) - [[#7906](https://github.com/apache/incubator-seata/pull/7906)] add test for Fury/Fory - [[#7907](https://github.com/apache/incubator-seata/pull/7907)] test: fixes CI errors caused by timing issues in ZkConfigurationTest - [[#7912](https://github.com/apache/incubator-seata/pull/7912)] test: add Antlr tests to improve test coverage - [[#7933](https://github.com/apache/incubator-seata/pull/7933)] oscar test cases should only run on Druid 1.2.5 and higher versions ### refactor: - [[#7615](https://github.com/seata/seata/pull/7615)] Refactor DataSourceProxy - [[#7617](https://github.com/seata/seata/pull/7617)] Refactor Alibaba Dubbo and HSF - [[#7688](https://github.com/seata/seata/pull/7688)] Reactor extensions module - [[#7719](https://github.com/apache/incubator-seata/pull/7719)] Replace synchronized with ReentrantLock in AbstractNettyRemotingClient to support virtual threads - [[#7789](https://github.com/apache/incubator-seata/pull/7789)] rename GROUP_UPDATE_TIME to GROUP_UPDATE_TERM in ClusterWatcherManager - [[#7698](https://github.com/apache/incubator-seata/pull/7698)] refactor test module - [[#7818](https://github.com/apache/incubator-seata/pull/7818)] run the HTTP filter as a chain of responsibility - [[#7904](https://github.com/apache/incubator-seata/pull/7904)] Unify HTTP client utility to OkHttp3 ### doc: - [[#7462](https://github.com/seata/seata/pull/7462)] improve TM module Javadoc with comprehensive English documentation - [[#7531](https://github.com/seata/seata/pull/7531)] Optimize the Readme and change documents - [[#7571](https://github.com/seata/seata/pull/7571)] Add hyperlink to CONTRIBUTING.md in pull request template - [[#7605](https://github.com/apache/incubator-seata/pull/7605)] Add the type of registry as seata in application.yml - [[#7625](https://github.com/apache/incubator-seata/pull/7625)] Polish Javadoc for @EnableAutoDataSourceProxy and DefaultFailureHandlerImpl - [[#7702](https://github.com/apache/incubator-seata/pull/7702)] change "whether use" to "whether to use" for correct syntax. Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) - [YvCeung](https://github.com/YvCeung) - [xjlgod](https://github.com/xjlgod) - [YongGoose](https://github.com/YongGoose) - [KoKimSS](https://github.com/KoKimSS) - [maple525866](https://github.com/maple525866) - [funky-eyes](https://github.com/funky-eyes) - [keepConcentration](https://github.com/keepConcentration) - [sunheyi6](https://github.com/sunheyi6) - [WangzJi](https://github.com/WangzJi) - [unifolio0](https://github.com/unifolio0) - [Asuka-star](https://github.com/Asuka-star) - [contrueCT](https://github.com/contrueCT) - [YoWuwuuuw](https://github.com/YoWuwuuuw) - [yougecn](https://github.com/yougecn) - [jongmin-chung](https://github.com/jongmin-chung) - [jihun4452](https://github.com/jihun4452) - [psxjoy](https://github.com/psxjoy) - [dsomehan](https://github.com/dsomehan) - [LegendPei](https://github.com/LegendPei) - [lokidundun](https://github.com/lokidundun) - [xiaoxiangyeyu0](https://github.com/xiaoxiangyeyu0) - [jsbxyyx](https://github.com/jsbxyyx) - [xingfudeshi](https://github.com/xingfudeshi) - [diguage](https://github.com/diguage) - [aias00](https://github.com/aias00) - [NiMv1](https://github.com/NiMv1) - [MaoMaoandSnail](https://github.com/MaoMaoandSnail) - [neronsoda](https://github.com/neronsoda) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. ================================================ FILE: changes/en-us/2.x.md ================================================ Add changes here for all PR submitted to the 2.x branch. ### feature: - [[#8014](https://github.com/apache/incubator-seata/pull/8014)] add P99.9 latency percentile to benchmark CLI - [[#7882](https://github.com/apache/incubator-seata/pull/7882)] add metrics for NamingServer - [[#7760](https://github.com/apache/incubator-seata/pull/7760)] unify Jackson/fastjson serialization - [[#7000](https://github.com/apache/incubator-seata/pull/7000)] support multi-version codec & fix not returning client registration failure msg. - [[#7865](https://github.com/apache/incubator-seata/pull/7865)] add Benchmark CLI tool - [[#7903](https://github.com/apache/incubator-seata/pull/7903)] Support HTTP/2 stream push for the Watch API in Server Raft mode - [[#8002](https://github.com/apache/incubator-seata/pull/8002)] add Grafana dashboard JSON for NamingServer metrics ### bugfix: - [[#7929](https://github.com/apache/incubator-seata/pull/7929)] fix KingbaseUndoLogManager INSERT_UNDO_LOG_SQL error - [[#7940](https://github.com/apache/incubator-seata/pull/7940)] ensure the Jakarta-related package paths are correct - [[#7960](https://github.com/apache/incubator-seata/pull/7960)] fix consoleApiService bean that could not be found - [[#7956](https://github.com/apache/incubator-seata/pull/7956)] fix empty jacoco report on local when jdk above 17 - [[#7965](https://github.com/apache/incubator-seata/pull/7965)] fix the issue where different element order in two lists causes failure to set the index as the primary key - [[#7992](https://github.com/apache/incubator-seata/pull/7992)] fix report branch transaction status without setting branch type ### optimize: - [[#7930](https://github.com/apache/incubator-seata/pull/7930)] pin the Spring version for namingserver and console - [[#7943](https://github.com/apache/incubator-seata/pull/7943)] update jib-maven-plugin version and increase parallel test execution limits - [[#7934](https://github.com/apache/incubator-seata/pull/7934)] add OkHttp and MockWebServer dependencies to resolve version conflicts - [[#7951](https://github.com/apache/incubator-seata/pull/7951)] upgrade qs dependency version to 6.14.1 - [[#7955](https://github.com/apache/incubator-seata/pull/7955)] change the getProperty call to resolvePlaceholders - [[#7971](https://github.com/apache/incubator-seata/pull/7971)] upgrade some dependencies - [[#7970](https://github.com/apache/incubator-seata/pull/7970)] Remove unnecessary refreshLeader from ClusterController cluster endpoint - [[#8019](https://github.com/apache/incubator-seata/pull/8019)] mark deprecated JSON parsers ### security: ### test: - [[#7962](https://github.com/apache/incubator-seata/pull/7962)] add unit tests for NacosRegistryProvider and NacosRegistryServiceImpl - [[#8003](https://github.com/apache/incubator-seata/pull/8003)] Enhance NacosRegistryServiceImplTest with additional mocks for service name group and cluster - [[#7915](https://github.com/apache/incubator-seata/pull/7915)] add unit tests for saga-engine low coverage components ### refactor: - [[#7957](https://github.com/apache/incubator-seata/pull/7957)] replace Apache HttpClient with OkHttp in NamingServer ### doc: Thanks to these contributors for their code commits. Please report an unintended omission. - [DoChaoing](https://github.com/DoChaoing) - [slievrly](https://github.com/slievrly) - [contrueCT](https://github.com/contrueCT) - [lokidundun](https://github.com/lokidundun) - [LegendPei](https://github.com/LegendPei) - [funky-eyes](https://github.com/funky-eyes) - [maple525866](https://github.com/maple525866) - [neronsoda](https://github.com/neronsoda) - [aias00](https://github.com/Aias00) - [sddtc](https://github.com/sddtc) - [xingfudeshi](https://github.com/xingfudeshi) - [Sumit6307](https://github.com/Sumit6307) - [xiaoxiangyeyu0](https://github.com/xiaoxiangyeyu0) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. ================================================ FILE: changes/zh-cn/1.4.2.md ================================================ ### 1.4.2 [source](https://github.com/seata/seata/archive/v1.4.2.zip) | [binary](https://github.com/seata/seata/releases/download/v1.4.2/seata-server-1.4.2.zip)
Release notes ### Seata 1.4.2 Seata 1.4.2 发布。 Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 此版本更新如下: ### feature: - [[#3172](https://github.com/seata/seata/pull/3172)] 支持 AT 模式 undo_log 压缩模式 - [[#3372](https://github.com/seata/seata/pull/3372)] 支持saga模式下用户自定义是否更新最后一次重试日志 - [[#3411](https://github.com/seata/seata/pull/3411)] 支持seata-server 线程池参数可配置 - [[#3348](https://github.com/seata/seata/pull/3348)] 支持 TC 存储模式使用 redis-sentinel - [[#2667](https://github.com/seata/seata/pull/2667)] 支持使用db和redis存储模式时密码的加解密 - [[#3427](https://github.com/seata/seata/pull/3427)] 支持分布式锁接口 - [[#3443](https://github.com/seata/seata/pull/3443)] 支持将seata-server的日志发送到logstash或kafka中 - [[#3486](https://github.com/seata/seata/pull/3486)] 支持Metrics增加事务分组属性 - [[#3317](https://github.com/seata/seata/pull/3317)] 支持当zookeeper作为配置中心时从单node获取全部配置 - [[#2933](https://github.com/seata/seata/pull/2933)] 支持mysql antlr sqlparser - [[#3228](https://github.com/seata/seata/pull/3228)] 支持自定义序列化插件 - [[#3516](https://github.com/seata/seata/pull/3516)] 支持 consul 作为注册中心和配置中心时的 acl-token - [[#3116](https://github.com/seata/seata/pull/3116)] 支持配置 apollo 配置中心配置 configService 和 cluster - [[#3468](https://github.com/seata/seata/pull/3468)] 支持saga模式下任务循环执行 - [[#3447](https://github.com/seata/seata/pull/3447)] 支持日志框架中事务上下文的打印 ### bugfix: - [[#3258](https://github.com/seata/seata/pull/3258)] 修复AsyncWorker潜在的OOM问题 - [[#3293](https://github.com/seata/seata/pull/3293)] 修复配置缓存获取值类型不匹配的问题 - [[#3241](https://github.com/seata/seata/pull/3241)] 禁止在多SQL的情况下使用 limit 和 order by 语法 - [[#3406](https://github.com/seata/seata/pull/3406)] 修复当config.txt中包含特殊字符时无法推送至 nacos 的问题 - [[#3367](https://github.com/seata/seata/pull/3367)] 修复最后一个XA分支二阶段时偶发无法回滚的异常 - [[#3418](https://github.com/seata/seata/pull/3418)] 修复 getGeneratedKeys 可能会取到历史的主键的问题 - [[#3448](https://github.com/seata/seata/pull/3448)] 修复多个锁竞争失败时,仅删除单个锁,并优化锁竞争逻辑提升处理性能 - [[#3408](https://github.com/seata/seata/pull/3408)] 修复jar运行模式第三方依赖分离打包时的NPE问题 - [[#3431](https://github.com/seata/seata/pull/3431)] 修复在读取配置时Property Bean可能未初始化的问题 - [[#3413](https://github.com/seata/seata/pull/3413)] 修复回滚到savepoint以及releaseSavepoint的逻辑 - [[#3451](https://github.com/seata/seata/pull/3451)] 修复autoCommit=true,全局锁竞争失败时的脏写问题 - [[#3481](https://github.com/seata/seata/pull/3481)] 修复当 consul client 抛出异常时导致刷新任务中断的问题 - [[#3491](https://github.com/seata/seata/pull/3491)] 修复README.md文件中的拼写错误 - [[#3531](https://github.com/seata/seata/pull/3531)] 修复RedisTransactionStoreManager 获取 brachTransaction 可能的 NPE 问题 - [[#3500](https://github.com/seata/seata/pull/3500)] 修复 oracle 和 postgreSql 无法获取 column info 的问题 - [[#3560](https://github.com/seata/seata/pull/3560)] 修复 Committing 状态的事务异步任务没有时间阈值和无法进行事务恢复的问题 - [[#3555](https://github.com/seata/seata/pull/3555)] 通过setBytes代替setBlob,避免高版本jdbc驱动工作异常 - [[#3540](https://github.com/seata/seata/pull/3540)] 修复server发布打包时缺失文件的问题 - [[#3597](https://github.com/seata/seata/pull/3597)] 修复可能的 NPE问题 - [[#3568](https://github.com/seata/seata/pull/3568)] 修复自动数据源代理因 ConcurrentHashMap.computeIfAbsent 导致的死锁问题 - [[#3402](https://github.com/seata/seata/pull/3402)] 修复更新SQL中字段名含有库名无法解析更新列的问题 - [[#3464](https://github.com/seata/seata/pull/3464)] 修复测试用例空指针异常和StackTraceLogger中错误的日志格式. - [[#3522](https://github.com/seata/seata/pull/3522)] 修复当 DML 影响行数为0时注册分支和插入undo_log的问题 - [[#3635](https://github.com/seata/seata/pull/3635)] 修复zookeeper 配置变更无法推送通知的问题 - [[#3133](https://github.com/seata/seata/pull/3133)] 修复某些场景下无法重试全局锁的问题 - [[#3156](https://github.com/seata/seata/pull/3156)] 修复嵌套代理类无法 获取target的问题 ### optimize: - [[#3341](https://github.com/seata/seata/pull/3341)] 优化获取指定配置文件的路径格式问题 - [[#3385](https://github.com/seata/seata/pull/3385)] 优化 GitHub Actions 配置,修复单测失败问题 - [[#3175](https://github.com/seata/seata/pull/3175)] 支持雪花算法时钟回拨 - [[#3291](https://github.com/seata/seata/pull/3291)] 优化mysql连接参数 - [[#3336](https://github.com/seata/seata/pull/3336)] 支持使用System.getProperty获取Netty配置参数 - [[#3369](https://github.com/seata/seata/pull/3369)] 添加github action的dockerHub秘钥 - [[#3343](https://github.com/seata/seata/pull/3343)] 将CI程序从Travis CI迁移到Github Actions - [[#3397](https://github.com/seata/seata/pull/3397)] 增加代码变更记录 - [[#3303](https://github.com/seata/seata/pull/3303)] 支持从nacos单一dataId中读取所有配置 - [[#3380](https://github.com/seata/seata/pull/3380)] 优化 globalTransactionScanner 中的 DISABLE_GLOBAL_TRANSACTION listener - [[#3123](https://github.com/seata/seata/pull/3123)] 优化 seata-server 打包策略 - [[#3415](https://github.com/seata/seata/pull/3415)] 优化 maven 打包时清除 distribution 目录 - [[#3316](https://github.com/seata/seata/pull/3316)] 优化读取配置值时属性bean未初始化的问题 - [[#3420](https://github.com/seata/seata/pull/3420)] 优化枚举类的使用并添加单元测试 - [[#3533](https://github.com/seata/seata/pull/3533)] 支持获取当前事务角色 - [[#3436](https://github.com/seata/seata/pull/3436)] 优化SQLType类中的错别字 - [[#3439](https://github.com/seata/seata/pull/3439)] 调整springApplicationContextProvider order以使其可以在xml bean之前被调用 - [[#3248](https://github.com/seata/seata/pull/3248)] 优化负载均衡配置迁移到client节点下 - [[#3441](https://github.com/seata/seata/pull/3441)] 优化starter的自动配置处理 - [[#3466](https://github.com/seata/seata/pull/3466)] 优化使用equalsIgnoreCase() 进行字符串比较 - [[#3476](https://github.com/seata/seata/pull/3476)] 支持 server 参数传入hostname时自动将其转换为 ip - [[#3236](https://github.com/seata/seata/pull/3236)] 优化执行解锁操作的条件,减少不必要的 unlock 操作 - [[#3485](https://github.com/seata/seata/pull/3485)] 删除 ConfigurationFactory 中无用的代码 - [[#3505](https://github.com/seata/seata/pull/3505)] 删除 GlobalTransactionScanner 中无用的 if 判断 - [[#3544](https://github.com/seata/seata/pull/3544)] 优化无法通过Statement#getGeneratedKeys时,只能获取到批量插入的第一个主键的问题 - [[#3549](https://github.com/seata/seata/pull/3549)] 统一DB存储模式下不同表中的xid字段的长度 - [[#3551](https://github.com/seata/seata/pull/3551)] 调大RETRY_DEAD_THRESHOLD的值以及设置成可配置 - [[#3589](https://github.com/seata/seata/pull/3589)] 使用JUnit API做异常检查 - [[#3601](https://github.com/seata/seata/pull/3601)] 使`LoadBalanceProperties`与`spring-boot:2.x`及以上版本兼容 - [[#3513](https://github.com/seata/seata/pull/3513)] Saga SpringBeanService调用器支持切换 json 解析器 - [[#3318](https://github.com/seata/seata/pull/3318)] 支持 CLIENT_TABLE_META_CHECKER_INTERVAL 可配置化 - [[#3371](https://github.com/seata/seata/pull/3371)] 支持 metric 按 applicationId 分组 - [[#3459](https://github.com/seata/seata/pull/3459)] 删除重复的ValidadAddress代码 - [[#3215](https://github.com/seata/seata/pull/3215)] 优化seata-server 在file模式下启动时的reload逻辑 - [[#3631](https://github.com/seata/seata/pull/3631)] 优化 nacos-config.py 脚本的入参问题 - [[#3638](https://github.com/seata/seata/pull/3638)] 优化 update 和 delete 的 SQL 不支持 join 的错误提示 - [[#3523](https://github.com/seata/seata/pull/3523)] 优化当使用oracle时调用releaseSavepoint()方法报异常的问题 - [[#3458](https://github.com/seata/seata/pull/3458)] 还原已删除的md - [[#3574](https://github.com/seata/seata/pull/3574)] 修复EventBus.java文件中注释拼写错误 - [[#3573](https://github.com/seata/seata/pull/3573)] 修复 README.md 文件中设计器路径错误 - [[#3662](https://github.com/seata/seata/pull/3662)] 更新gpg密钥对 - [[#3664](https://github.com/seata/seata/pull/3664)] 优化 javadoc - [[#3637](https://github.com/seata/seata/pull/3637)] 登记使用seata的公司和1.4.2版本包含的新增pr信息 ### test - [[#3381](https://github.com/seata/seata/pull/3381)] 添加 TmClient 的测试用例 - [[#3607](https://github.com/seata/seata/pull/3607)] 修复 EventBus 的单元测试问题 - [[#3579](https://github.com/seata/seata/pull/3579)] 添加 StringFormatUtils 测试用例 - [[#3365](https://github.com/seata/seata/pull/3365)] 修复ParameterParserTest测试用例 - [[#3359](https://github.com/seata/seata/pull/3359)] 删除未使用的测试用例 - [[#3383](https://github.com/seata/seata/pull/3383)] 优化StatementProxyTest单元测试 - [[#3578](https://github.com/seata/seata/pull/3578)] 修复单元测试case里的UnfinishedStubbing异常 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [caohdgege](https://github.com/caohdgege) - [a364176773](https://github.com/a364176773) - [wangliang181230](https://github.com/wangliang181230) - [xingfudeshi](https://github.com/xingfudeshi) - [jsbxyyx](https://github.com/jsbxyyx) - [selfishlover](https://github.com/selfishlover) - [l8189352](https://github.com/l81893521) - [Rubbernecker](https://github.com/Rubbernecker) - [lj2018110133](https://github.com/lj2018110133) - [github-ganyu](https://github.com/github-ganyu) - [dmego](https://github.com/dmego) - [spilledyear](https://github.com/spilledyear) - [hoverruan](https://github.com/hoverruan ) - [anselleeyy](https://github.com/anselleeyy) - [Ifdevil](https://github.com/Ifdevil) - [lvxianzheng](https://github.com/lvxianzheng) - [MentosL](https://github.com/MentosL) - [lian88jian](https://github.com/lian88jian) - [litianyu1992](https://github.com/litianyu1992) - [xyz327](https://github.com/xyz327) - [13414850431](https://github.com/13414850431) - [xuande](https://github.com/xuande) - [tanggen](https://github.com/tanggen) - [eas5](https://github.com/eas5) - [nature80](https://github.com/nature80) - [ls9527](https://github.com/ls9527) - [drgnchan](https://github.com/drgnchan) - [imyangyong](https://github.com/imyangyong) - [sunlggggg](https://github.com/sunlggggg) - [long187](https://github.com/long187) - [h-zhi](https://github.com/h-zhi) - [StellaiYang](https://github.com/StellaiYang) - [slinpq](https://github.com/slinpq) - [sustly](https://github.com/sustly) - [cznc](https://github.com/cznc) - [squallliu](https://github.com/squallliu) - [81519434](https://github.com/81519434) - [luoxn28](https://github.com/luoxn28) 同时,我们收到了社区反馈的很多有价值的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
================================================ FILE: changes/zh-cn/1.5.0.md ================================================ ### 1.5.0 [source](https://github.com/seata/seata/archive/v1.5.0.zip) | [binary](https://github.com/seata/seata/releases/download/v1.5.0/seata-server-1.5.0.zip)
Release notes ### Seata 1.5.0 Seata 1.5.0 发布。 Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 此版本更新如下: ### feature: - [[#4115](https://github.com/seata/seata/pull/4115)] 支持用户控制台 - [[#3472](https://github.com/seata/seata/pull/3472)] 添加redisLocker的lua模式 - [[#3575](https://github.com/seata/seata/pull/3575)] 支持对锁和会话不同存储的混合使用 - [[#3374](https://github.com/seata/seata/pull/3374)] 支持mysql INSERT ON DUPLICATE KEY UPDATE - [[#3642](https://github.com/seata/seata/pull/3642)] TCC模式支持使用API的形式进行二阶段参数传递 - [[#3064](https://github.com/seata/seata/pull/3064)] 支持可配置GlobalTransactionInterceptor和TccActionInterceptor的order值 - [[#2852](https://github.com/seata/seata/pull/2852)] 支持自定义`GlobalTransactionScanner`的扫描对象。 - [[#3683](https://github.com/seata/seata/pull/3683)] 支持redis分布式锁来避免多tc竞争执行任务 - [[#3545](https://github.com/seata/seata/pull/3545)] TCC模式支持幂等控制、防悬挂和空回滚 - [[#3009](https://github.com/seata/seata/pull/3009)] 支持server端以springboot的方式的启动 - [[#3652](https://github.com/seata/seata/pull/3652)] 支持APM SkyWalking监控。 - [[#3823](https://github.com/seata/seata/pull/3823)] TCC模式二阶段方法参数列表支持自定义 - [[#3642](https://github.com/seata/seata/pull/3642)] TCC模式一阶段支持BusinessActionContext隐式传递 - [[#3856](https://github.com/seata/seata/pull/3856)] 支持 edas-hsf RPC 框架 - [[#3880](https://github.com/seata/seata/pull/3880)] 贡献文档增加中文版本 - [[#3869](https://github.com/seata/seata/pull/3869)] 支持从环境 ENV 获取配置 - [[#2568](https://github.com/seata/seata/pull/2568)] 支持GlobalTransactionInterceptor配置切面表达式 - [[#3886](https://github.com/seata/seata/pull/3886)] 支持注册中心注册ip的网络偏好设置 - [[#3906](https://github.com/seata/seata/pull/3906)] 支持 SPI 卸载 - [[#3668](https://github.com/seata/seata/pull/3668)] 支持kotlin协程 - [[#3968](https://github.com/seata/seata/pull/3968)] 支持 brpc-java RPC框架 - [[#4134](https://github.com/seata/seata/pull/4134)] 初始化控制台基础代码 - [[#4268](https://github.com/seata/seata/pull/4268)] 控制台Global Session页面File模式实现 - [[#4281](https://github.com/seata/seata/pull/4281)] 控制台Global Session页面和Global LockRedis模式实现 - [[#4293](https://github.com/seata/seata/pull/4293)] 控制台Global Lock页面File模式实现 - [[#4335](https://github.com/seata/seata/pull/4335)] 实现配置中心上传配置交互脚本(nacos,etcd3) - [[#4360](https://github.com/seata/seata/pull/4360)] 实现配置中心上传配置交互脚本(apollo,consul,zk) - [[#4320](https://github.com/seata/seata/pull/4320)] 实现控制台db模式全局事务、锁查询接口 - [[#4435](https://github.com/seata/seata/pull/4435)] 控制台前端页面实现 - [[#4480](https://github.com/seata/seata/pull/4480)] 实现DefaultAuthSigner的默认签名加密方法 - [[#3870](https://github.com/seata/seata/pull/3870)] 让seata-bom成为真正的Bill-Of-Material - [[#3487](https://github.com/seata/seata/pull/3487)] 添加分布式锁的db实现 - [[#3889](https://github.com/seata/seata/pull/3889)] 注册中心添加心跳 - [[#3951](https://github.com/seata/seata/pull/3951)] 支持zstd压缩 - [[#2838](https://github.com/seata/seata/pull/2838)] Saga 支持springboot项目的自动配置 ### bugfix: - [[#3497](https://github.com/seata/seata/pull/3497)] 修复TCC模式并发量较大时线程池导致的超时问题 - [[#3686](https://github.com/seata/seata/pull/3686)] 修复Apollo集群配置项错误及NPE错误 - [[#3702](https://github.com/seata/seata/pull/3702)] 修改注释 - [[#3716](https://github.com/seata/seata/pull/3716)] 修复findTargetClass方法的错误 - [[#3717](https://github.com/seata/seata/pull/3717)] 更正interval的拼写 - [[#3773](https://github.com/seata/seata/pull/3773)] 修复consul注册中心在自定义集群名下无法获取TC集群 - [[#3695](https://github.com/seata/seata/pull/3695)] 修复mariadb无法创建XA连接的问题 - [[#3783](https://github.com/seata/seata/pull/3783)] 修复store mode不生效问题 - [[#3740](https://github.com/seata/seata/pull/3740)] 修复在某些情况下,当`Saga`事务结束时`LocalThread`未被清除的问题 - [[#3792](https://github.com/seata/seata/pull/3792)] 修复Server 无法获取 redis host的问题 - [[#3828](https://github.com/seata/seata/pull/3828)] 修复StringUtils抛出StackOverflowError的问题 - [[#3817](https://github.com/seata/seata/pull/3817)] 修复TC在SkyWalking拓扑图节点不汇聚的问题 - [[#3803](https://github.com/seata/seata/pull/3803)] 修复 ReflectionUtil 抛出不预期异常问题 - [[#3879](https://github.com/seata/seata/pull/3879)] 修复 posrgresql多schema无法找到channel问题 - [[#3881](https://github.com/seata/seata/pull/3881)] 修复不存在的相同 DataId 不同默认值返回相同值的问题 - [[#3897](https://github.com/seata/seata/pull/3897)] 修复FastjsonUndoLogParser中 localdatatime类型不能回滚的问题 - [[#3901](https://github.com/seata/seata/pull/3901)] 修复 seataio/seata-server 中 servlet-api 冲突无法启动问题 - [[#3931](https://github.com/seata/seata/pull/3931)] 修复 线程池拒绝执行情况下,dump内存文件名和路径错误的问题 - [[#3949](https://github.com/seata/seata/pull/3949)] 修复`nacos-config.py`不会跳过空白选项的问题,解决多个分割选项可能导致内容丢失的问题 - [[#3988](https://github.com/seata/seata/pull/3988)] 修复 nacos 的密码带有特殊字符导致用户名不存在问题 - [[#3978](https://github.com/seata/seata/pull/3978)] 修复 future timeout 引发的 NPE 问题 - [[#3998](https://github.com/seata/seata/pull/3998)] 修复 jedis multi.exec 的 NPE 问题 - [[#4011](https://github.com/seata/seata/pull/4011)] 修复 springboot下无法获取distributed-lock-table配置 - [[#4025](https://github.com/seata/seata/pull/4025)] 修复潜在的数据库资源泄露 - [[#4023](https://github.com/seata/seata/pull/4023)] 修复 dubbo部分场景存在xid未清除的问题 - [[#4032](https://github.com/seata/seata/pull/4032)] 修复server端的ShutdownHook在资源释放时,ApplicationContext已关闭的问题 - [[#4039](https://github.com/seata/seata/pull/4039)] 修复 本地事务抛出异常之后,RM没有清除xid - [[#4074](https://github.com/seata/seata/pull/4074)] 修复XA模式资源悬挂问题 - [[#4107](https://github.com/seata/seata/pull/4107)] 修复项目构建时的死锁问题 - [[#4158](https://github.com/seata/seata/pull/4158)] 修复logback无法加载到`RPC_PORT`的问题 - [[#4162](https://github.com/seata/seata/pull/4162)] 修复Redis注册中心内置配置名导致启动报错问题 - [[#4165](https://github.com/seata/seata/pull/4165)] 修复 `StringUtils.toString(obj)` 当obj是基本数据数组时,抛出`ClassCastException`的问题 - [[#4169](https://github.com/seata/seata/pull/4169)] 修复xa模式originalConnection已关闭,导致二阶段无法执行 - [[#4177](https://github.com/seata/seata/pull/4177)] 修复当事务超时且刚好tm发起commit决议时,意外造成全局锁释放的问题 - [[#4174](https://github.com/seata/seata/pull/4174)] 修复删除 undolog 时连接关闭问题 - [[#4189](https://github.com/seata/seata/pull/4189)] 修复 `kafka-appender.xml` 和 `logstash-appender.xml` 两个配置文件中`${}`表达式中的默认值前少了横杆的问题。 - [[#4213](https://github.com/seata/seata/pull/4213)] 修复部分"sessionMode"代码没执行导致启动失败问题 - [[#4220](https://github.com/seata/seata/pull/4220)] 修复 `zstd-compressor` 模块未合并到 `seata-all` 中的问题,同时修正其包名。另外,补充了 `kotlin-maven-plugin` 的版本号;顺便优化打包配置。 - [[#4222](https://github.com/seata/seata/pull/4222)] 修复字段列表为空时,插入语句无法回滚的问题 - [[#4253](https://github.com/seata/seata/pull/4253)] UpdateExecutor存储被真实修改的字段,而不是只存储set子句里面的字段 - [[#4233](https://github.com/seata/seata/pull/4233)] 修复 lock 和 branch 数据残留问题 - [[#4276](https://github.com/seata/seata/pull/4276)] 修复 seata-test 单测不运行的问题 - [[#4278](https://github.com/seata/seata/pull/4278)] 修复mysql的Blob/Clob/NClob数据类型无法反序列化的问题 - [[#4302](https://github.com/seata/seata/pull/4302)] 修复其他ORM可能存在获取不到自增主键值的问题 - [[#4308](https://github.com/seata/seata/pull/4308)] 修复Postgresql多个schema下存在相同表的TableMetaCache解析问题 - [[#4326](https://github.com/seata/seata/pull/4326)] 修复使用 mariadb 驱动程序时无法构建 Executor 的问题 - [[#4355](https://github.com/seata/seata/pull/4355)] 修复使用 mysql Loadbalance模式resourceId被误判为resourceIds的问题 - [[#4310](https://github.com/seata/seata/pull/4310)] 修复通过"SELECT LAST_INSERT_ID"获取mysql数据库自增id失败的问题 - [[#4331](https://github.com/seata/seata/pull/4331)] 修复使用ONLY_CARE_UPDATE_COLUMNS配置可能出现的脏写校验异常 - [[#4408](https://github.com/seata/seata/pull/4408)] 修复容器环境中设置环境变量无效的问题 - [[#4441](https://github.com/seata/seata/pull/4441)] 修复redis模式下查询时未关闭Pipeline和分支注册后添加分支session时branchSessions为null的问题 - [[#4438](https://github.com/seata/seata/pull/4438)] 修复develop版本file模式下GlobalSession在延迟删除的情况下无法被正常删除的问题 - [[#4432](https://github.com/seata/seata/pull/4432)] 修复develop版本下ServerApplicationListener无法读取配置中心配置的问题 - [[#4452](https://github.com/seata/seata/pull/4452)] 修复'service.disableGlobalTransaction'配置的日志输出错误 - [[#4449](https://github.com/seata/seata/pull/4449)] 修复redis分页查询npe问题,优化readession限制查询条数后均衡返回结果 - [[#4459](https://github.com/seata/seata/pull/4459)] 修复develop版本下oracle和pgsql数据库生成前后镜像失败的问题 - [[#4471](https://github.com/seata/seata/pull/4471)] 修复develop分支下,运行时切换事务分组对应集群引起的错误 - [[#4474](https://github.com/seata/seata/pull/4474)] 修复Mysql多位Bit类型字段回滚错误 - [[#4492](https://github.com/seata/seata/pull/4492)] 修复develop分支下eureka注册中心无法动态更新服务列表的问题 - [[#4228](https://github.com/seata/seata/pull/4228)] 修复tc获取不同ip的rm连接导致的xa模式资源悬挂问题 - [[#4535](https://github.com/seata/seata/pull/4535)] 修复FileSessionManagerTest单测错误 - [[#4561](https://github.com/seata/seata/pull/4561)] 修复 allSessions/findGlobalSessions 某些情况下返回null - [[#4505](https://github.com/seata/seata/pull/4505)] 修复time类型的fastjson序列化问题 - [[#4579](https://github.com/seata/seata/pull/4579)] 修复MySQLInsertOrUpdateExecutor的prepareUndoLogAll - [[#4005](https://github.com/seata/seata/pull/4005)] 修复PK约束名称与属于PK的唯一索引名称不同 - [[#4062](https://github.com/seata/seata/pull/4062)] 修复saga复杂参数序列化问题 - [[#4199](https://github.com/seata/seata/pull/4199)] 修复rpc tm 请求超时 - [[#4352](https://github.com/seata/seata/pull/4352)] 修复sql解析器的一些问题 - [[#4487](https://github.com/seata/seata/pull/4487)] 移除Pagination hideOnlyOnePage 属性 - [[#4449](https://github.com/seata/seata/pull/4449)] 优化redis limit并修复redis分页bug - [[#4608](https://github.com/seata/seata/pull/4608)] 修复测试用例 - [[#3110](https://github.com/seata/seata/pull/3110)] 修复单元测试的一些问题 ### optimize: - [[#4163](https://github.com/seata/seata/pull/4163)] 完善开发者奉献文档 - [[#3678](https://github.com/seata/seata/pull/3678)] 补充遗漏的配置及新版本pr登记md文件 - [[#3654](https://github.com/seata/seata/pull/3654)] 修正拼写,applicationContex -> applicationContext - [[#3615](https://github.com/seata/seata/pull/3615)] 二阶段同步提交时,全局事务记录异步删除 - [[#3687](https://github.com/seata/seata/pull/3687)] 修复某些场景下无法重试全局锁的问题 - [[#3689](https://github.com/seata/seata/pull/3689)] 修正script/server/config/file.properties中属性编写错误 - [[#3700](https://github.com/seata/seata/pull/3700)] 优化buildLockKey方法的效率 - [[#3588](https://github.com/seata/seata/pull/3588)] 优化数据源自动代理的流程 - [[#3528](https://github.com/seata/seata/pull/3528)] 优化redis模式内存占用 - [[#3626](https://github.com/seata/seata/pull/3626)] 移除重复的change status代码 - [[#3722](https://github.com/seata/seata/pull/3722)] 添加分布式锁的基础代码 - [[#3713](https://github.com/seata/seata/pull/3713)] 统一enableClientBatchSendRequest的默认值 - [[#3120](https://github.com/seata/seata/pull/3120)] 优化`Configuration`的部分代码,并添加单元测试 - [[#3735](https://github.com/seata/seata/pull/3735)] 当TC只有单个节点时,不进行非必要的负载均衡操作 - [[#3770](https://github.com/seata/seata/pull/3770)] 关闭一些未关闭的对象 - [[#3627](https://github.com/seata/seata/pull/3627)] 使用TreeMap替换TableMeta中的LinkedHashMap以兼容高版本的MySQL - [[#3760](https://github.com/seata/seata/pull/3760)] 优化`seata-server`的logback相关的配置 - [[#3765](https://github.com/seata/seata/pull/3765)] 将添加配置类的操作从`AutoConfiguration`转移到`EnvironmentPostProcessor`中,提升该操作的优先级 - [[#3730](https://github.com/seata/seata/pull/3730)] 重构TCC模式相关的代码,方便以后做功能扩展 - [[#3820](https://github.com/seata/seata/pull/3820)] 在表`tcc_fence_log`中添加字段`action_name`,用于查看该条记录是由哪个action产生的 - [[#3738](https://github.com/seata/seata/pull/3738)] `JacksonUndoLogParser`支持解析`LocalDateTime`(支持微秒时间) - [[#3794](https://github.com/seata/seata/pull/3794)] 优化`seata-server`的打包配置,修正Dockerfile的错误配置,并将Dockerfile也打包进去 - [[#3795](https://github.com/seata/seata/pull/3795)] 优化`zkRegistry`lookup方法性能 - [[#3840](https://github.com/seata/seata/pull/3840)] 优化`apm-skwalking`操作方法生成规则 - [[#3834](https://github.com/seata/seata/pull/3834)] 优化`seata-distribution`增加apm-seata-skywalking包 - [[#3847](https://github.com/seata/seata/pull/3847)] 优化ConcurrentHashMap.newKeySet替换ConcurrentSet - [[#3849](https://github.com/seata/seata/pull/3849)] 优化字符串拼接 - [[#3890](https://github.com/seata/seata/pull/3890)] 优化insert后镜像仅查询插入字段 - [[#3895](https://github.com/seata/seata/pull/3895)] 优化解码异常 - [[#3212](https://github.com/seata/seata/pull/3212)] 优化解析OrderBy,Limit条件代码结构 - [[#3898](https://github.com/seata/seata/pull/3898)] 增加docker maven 插件 - [[#3904](https://github.com/seata/seata/pull/3904)] 增强 metrics 和修复 seata-server 单测不运行的问题 - [[#3905](https://github.com/seata/seata/pull/3905)] 优化 nacos-config.sh 支持 ash - [[#3935](https://github.com/seata/seata/pull/3935)] 优化以redis为注册中心时,发送多条命令使用pipeline - [[#3916](https://github.com/seata/seata/pull/3916)] 优化注册中心服务节点列表地址探活 - [[#3918](https://github.com/seata/seata/pull/3918)] 缓存Field和Method的反射结果 - [[#3311](https://github.com/seata/seata/pull/3311)] 支持从consul单一key中读取所有配置 - [[#3907](https://github.com/seata/seata/pull/3907)] 优化设置 Server 端口 - [[#3912](https://github.com/seata/seata/pull/3912)] 支持通过env配置JVM参数 - [[#3939](https://github.com/seata/seata/pull/3939)] 使用map优化大量的判断代码 - [[#3955](https://github.com/seata/seata/pull/3955)] 添加启动banner - [[#4266](https://github.com/seata/seata/pull/4266)] 修改由于修改记录过多导致分支注册及lock释放失败的问题 - [[#3949](https://github.com/seata/seata/pull/3949)] `nacos-config.py` 支持默认参数和选择性输入参数 - [[#3954](https://github.com/seata/seata/pull/3954)] 移除对druid依赖中过期方法的调用 - [[#3981](https://github.com/seata/seata/pull/3981)] 优化服务端口的优先级设置 - [[#4013](https://github.com/seata/seata/pull/4013)] 优化可用TC地址检测 - [[#3982](https://github.com/seata/seata/pull/3982)] 优化 readme 文档和升级POM依赖 - [[#3991](https://github.com/seata/seata/pull/3991)] 关闭spring boot下无用的fileListener - [[#3994](https://github.com/seata/seata/pull/3994)] 优化`tcc_fence_log`表定时删除任务的机制 - [[#3327](https://github.com/seata/seata/pull/3327)] 支持从etcd3单一key中读取所有配置 - [[#4001](https://github.com/seata/seata/pull/4001)] 支持从Nacos,Zookeeper,Consul,Etcd3 中读取 yml - [[#4017](https://github.com/seata/seata/pull/4017)] 优化文件配置 - [[#4018](https://github.com/seata/seata/pull/4018)] 优化 Apollo 配置 - [[#4021](https://github.com/seata/seata/pull/4021)] 优化 Nacos、Consul、Zookeeper、Etcd3 配置 - [[#4034](https://github.com/seata/seata/pull/4034)] 优化“优化 Nacos、Consul、Zookeeper、Etcd3 配置(#4019)”的单元测试类 - [[#4055](https://github.com/seata/seata/pull/4055)] 优化NetUtil的getLocalAddress0方法 - [[#4086](https://github.com/seata/seata/pull/4086)] 分支事务支持懒加载并优化任务调度 - [[#4056](https://github.com/seata/seata/pull/4056)] 优化 DurationUtil - [[#4103](https://github.com/seata/seata/pull/4103)] 减少分支事务注册无需竞争锁时的内存占用 - [[#3733](https://github.com/seata/seata/pull/3733)] 优化本地事务下的锁竞争机制 - [[#4144](https://github.com/seata/seata/pull/4144)] 支持默认的事务分组配置 - [[#4157](https://github.com/seata/seata/pull/4157)] 优化客户端批量发送请求 - [[#4191](https://github.com/seata/seata/pull/4191)] RPC请求超时时间支持配置化 - [[#4216](https://github.com/seata/seata/pull/4216)] 非AT模式无须清理undolog表 - [[#4176](https://github.com/seata/seata/pull/4176)] 优化redis注册中心存储,改用自动过期key替代hash. - [[#4196](https://github.com/seata/seata/pull/4196)] TC 批量响应客户端 - [[#4212](https://github.com/seata/seata/pull/4212)] 控制台接口合并优化 - [[#4237](https://github.com/seata/seata/pull/4237)] 当所有的before image均为空的时候,跳过checkLock的步骤 - [[#4251](https://github.com/seata/seata/pull/4251)] 优化部分代码处理 - [[#4262](https://github.com/seata/seata/pull/4262)] 优化 tcc 模块代码处理 - [[#4235](https://github.com/seata/seata/pull/4235)] 优化eureka注册中心保存实例信息 - [[#4277](https://github.com/seata/seata/pull/4277)] 优化Redis-pipeline模式本地事务下的锁竞争机制 - [[#4284](https://github.com/seata/seata/pull/4284)] 支持MSE-Nacos 的 ak/sk 鉴权方式 - [[#4299](https://github.com/seata/seata/pull/4299)] 优化异常提示 - [[#4300](https://github.com/seata/seata/pull/4300)] 优化NettyRemotingServer的close()由DefaultCoordinator来调用,不再额外注册到ServerRunner - [[#4270](https://github.com/seata/seata/pull/4270)] 提高全局提交和全局回滚的性能,分支事务清理异步化 - [[#4307](https://github.com/seata/seata/pull/4307)] 优化在TCC模式减少不必要的全局锁删除 - [[#4303](https://github.com/seata/seata/pull/4303)] `tcc_fence_log`表悬挂日志记录异步删除 - [[#4328](https://github.com/seata/seata/pull/4328)] 配置上传脚本支持注释 - [[#4305](https://github.com/seata/seata/pull/4305)] 优化tc端全局锁获取失败时的日志打印 - [[#4336](https://github.com/seata/seata/pull/4336)] 添加AT模式不支持的SQL语句异常提示 - [[#4359](https://github.com/seata/seata/pull/4359)] 支持配置元数据读取环境变量 - [[#4353](https://github.com/seata/seata/pull/4353)] 为 `seata-all.jar` 瘦身。 - [[#4393](https://github.com/seata/seata/pull/4393)] redis & db 模式下启动不需要reload - [[#4247](https://github.com/seata/seata/pull/4247)] 在`github/actions`上,添加基于 `java17` 和 `springboot` 各版本的测试 - [[#4400](https://github.com/seata/seata/pull/4400)] 异步二阶段任务支持并行处理提升效率 - [[#4391](https://github.com/seata/seata/pull/4391)] commit/rollback 重试超时事件 - [[#4409](https://github.com/seata/seata/pull/4409)] 测试类添加版权标题 - [[#4282](https://github.com/seata/seata/pull/4282)] 优化回滚镜像构建逻辑 - [[#4407](https://github.com/seata/seata/pull/4407)] file模式下无需延迟删除globasession - [[#4436](https://github.com/seata/seata/pull/4436)] 优化file模式下的global session查询接口 - [[#4431](https://github.com/seata/seata/pull/4431)] 优化redis模式查询globalSession限制查询条数 - [[#4465](https://github.com/seata/seata/pull/4465)] 优化TC 批量响应客户端模式客户端版本传输方式 - [[#4469](https://github.com/seata/seata/pull/4469)] 优化控制台db模式下获取配置的方式 - [[#4478](https://github.com/seata/seata/pull/4478)] 优化 Nacos 配置和注册元数据属性 - [[#4522](https://github.com/seata/seata/pull/4522)] 优化 GC 参数 - [[#4517](https://github.com/seata/seata/pull/4517)] 增强失败/超时状态的监控 - [[#4451](https://github.com/seata/seata/pull/4451)] filesessionmanager改为单例并优化任务线程池处理 - [[#4551](https://github.com/seata/seata/pull/4551)] 优化 metrics rt 统计问题 - [[#4574](https://github.com/seata/seata/pull/4574)] 支持 accessKey/secretKey 配置自动注入 - [[#4583](https://github.com/seata/seata/pull/4583)] DefaultAuthSigner的默认签名加密方法替换为HmacSHA256 - [[#4591](https://github.com/seata/seata/pull/4591)] 优化开关默认值 - [[#3780](https://github.com/seata/seata/pull/3780)] 升级 Druid 版本 - [[#3797](https://github.com/seata/seata/pull/3797)] 支持在`Try` 方法外,由用户自己实例化`BusinessActionContext`,再以`Try`方法入参的形式传入 - [[#3909](https://github.com/seata/seata/pull/3909)] 优化`collectRowLocks` 方法 - [[#3763](https://github.com/seata/seata/pull/3763)] 优化 github actions - [[#4345](https://github.com/seata/seata/pull/4345)] 修正包目录名 - [[#4346](https://github.com/seata/seata/pull/4346)] 优化服务器日志并移除lombok - [[#4348](https://github.com/seata/seata/pull/4348)] 统一管理maven插件及其版本 - [[#4354](https://github.com/seata/seata/pull/4354)] 优化saga测试用例 - [[#4227](https://github.com/seata/seata/pull/4227)] 统一管理依赖的版本,并且升级spring-boot到2.4.13 - [[#4403](https://github.com/seata/seata/pull/4403)] 禁用saga单测 - [[#4453](https://github.com/seata/seata/pull/4453)] 升级 eureka-clients 和 xstream 的版本 - [[#4481](https://github.com/seata/seata/pull/4481)] 优化nacos配置和命名属性 - [[#4477](https://github.com/seata/seata/pull/4477)] 优化调试级别日志并修复拼写错误 - [[#4484](https://github.com/seata/seata/pull/4484)] 优化TM/RM注册时TC的日志打印 - [[#3874](https://github.com/seata/seata/pull/4484)] 增加登记企业,修改图片至alicdn - [[#4458](https://github.com/seata/seata/pull/4458)] 修复 metrices 模块 README.md 的配置遗漏问题 - [[#4482](https://github.com/seata/seata/pull/4482)] 移除重复单词 ### test: 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [wangliang181230](https://github.com/wangliang181230) - [a364176773](https://github.com/a364176773) - [lvekee](https://github.com/lvekee) - [caohdgege](https://github.com/caohdgege) - [lightClouds917](https://github.com/lightClouds917) - [objcoding](https://github.com/objcoding) - [siyu](https://github.com/Pinocchio2018) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [pengten](https://github.com/pengten) - [Bughue](https://github.com/Bughue) - [doubleDimple](https://github.com/doubleDimple) - [zhaoyuguang](https://github.com/zhaoyuguang) - [liuqiufeng](https://github.com/liuqiufeng) - [jsbxyyx](https://github.com/jsbxyyx) - [lcmvs](https://github.com/lcmvs) - [onlinechild](https://github.com/onlinechild) - [xjlgod](https://github.com/xjlgod) - [h-zhi](https://github.com/h-zhi) - [tanzzj](https://github.com/tanzzj) - [miaoxueyu](https://github.com/miaoxueyu) - [selfishlover](https://github.com/selfishlover) - [tuwenlin](https://github.com/tuwenlin) - [dmego](https://github.com/dmego) - [xiaochangbai](https://github.com/xiaochangbai) - [Rubbernecker](https://github.com/Rubbernecker) - [ruanun](https://github.com/ruanun) - [huan415](https://github.com/huan415) - [drgnchan](https://github.com/drgnchan) - [cmonkey](https://github.com/cmonkey) - [13414850431](https://github.com/13414850431) - [ls9527](https://github.com/ls9527) - [xingfudeshi](https://github.com/xingfudeshi) - [spilledyear](https://github.com/spilledyear) - [kaka2code](https://github.com/kaka2code) - [iqinning](https://github.com/iqinning) - [yujianfei1986](https://github.com/yujianfei1986) - [elrond-g](https://github.com/elrond-g) - [jameslcj](https://github.com/jameslcj) - [zhouchuhang](https://github.com/zch0214) - [xujj](https://github.com/XBNGit) - [mengxzh](https://github.com/mengxzh) - [portman](https://github.com/iportman) - [anselleeyy](https://github.com/anselleeyy) - [wangyuewen](https://github.com/2858917634) - [imherewait](https://github.com/imherewait) - [wfnuser](https://github.com/wfnuser) - [zhixing](https://github.com/chenlei3641) 同时,我们收到了社区反馈的很多有价值的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
================================================ FILE: changes/zh-cn/1.5.2.md ================================================ ### 1.5.2 [source](https://github.com/seata/seata/archive/v1.5.2.zip) | [binary](https://github.com/seata/seata/releases/download/v1.5.2/seata-server-1.5.2.zip)
Release notes ### Seata 1.5.2 Seata 1.5.2 发布。 Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 此版本更新如下: ### feature: - [[#4661](https://github.com/seata/seata/pull/4713)] 支持根据xid负载均衡算法 - [[#4676](https://github.com/seata/seata/pull/4676)] 支持Nacos作为注册中心时,server通过挂载SLB暴露服务 - [[#4642](https://github.com/seata/seata/pull/4642)] 支持client批量请求并行处理 - [[#4567](https://github.com/seata/seata/pull/4567)] 支持where条件中find_in_set函数 ### bugfix: - [[#4515](https://github.com/seata/seata/pull/4515)] 修复develop分支SeataTCCFenceAutoConfiguration在客户端未使用DB时,启动抛出ClassNotFoundException的问题。 - [[#4661](https://github.com/seata/seata/pull/4661)] 修复控制台中使用PostgreSQL出现的SQL异常 - [[#4667](https://github.com/seata/seata/pull/4682)] 修复develop分支RedisTransactionStoreManager迭代时更新map的异常 - [[#4678](https://github.com/seata/seata/pull/4678)] 修复属性transport.enableRmClientBatchSendRequest没有配置的情况下缓存穿透的问题 - [[#4701](https://github.com/seata/seata/pull/4701)] 修复命令行参数丢失问题 - [[#4607](https://github.com/seata/seata/pull/4607)] 修复跳过全局锁校验的缺陷 - [[#4696](https://github.com/seata/seata/pull/4696)] 修复 oracle 存储模式时的插入问题 - [[#4726](https://github.com/seata/seata/pull/4726)] 修复批量发送消息时可能的NPE问题 - [[#4729](https://github.com/seata/seata/pull/4729)] 修复AspectTransactional.rollbackForClassName设置错误 - [[#4653](https://github.com/seata/seata/pull/4653)] 修复 INSERT_ON_DUPLICATE 主键为非数值异常 ### optimize: - [[#4650](https://github.com/seata/seata/pull/4650)] 修复安全漏洞 - [[#4670](https://github.com/seata/seata/pull/4670)] 优化branchResultMessageExecutor线程池的线程数 - [[#4662](https://github.com/seata/seata/pull/4662)] 优化回滚事务监控指标 - [[#4693](https://github.com/seata/seata/pull/4693)] 优化控制台导航栏 - [[#4700](https://github.com/seata/seata/pull/4700)] 修复 maven-compiler-plugin 和 maven-resources-plugin 执行失败 - [[#4711](https://github.com/seata/seata/pull/4711)] 分离部署时 lib 依赖 - [[#4720](https://github.com/seata/seata/pull/4720)] 优化pom描述 - [[#4728](https://github.com/seata/seata/pull/4728)] 将logback版本依赖升级至1.2.9 - [[#4745](https://github.com/seata/seata/pull/4745)] 发行包中支持 mysql8 driver - [[#4626](https://github.com/seata/seata/pull/4626)] 使用 `easyj-maven-plugin` 插件代替 `flatten-maven-plugin`插件,以修复`shade` 插件与 `flatten` 插件不兼容的问题 - [[#4629](https://github.com/seata/seata/pull/4629)] 更新globalSession状态时检查更改前后的约束关系 - [[#4662](https://github.com/seata/seata/pull/4662)] 优化 EnhancedServiceLoader 可读性 - [[#4445](https://github.com/seata/seata/pull/4445)] 优化事务超时判断 - [[#4958](https://github.com/seata/seata/pull/4958)] 优化当本地事务超时回滚后after commit事件被调用 ### test: - [[#4544](https://github.com/seata/seata/pull/4544)] 优化TransactionContextFilterTest中jackson包依赖问题 - [[#4731](https://github.com/seata/seata/pull/4731)] 修复 AsyncWorkerTest 和 LockManagerTest 的单测问题。 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [pengten](https://github.com/pengten) - [YSF-A](https://github.com/YSF-A) - [tuwenlin](https://github.com/tuwenlin) - [2129zxl](https://github.com/2129zxl) - [Ifdevil](https://github.com/Ifdevil) - [wingchi-leung](https://github.com/wingchi-leung) - [liurong](https://github.com/robynron) - [opelok-z](https://github.com/opelok-z) - [a364176773](https://github.com/a364176773) - [Smery-lxm](https://github.com/Smery-lxm) - [lvekee](https://github.com/lvekee) - [doubleDimple](https://github.com/doubleDimple) - [wangliang181230](https://github.com/wangliang181230) - [Bughue](https://github.com/Bughue) - [AYue-94](https://github.com/AYue-94) - [lingxiao-wu](https://github.com/lingxiao-wu) - [caohdgege](https://github.com/caohdgege) - [miaoxueyu](https://github.com/miaoxueyu) 同时,我们收到了社区反馈的很多有价值的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
================================================ FILE: changes/zh-cn/1.6.0.md ================================================ ### 1.6.0 [source](https://github.com/seata/seata/archive/v1.6.0.zip) | [binary](https://github.com/seata/seata/releases/download/v1.6.0/seata-server-1.6.0.zip)
Release notes ### Seata 1.6.0 Seata 1.6.0 发布。 Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 此版本更新如下: ### feature: - [[#4863](https://github.com/seata/seata/pull/4863)] 支持 oracle 和 postgresql 多主键 - [[#4649](https://github.com/seata/seata/pull/4649)] seata-server支持多注册中心 - [[#4779](https://github.com/seata/seata/pull/4779)] 支持 Apache Dubbo3 - [[#4479](https://github.com/seata/seata/pull/4479)] TCC注解支持添加在接口和实现类上 - [[#4877](https://github.com/seata/seata/pull/4877)] client sdk 支持jdk17 - [[#4914](https://github.com/seata/seata/pull/4914)] 支持 mysql 的update join联表更新语法 - [[#4542](https://github.com/seata/seata/pull/4542)] 支持 oracle timestamp 类型 - [[#5111](https://github.com/seata/seata/pull/5111)] 支持Nacos contextPath 配置 - [[#4802](https://github.com/seata/seata/pull/4802)] dockerfile 支持 arm64 ### bugfix: - [[#4780](https://github.com/seata/seata/pull/4780)] 修复超时回滚成功后无法发送TimeoutRollbacked事件 - [[#4954](https://github.com/seata/seata/pull/4954)] 修复output表达式错误时,保存执行结果空指针异常 - [[#4817](https://github.com/seata/seata/pull/4817)] 修复高版本springboot配置不标准的问题 - [[#4838](https://github.com/seata/seata/pull/4838)] 修复使用 Statement.executeBatch() 时无法生成undo log 的问题 - [[#4533](https://github.com/seata/seata/pull/4533)] 修复handleRetryRollbacking的event重复导致的指标数据不准确 - [[#4912](https://github.com/seata/seata/pull/4912)] 修复mysql InsertOnDuplicateUpdate 列名大小写不一致无法正确匹配 - [[#4543](https://github.com/seata/seata/pull/4543)] 修复对 Oracle 数据类型nclob的支持 - [[#4915](https://github.com/seata/seata/pull/4915)] 修复获取不到ServerRecoveryProperties属性的问题 - [[#4919](https://github.com/seata/seata/pull/4919)] 修复XID的port和address出现null:0的情况 - [[#4928](https://github.com/seata/seata/pull/4928)] 修复 rpcContext.getClientRMHolderMap NPE 问题 - [[#4953](https://github.com/seata/seata/pull/4953)] 修复InsertOnDuplicateUpdate可绕过修改主键的问题 - [[#4978](https://github.com/seata/seata/pull/4978)] 修复 kryo 支持循环依赖 - [[#4985](https://github.com/seata/seata/pull/4985)] 修复 undo_log id重复的问题 - [[#4874](https://github.com/seata/seata/pull/4874)] 修复OpenJDK 11 启动失败 - [[#5018](https://github.com/seata/seata/pull/5018)] 修复启动脚本中 loader path 使用相对路径导致 server 启动失败问题 - [[#5004](https://github.com/seata/seata/pull/5004)] 修复mysql update join行数据重复的问题 - [[#5032](https://github.com/seata/seata/pull/5032)] 修复mysql InsertOnDuplicateUpdate中条件参数填充位置计算错误导致的镜像查询SQL语句异常问题 - [[#5033](https://github.com/seata/seata/pull/5033)] 修复InsertOnDuplicateUpdate的SQL语句中无插入列字段导致的空指针问题 - [[#5038](https://github.com/seata/seata/pull/5038)] 修复SagaAsyncThreadPoolProperties冲突问题 - [[#5050](https://github.com/seata/seata/pull/5050)] 修复Saga模式下全局状态未正确更改成Committed问题 - [[#5052](https://github.com/seata/seata/pull/5052)] 修复update join条件中占位符参数问题 - [[#5031](https://github.com/seata/seata/pull/5031)] 修复InsertOnDuplicateUpdate中不应该使用null值索引作为查询条件 - [[#5075](https://github.com/seata/seata/pull/5075)] 修复InsertOnDuplicateUpdate无法拦截无主键和唯一索引的SQL - [[#5093](https://github.com/seata/seata/pull/5093)] 修复seata server重启后accessKey丢失问题 - [[#5092](https://github.com/seata/seata/pull/5092)] 修复当seata and jpa共同使用时, AutoConfiguration的顺序不正确的问题 - [[#5109](https://github.com/seata/seata/pull/5109)] 修复当RM侧没有加@GlobalTransactional报NPE的问题 - [[#5098](https://github.com/seata/seata/pull/5098)] Druid 禁用 oracle implicit cache - [[#4860](https://github.com/seata/seata/pull/4860)] 修复metrics tag覆盖问题 - [[#5028](https://github.com/seata/seata/pull/5028)] 修复 insert on duplicate SQL中 null 值问题 - [[#5078](https://github.com/seata/seata/pull/5078)] 修复SQL语句中无主键和唯一键拦截问题 - [[#5097](https://github.com/seata/seata/pull/5097)] 修复当Server重启时 accessKey 丢失问题 - [[#5131](https://github.com/seata/seata/pull/5131)] 修复XAConn处于active状态时无法回滚的问题 - [[#5134](https://github.com/seata/seata/pull/5134)] 修复hikariDataSource 自动代理在某些情况下失效的问题 - [[#5163](https://github.com/seata/seata/pull/5163)] 修复高版本JDK编译失败的问题 ### 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)] 添加自动发布 OSSRH github action - [[#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)] 添加 NOTICE 文件 - [[#4761](https://github.com/seata/seata/pull/4761)] 使用 hget 代替 RedisLocker 中的 hmget - [[#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 fence记录查不到时的错误提示 - [[#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的依赖 - [[#5124](https://github.com/seata/seata/pull/5124)] 支持oracle删除TCC fence记录表 - [[#4468](https://github.com/seata/seata/pull/4968)] 支持kryo 5.3.0 - [[#4807](https://github.com/seata/seata/pull/4807)] 优化镜像和OSS仓库发布流水线 - [[#4445](https://github.com/seata/seata/pull/4445)] 优化事务超时判断 - [[#4958](https://github.com/seata/seata/pull/4958)] 优化超时事务 triggerAfterCommit() 的执行 - [[#4582](https://github.com/seata/seata/pull/4582)] 优化redis存储模式的事务排序 - [[#4963](https://github.com/seata/seata/pull/4963)] 增加 ARM64 流水线 CI 测试 - [[#4434](https://github.com/seata/seata/pull/4434)] 移除 seata-server CMS GC 参数 ### 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()` 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [renliangyu857](https://github.com/renliangyu857) - [wangliang181230](https://github.com/wangliang181230) - [a364176773](https://github.com/a364176773) - [tuwenlin](https://github.com/tuwenlin) - [lcmvs](https://github.com/lcmvs) - [AlexStocks](https://github.com/AlexStocks) - [liujunlin5168](https://github.com/liujunlin5168) - [pengten](https://github.com/pengten) - [YSF-A](https://github.com/YSF-A) - [doubleDimple](https://github.com/doubleDimple) - [liuqiufeng](https://github.com/liuqiufeng) - [yujianfei1986](https://github.com/yujianfei1986) - [Bughue](https://github.com/Bughue) - [AlbumenJ](https://github.com/AlbumenJ) - [jsbxyyx](https://github.com/jsbxyyx) - [tuwenlin](https://github.com/tuwenlin) - [CrazyLionLi](https://github.com/JavaLionLi) - [whxxxxx](https://github.com/whxxxxx) - [neillee95](https://github.com/neillee95) - [crazy-sheep](https://github.com/crazy-sheep) - [zhangzq7](https://github.com/zhangzq7) - [l81893521](https://github.com/l81893521) - [zhuyoufeng](https://github.com/zhuyoufeng) - [xingfudeshi](https://github.com/xingfudeshi) - [odidev](https://github.com/odidev) - [miaoxueyu](https://github.com/miaoxueyu) 同时,我们收到了社区反馈的很多有价值的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
================================================ FILE: changes/zh-cn/1.6.1.md ================================================ ### 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
================================================ FILE: changes/zh-cn/1.7.0.md ================================================ ### 1.7.0 [source](https://github.com/seata/seata/archive/v1.7.0.zip) | [binary](https://github.com/seata/seata/releases/download/v1.7.0/seata-server-1.7.0.zip)
Release notes ### Seata 1.7.0 Seata 1.6.1 发布。 Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 此版本更新如下: ### feature: - [[#5476](https://github.com/seata/seata/pull/5476)] seata客户端,首次支持 `native-image` - [[#5495](https://github.com/seata/seata/pull/5495)] 控制台集成Saga状态机设计器 - [[#5668](https://github.com/seata/seata/pull/5668)] 兼容1.4.2及以下版本的file.conf/registry.conf配置 ### bugfix: - [[#5682](https://github.com/seata/seata/pull/5682)] 修复saga模式下replay context丢失startParams问题 - [[#5671](https://github.com/seata/seata/pull/5671)] 修复saga模式下serviceTask入参autoType转化失败问题 - [[#5194](https://github.com/seata/seata/pull/5194)] 修复使用Oracle作为服务端DB存储时的建表失败问题 - [[#5021](https://github.com/seata/seata/pull/5201)] 修复 JDK17 下获取 Spring 原始代理对象失败的问题 - [[#5023](https://github.com/seata/seata/pull/5203)] 修复 `seata-core` 模块传递依赖冲突 - [[#5224](https://github.com/seata/seata/pull/5224)] 修复 oracle初始化脚本索引名重复的问题 - [[#5233](https://github.com/seata/seata/pull/5233)] 修复LoadBalance相关配置不一致的问题 - [[#5266](https://github.com/seata/seata/pull/5265)] 修复控制台全局锁查询接口查到了已释放的锁 - [[#5245](https://github.com/seata/seata/pull/5245)] 修复不完整的distribution模块依赖 - [[#5239](https://github.com/seata/seata/pull/5239)] 修复当使用JDK代理时,`getConfig` 方法获取部分配置时抛出 `ClassCastException` 异常的问题 - [[#5281](https://github.com/seata/seata/pull/5281)] 修复并行rm请求处理时数组索引越界问题 - [[#5288](https://github.com/seata/seata/pull/5288)] 修复AT模式下oracle的主键列自增的问题 - [[#5287](https://github.com/seata/seata/pull/5287)] 修复AT模式下pgsql的主键列自增的问题 - [[#5299](https://github.com/seata/seata/pull/5299)] 修复TC端重试回滚或重试提交超时GlobalSession的删除问题 - [[#5307](https://github.com/seata/seata/pull/5307)] 修复生成update前后镜像sql不对关键字转义的bug - [[#5311](https://github.com/seata/seata/pull/5311)] 移除基于文件存储恢复时的RollbackRetryTimeout事务 - [[#4734](https://github.com/seata/seata/pull/4734)] 修复AT模式下新增字段产生的字段找不到 - [[#5316](https://github.com/seata/seata/pull/5316)] 修复jdk8 中 G1 参数 - [[#5321](https://github.com/seata/seata/pull/5321)] 修复当TC端回滚返回RollbackFailed时,自定义FailureHandler的方法未执行 - [[#5332](https://github.com/seata/seata/pull/5332)] 修复单元测试中发现的bug - [[#5145](https://github.com/seata/seata/pull/5145)] 修复saga模式全局事务状态始终为Begin的问题 - [[#5413](https://github.com/seata/seata/pull/5413)] 修复 arm64平台下的JDK和Spring兼容问题 - [[#5415](https://github.com/seata/seata/pull/5415)] 修复客户侧事务提交前超时未执行hook和failureHandler的问题 - [[#5447](https://github.com/seata/seata/pull/5447)] fix oracle xa mode cannnot be used By same database - [[#5472](https://github.com/seata/seata/pull/5472)] 在RM中使用`@GlobalTransactional`时,如果RM执行失败会抛出`ShouldNeverHappenException` - [[#5535](https://github.com/seata/seata/pull/5535)] 修复读取logback文件路径错误的问题 - [[#5538](https://github.com/seata/seata/pull/5538)] 修复提交事务时事务已完成不抛出异常问题 - [[#5539](https://github.com/seata/seata/pull/5539)] 修复Oracle 10g where条件包含setDate全表扫描问题 - [[#5540](https://github.com/seata/seata/pull/5540)] 修复 GlobalStatus=9 在DB存储模式无法清除的问题 - [[#5552](https://github.com/seata/seata/pull/5552)] 修复mariadb回滚失败的问题 - [[#5583](https://github.com/seata/seata/pull/5583)] 修复grpc xid 解绑问题 - [[#5602](https://github.com/seata/seata/pull/5602)] 修复participant情况下的重复日志 - [[#5645](https://github.com/seata/seata/pull/5645)] 修复 oracle 插入 undolog 失败问题 - [[#5659](https://github.com/seata/seata/pull/5659)] 修复后镜像查询时增加关键字转义符导致数据库强制开启大小写校验引起的sql异常 - [[#5663](https://github.com/seata/seata/pull/5663)] 修复connectionProxyXA连接复用时timeout为null - [[#5675](https://github.com/seata/seata/pull/5675)] 修复 xxx.grouplist 和 grouplist.xxx 配置项兼容问题 - [[#5690](https://github.com/seata/seata/pull/5690)] 修复控制台打印 `unauthorized error` 问题 - [[#5711](https://github.com/seata/seata/pull/5711)] 修复取中划线配置项错误问题 ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 - [[#5212](https://github.com/seata/seata/pull/5212)] 优化不合理的日志信息级别 - [[#5237](https://github.com/seata/seata/pull/5237)] 优化异常日志打印(EnhancedServiceLoader.loadFile#cahtch) - [[#5089](https://github.com/seata/seata/pull/5089)] 优化 TCC fence log 清理定时任务的 delay 参数值检查 - [[#5243](https://github.com/seata/seata/pull/5243)] 升级 kryo 5.4.0 优化对jdk17的兼容性 - [[#5153](https://github.com/seata/seata/pull/5153)] 只允许AT去尝试跨RM获取channel - [[#5177](https://github.com/seata/seata/pull/5177)] 如果 `server.session.enable-branch-async-remove` 为真,异步删除分支,同步解锁。 - [[#5273](https://github.com/seata/seata/pull/5273)] 优化`protobuf-maven-plugin`插件的编译配置,解决高版本的命令行过长问题 - [[#5303](https://github.com/seata/seata/pull/5303)] 移除启动脚本的-Xmn参数 - [[#5325](https://github.com/seata/seata/pull/5325)] 添加配置中心、注册中心类型以及存储模式日志信息 - [[#5315](https://github.com/seata/seata/pull/5315)] 优化SPI加载日志 - [[#5323](https://github.com/seata/seata/pull/5323)] 为全局事务超时日志添加时间信息 - [[#5414](https://github.com/seata/seata/pull/5414)] 优化事务失败处理 handler - [[#5537](https://github.com/seata/seata/pull/5537)] 优化客户侧事务日志 - [[#5541](https://github.com/seata/seata/pull/5541)] 优化Server日志输出 - [[#5548](https://github.com/seata/seata/pull/5548)] 优化 gpg key 和 发布流水线 - [[#5638](https://github.com/seata/seata/pull/5638)] 优化server端事务隔离级别为读已提交 - [[#5646](https://github.com/seata/seata/pull/5646)] 重构 ColumnUtils 和 EscapeHandler - [[#5648](https://github.com/seata/seata/pull/5648)] 优化Server日志输出 - [[#5647](https://github.com/seata/seata/pull/5647)] 支持表和列元数据大小写敏感设置 - [[#5678](https://github.com/seata/seata/pull/5678)] 优化大小写转义符 - [[#5684](https://github.com/seata/seata/pull/5684)] 优化 CodeQL, skywalking-eyes 和 checkout 等 actions - [[#5700](https://github.com/seata/seata/pull/5700)] 优化分布式锁竞争日志 ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本 - [[#5683](https://github.com/seata/seata/pull/5683)] 增加Hessian 序列化黑白名单 - [[#5696](https://github.com/seata/seata/pull/5696)] 修复若干Node.js依赖安全漏洞 ### test: - [[#5380](https://github.com/seata/seata/pull/5380)] 修复 UpdateExecutorTest 单测失败问题 - [[#5382](https://github.com/seata/seata/pull/5382)] 修复多Spring版本测试失败 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [xssdpgy](https://github.com/xssdpgy) - [albumenj](https://github.com/albumenj) - [PeppaO](https://github.com/PeppaO) - [yuruixin](https://github.com/yuruixin) - [dmego](https://github.com/dmego) - [CrazyLionLi](https://github.com/JavaLionLi) - [xingfudeshi](https://github.com/xingfudeshi) - [Bughue](https://github.com/Bughue) - [pengten](https://github.com/pengten) - [wangliang181230](https://github.com/wangliang181230) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [funky-eyes](https://github.com/funky-eyes) - [isharpever](https://github.com/isharpever) - [ZhangShiYeChina](https://github.com/ZhangShiYeChina) - [mxsm](https://github.com/mxsm) - [l81893521](https://github.com/l81893521) - [liuqiufeng](https://github.com/liuqiufeng) - [yixia](https://github.com/wt-better) - [jumtp](https://github.com/jumtp) 同时,我们收到了社区反馈的很多有价值的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
================================================ FILE: changes/zh-cn/1.7.1.md ================================================ 所有提交到 develop 分支的 PR 请在此处登记。 ### feature: - [[#5803](https://github.com/seata/seata/pull/5803)] docker镜像支持注入JVM参数到容器 ### bugfix: - [[#5749](https://github.com/seata/seata/pull/5749)] 修复在某些情况下,业务sql中主键字段名大小写与表元数据中的不一致,导致回滚失败 - [[#5762](https://github.com/seata/seata/pull/5762)] 修复TableMetaCache的一些字段类型,避免溢出 - [[#5769](https://github.com/seata/seata/pull/5769)] 修复不满足 sofa-rpc 中 setAttachment 方法的参数前缀要求问题 - [[#5814](https://github.com/seata/seata/pull/5814)] 修复druid依赖冲突导致的XA事务开始异常与回滚失败 - [[#5771](https://github.com/seata/seata/pull/5771)] 修复insert executor对关键字未转义的问题 - [[#5819](https://github.com/seata/seata/pull/5814)] 修复oracle alias 解析异常 ### optimize: - [[#5804](https://github.com/seata/seata/pull/5804)] 优化docker镜像的默认时区 - [[#5815](https://github.com/seata/seata/pull/5815)] 支持 Nacos applicationName 属性 - [[#5820](https://github.com/seata/seata/pull/5820)] 统一日志输出目录 - [[#5822](https://github.com/seata/seata/pull/5822)] 升级过时的github actions - [[#5168](https://github.com/seata/seata/pull/5168)] 发布基于多个java版本的docker镜像 ### security: - [[#5728](https://github.com/seata/seata/pull/5728)] 修复Java依赖漏洞 - [[#5766](https://github.com/seata/seata/pull/5766)] 修复序列化漏洞 ### test: - [[#XXX](https://github.com/seata/seata/pull/XXX)] XXX 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [capthua](https://github.com/capthua) - [robynron](https://github.com/robynron) - [dmego](https://github.com/dmego) - [xingfudeshi](https://github.com/xingfudeshi) - [hadoop835](https://github.com/hadoop835) - [funky-eyes](https://github.com/funky-eyes) - [DroidEye2ONGU](https://github.com/DroidEye2ONGU) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 ================================================ FILE: changes/zh-cn/1.8.0.md ================================================ ### 1.8.0 [source](https://github.com/seata/seata/archive/v1.8.0.zip) | [binary](https://github.com/seata/seata/releases/download/v1.8.0/seata-server-1.8.0.zip)
Release notes ### Seata 1.8.0 Seata 1.8.0 发布。 Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 此版本更新如下: ### feature: - [[#3672](https://github.com/seata/seata/pull/3672)] AT模式支持Dameng数据库 - [[#5892](https://github.com/seata/seata/pull/5892)] AT模式支持PolarDB-X 2.0数据库 ### bugfix: - [[#5833](https://github.com/seata/seata/pull/5833)] 修复 XA 事务失败回滚后,TC 继续重试回滚的问题 - [[#5884](https://github.com/seata/seata/pull/5884)] 修复达梦前后镜像查询列名都加了引号导致sql异常的问题 - [[#5931](https://github.com/seata/seata/pull/5931)] 修复存储redis哨兵模式下哨兵密码缺失的问题 - [[#5970](https://github.com/seata/seata/pull/5970)] 修复某些未弃用的配置显示"已弃用" ### optimize: - [[#5866](https://github.com/seata/seata/pull/5866)] 一些小的语法优化 - [[#5889](https://github.com/seata/seata/pull/5889)] 移除无license组件 - [[#5890](https://github.com/seata/seata/pull/5890)] 移除7z压缩支持 - [[#5891](https://github.com/seata/seata/pull/5891)] 移除 mariadb.jdbc 依赖 - [[#5828](https://github.com/seata/seata/pull/5828)] 修正 `codecov chart` 不展示的问题 - [[#5927](https://github.com/seata/seata/pull/5927)] 优化一些与 Apollo 相关的脚本 - [[#5918](https://github.com/seata/seata/pull/5918)] 修正codecov.yml不标准属性 - [[#5939](https://github.com/seata/seata/pull/5939)] 支持 jmx 监控配置 ### security: - [[#5867](https://github.com/seata/seata/pull/5867)] 修复npm package漏洞 - [[#5898](https://github.com/seata/seata/pull/5898)] 修复npm package漏洞 ### test: - [[#5888](https://github.com/seata/seata/pull/5888)] 移除 sofa 测试用例 - [[#5831](https://github.com/seata/seata/pull/5831)] 升级 `druid` 版本,并添加 `test-druid.yml` 用于测试seata与druid各版本的兼容性。 - [[#5862](https://github.com/seata/seata/pull/5862)] 修复单元测试在Java21下无法正常运行的问题。 - [[#5914](https://github.com/seata/seata/pull/5914)] 升级 native-lib-loader 版本 - [[#5960](https://github.com/seata/seata/pull/5960)] 修复 zookeeper 单测失败问题 - [[#5981](https://github.com/seata/seata/pull/5981)] 固定 `seata-server` 所使用有 jedis 版本 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [capthua](https://github.com/capthua) - [funky-eyes](https://github.com/funky-eyes) - [iquanzhan](https://github.com/iquanzhan) - [leizhiyuan](https://github.com/leizhiyuan) - [l81893521](https://github.com/l81893521) - [PeppaO](https://github.com/PeppaO) - [wangliang181230](https://github.com/wangliang181230) - [hsien999](https://github.com/hsien999) 同时,我们收到了社区反馈的很多有价值的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
================================================ FILE: changes/zh-cn/2.0.0.md ================================================ ### 2.0.0 [source](https://github.com/seata/seata/archive/v2.0.0.zip) | [binary](https://github.com/seata/seata/releases/download/v2.0.0/seata-server-2.0.0.zip)
Release notes ### Seata 2.0.0 Seata 2.0.0 发布。 Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 此版本更新如下: ### feature: - [[#5165](https://github.com/seata/seata/pull/5165)] TCC结构拆分,支持API方式接入。增加集成层模块(seata-integration-tx-api),对事务流程定义以及代理部分增强。 - [[#5352](https://github.com/seata/seata/pull/5352)] 在TCC Business Action Context中集成jackson和gson序列化功能 - [[#5377](https://github.com/seata/seata/pull/5377)] 使AbstractHttpExecutor类支持PUT方式的请求 - [[#5396](https://github.com/seata/seata/pull/5396)] TC 异常日志指标采集 - [[#5118](https://github.com/seata/seata/pull/5118)] 支持二阶段并行下发执行 - [[#5529](https://github.com/seata/seata/pull/5529)] docker镜像支持注入JVM参数到容器 - [[#3887](https://github.com/seata/seata/pull/3887)] 增加AT模式的SQLServer数据库支持 - [[#4033](https://github.com/seata/seata/pull/4033)] 增加ServerDB存储模式的SQLServer支持 - [[#5717](https://github.com/seata/seata/pull/5717)] 兼容1.4.2及以下版本的file.conf/registry.conf配置 - [[#5842](https://github.com/seata/seata/pull/5842)] 构建docker 镜像时添加相关git信息,方便定位代码关系 - [[#5902](https://github.com/seata/seata/pull/5902)] 支持IPv6网络环境 - [[#5907](https://github.com/seata/seata/pull/5907)] 增加AT模式的PolarDB-X 2.0数据库支持 - [[#5932](https://github.com/seata/seata/pull/5932)] AT模式支持达梦数据库 - [[#5946](https://github.com/seata/seata/pull/5946)] 增加sqlserver对控制台分页接口的适配 - [[#5226](https://github.com/seata/seata/pull/5226)] 支持Raft集群部署和事务存储模式 ### bugfix: - [[#5677](https://github.com/seata/seata/pull/5677)] 修复saga模式下serviceTask入参autoType转化失败问题 - [[#5194](https://github.com/seata/seata/pull/5194)] 修复使用Oracle作为服务端DB存储时的建表失败问题 - [[#5021](https://github.com/seata/seata/pull/5201)] 修复 JDK17 下获取 Spring 原始代理对象失败的问题 - [[#5023](https://github.com/seata/seata/pull/5203)] 修复 `seata-core` 模块传递依赖冲突 - [[#5224](https://github.com/seata/seata/pull/5224)] 修复 oracle初始化脚本索引名重复的问题 - [[#5233](https://github.com/seata/seata/pull/5233)] 修复LoadBalance相关配置不一致的问题 - [[#5245](https://github.com/seata/seata/pull/5245)] 修复不完整的distribution模块依赖 - [[#5239](https://github.com/seata/seata/pull/5239)] 修复当使用JDK代理时,`getConfig` 方法获取部分配置时抛出 `ClassCastException` 异常的问题 - [[#5266](https://github.com/seata/seata/pull/5265)] 修复控制台全局锁查询接口查到了已释放的锁 - [[#5282](https://github.com/seata/seata/pull/5282)] 修复并行rm请求处理时数组索引越界问题 - [[#5294](https://github.com/seata/seata/pull/5294)] 修复AT模式下pgsql/oracle的主键列自增的问题 - [[#5298](https://github.com/seata/seata/pull/5298)] 事务提交或回滚超时不移除global session - [[#5304](https://github.com/seata/seata/pull/5304)] 移除基于文件存储恢复时的RollbackRetryTimeout事务 - [[#5310](https://github.com/seata/seata/pull/5310)] 修复生成update前后镜像sql不对关键字转义的bug - [[#5318](https://github.com/seata/seata/pull/5318)] 修复jdk8 中 G1 参数 - [[#5330](https://github.com/seata/seata/pull/5330)] 修复单元测试中发现的bug - [[#5337](https://github.com/seata/seata/pull/5337)] 修复feature#5165中关于spring使用环境下,多interceptor排序问题,同时修复order一致时无法使用BeforeTransaction(AfterTransaction)事务排序问题 - [[#5347](https://github.com/seata/seata/pull/5347)] 修复控制台打印 `unauthorized error` 问题 - [[#5355](https://github.com/seata/seata/pull/5355)] 修复自定义context-path时的问题 - [[#5362](https://github.com/seata/seata/pull/5362)] 修复当TC端回滚返回RollbackFailed时,自定义FailureHandler的方法未执行 - [[#5372](https://github.com/seata/seata/pull/5372)] 修复客户侧事务提交前超时未执行hook和failureHandler的问题 - [[#4734](https://github.com/seata/seata/pull/4734)] 修复AT模式下新增字段产生的字段找不到 - [[#5426](https://github.com/seata/seata/pull/5426)] 修复不能获取GlobalTransactional注解问题 - [[#5478](https://github.com/seata/seata/pull/5478)] 修复提交事务时事务已完成不抛出异常问题 - [[#5491](https://github.com/seata/seata/pull/5491)] 修复日志中不打印方法名的问题 - [[#5449](https://github.com/seata/seata/pull/5449)] 修复Oracle XA模式 start 重入问题 - [[#5531](https://github.com/seata/seata/pull/5531)] 修复读取logback文件路径错误的问题 - [[#5523](https://github.com/seata/seata/pull/5523)] 修复 GlobalStatus=9 在DB存储模式无法清除的问题 - [[#5558](https://github.com/seata/seata/pull/5558)] 修复mariadb回滚失败的问题 - [[#5556](https://github.com/seata/seata/pull/5556)] 修复 oracle 插入 undolog 失败问题 - [[#5579](https://github.com/seata/seata/pull/5579)] 修复 resourceId 为空时,获取 RM_CHANNELS 空指针问题 - [[#5577](https://github.com/seata/seata/pull/5577)] 修复 grpc拦截器解绑xid失败问题 - [[#5594](https://github.com/seata/seata/pull/5594)] 修复participant情况下的重复日志 - [[#5604](https://github.com/seata/seata/pull/5604)] 修复在DB模式下 `asyncCommit` 和 `queueToRetryCommit` 两个方法总是失败的问题 - [[#5661](https://github.com/seata/seata/pull/5661)] 修复connectionProxyXA连接复用时timeout为null - [[#5678](https://github.com/seata/seata/pull/5675)] 修复 xxx.grouplist 和 grouplist.xxx 配置项兼容问题 - [[#5715](https://github.com/seata/seata/pull/5715)] 修复取中划线配置项错误问题 - [[#5748](https://github.com/seata/seata/pull/5748)] 修复在某些情况下,业务sql中主键字段名大小写与表元数据中的不一致,导致回滚失败 - [[#5745](https://github.com/seata/seata/pull/5745)] 修复不满足 sofa-rpc 中 setAttachment 方法的参数前缀要求问题 - [[#5772](https://github.com/seata/seata/pull/5762)] 修复TableMetaCache的一些字段类型,避免溢出 - [[#5787](https://github.com/seata/seata/pull/5794)] 解决redis作为注册中心时cluster无法自定义的BUG - [[#5810](https://github.com/seata/seata/pull/5810)] 修复druid依赖冲突导致的XA事务开始异常与回滚失败 - [[#5821](https://github.com/seata/seata/pull/5821)] 修复insert executor对关键字未转义的问题 - [[#5835](https://github.com/seata/seata/pull/5835)] bugfix: 修复当 XA 事务失败回滚后,TC 还会继续重试回滚的问题 - [[#5881](https://github.com/seata/seata/pull/5880)] 修复事务回滚时锁未删除的问题 - [[#5930](https://github.com/seata/seata/pull/5930)] 修复存储为redis哨兵模式下哨兵密码缺失的问题 - [[#5958](https://github.com/seata/seata/pull/5958)] 在二阶段提交状态下发生重选时需要进行解除全局锁 - [[#5971](https://github.com/seata/seata/pull/5971)] 修复某些未弃用的配置显示"已弃用" - [[#5977](https://github.com/seata/seata/pull/5977)] 修复当raft server关闭时,rpc server未关闭的问题 - [[#5954](https://github.com/seata/seata/pull/5954)] 修复保存的分支会话状态与实际的分支会话状态不一致的问题 - [[#5990](https://github.com/seata/seata/pull/5990)] 修复redis sentinel master node 宕机时,lua脚本未同步的问题 - [[#5887](https://github.com/seata/seata/pull/5887)] 修复全局事务钩子重复执行 - [[#6018](https://github.com/seata/seata/pull/6018)] 修复错误的 metric 上报 - [[#6024](https://github.com/seata/seata/pull/6024)] 修复控制台点击事务信息页面中的"查看全局锁"按钮之后白屏的问题 - [[#6015](https://github.com/seata/seata/pull/6015)] 修复在spring环境下无法集成dubbo - [[#6049](https://github.com/seata/seata/pull/6049)] 修复客户端在raft注册中心类型下,网络中断时,watch线程未暂停一秒等待重试的问题 - [[#6050](https://github.com/seata/seata/pull/6050)] 修改 RaftServer#destroy 为等待所有关闭流程结束 ### optimize: - [[#6033](https://github.com/seata/seata/pull/6033)] 优化HSFRemotingParser中isReference判断逻辑,去掉关于FactoryBean的无用判断 - [[#5966](https://github.com/seata/seata/pull/5966)] Saga 表达式解耦并统一格式 - [[#5928](https://github.com/seata/seata/pull/5928)] 增加Saga模式状态机语义验证阶段 - [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 - [[#5212](https://github.com/seata/seata/pull/5212)] 优化不合理的日志信息级别 - [[#5237](https://github.com/seata/seata/pull/5237)] 优化异常日志打印(EnhancedServiceLoader.loadFile#cahtch) - [[#5243](https://github.com/seata/seata/pull/5243)] 升级 kryo 5.4.0 优化对jdk17的兼容性 - [[#5153](https://github.com/seata/seata/pull/5153)] 只允许AT去尝试跨RM获取channel - [[#5177](https://github.com/seata/seata/pull/5177)] 如果 `server.session.enable-branch-async-remove` 为真,异步删除分支,同步解锁。 - [[#4858](https://github.com/seata/seata/pull/4858)] 重构优化 SessionManager 用法 - [[#4881](https://github.com/seata/seata/pull/4881)] 重新划分 SessionManager和SessionLifecycleListener 用法 - [[#5273](https://github.com/seata/seata/pull/5273)] 优化`protobuf-maven-plugin`插件的编译配置,解决高版本的命令行过长问题 - [[#5278](https://github.com/seata/seata/pull/5278)] 清理sessionmanager多例模式遗留代码 - [[#5302](https://github.com/seata/seata/pull/5302)] 移除启动脚本的-Xmn参数 - [[#4880](https://github.com/seata/seata/pull/4880)] 优化提交和回滚遇到异常时的日志输出 - [[#5322](https://github.com/seata/seata/pull/5322)] 优化SPI加载日志 - [[#5323](https://github.com/seata/seata/pull/5323)] 为全局事务超时日志添加时间信息 - [[#5328](https://github.com/seata/seata/pull/5333)] 为全局事务和事务存储的Redis模式,增加对应的lua实现 - [[#5341](https://github.com/seata/seata/pull/5341)] 优化 gRPC TCC模式 - [[#5342](https://github.com/seata/seata/pull/5342)] 优化 TCC fence log 清理定时任务的 delay 参数值检查 - [[#5325](https://github.com/seata/seata/pull/5325)] 添加配置中心、注册中心类型以及存储模式日志信息 - [[#5351](https://github.com/seata/seata/pull/5351)] 优化 TCC 模式下的 RPC filter - [[#5354](https://github.com/seata/seata/pull/5354)] 重构 RPC 集成模块 - [[#5370](https://github.com/seata/seata/pull/5370)] 优化事务失败处理 handler - [[#5461](https://github.com/seata/seata/pull/5461)] 优化 license workflow - [[#5464](https://github.com/seata/seata/pull/5464)] 修复saga模式全局事务状态始终为Begin的问题 - [[#5456](https://github.com/seata/seata/pull/5456)] 重构 ColumnUtils 和 EscapeHandler - [[#5438](https://github.com/seata/seata/pull/5438)] 优化code style检测属性 - [[#5471](https://github.com/seata/seata/pull/5471)] 优化客户侧事务日志 - [[#5485](https://github.com/seata/seata/pull/5485)] 优化Server日志输出 - [[#4907](https://github.com/seata/seata/pull/4907)] 调整二阶段result线程池大小及优化代码 - [[#5487](https://github.com/seata/seata/pull/5487)] 将branchsession中的lockholder增加final修饰 - [[#5519](https://github.com/seata/seata/pull/5519)] 优化 Oracle FenceHandler - [[#5501](https://github.com/seata/seata/pull/5501)] 支持乐观锁方式更新事务状态 - [[#5419](https://github.com/seata/seata/pull/5419)] 优化镜像发布流水线支持jdk8/17和支持maven 3.9.0 - [[#5549](https://github.com/seata/seata/pull/5549)] 优化 gpg key 和 发布流水线 - [[#5576](https://github.com/seata/seata/pull/5576)] 仅当 useTCCFence 设置为 true 时,才开启 Fence 表清理任务 - [[#5623](https://github.com/seata/seata/pull/5623)] 优化异步提交线程和重试线程之间可能存在的冲突 - [[#5553](https://github.com/seata/seata/pull/5553)] 支持表和列元数据大小写敏感设置 - [[#5644](https://github.com/seata/seata/pull/5644)] 优化Server日志输出 - [[#5680](https://github.com/seata/seata/pull/5680)] 优化大小写转义符 - [[#5714](https://github.com/seata/seata/pull/5714)] 优化分布式锁竞争日志 - [[#5723](https://github.com/seata/seata/pull/5723)] 优化docker镜像的默认时区 - [[#5779](https://github.com/seata/seata/pull/5779)] 删除无用的输出日志并统一日志输出路径 - [[#5802](https://github.com/seata/seata/pull/5802)] 优化server端事务隔离级别为读已提交 - [[#5783](https://github.com/seata/seata/pull/5783)] 支持nacos上application name配置 - [[#5524](https://github.com/seata/seata/pull/5524)] 支持 seata-server.sh 中的更多操作命令 - [[#5836](https://github.com/seata/seata/pull/5836)] 分离mariadb和mysql的AT实现 - [[#5869](https://github.com/seata/seata/pull/5869)] 优化一些小的语法 - [[#5885](https://github.com/seata/seata/pull/5885)] 优化ConnectionProxyXA中的日志 - [[#5894](https://github.com/seata/seata/pull/5894)] 移除无license组件 - [[#5895](https://github.com/seata/seata/pull/5895)] 移除7z压缩支持 - [[#5896](https://github.com/seata/seata/pull/5896)] 移除 mariadb.jdbc 依赖 - [[#5384](https://github.com/seata/seata/pull/5384)] 统一版本号管理,只需维护 `build/pom.xml` 中的版本号即可。 - [[#5419](https://github.com/seata/seata/pull/5419)] 发布基于多个java版本的docker镜像 - [[#5829](https://github.com/seata/seata/pull/5829)] 修正 `codecov chart` 不展示的问题 - [[#5878](https://github.com/seata/seata/pull/5878)] 优化 `httpcore` 和 `httpclient` 的依赖定义 - [[#5917](https://github.com/seata/seata/pull/5917)] 升级 native-lib-loader 版本 - [[#5926](https://github.com/seata/seata/pull/5926)] 优化一些与 Apollo 相关的脚本 - [[#5938](https://github.com/seata/seata/pull/5938)] 支持 jmx 监控配置 - [[#5951](https://github.com/seata/seata/pull/5951)] 删除在 jdk17 中不支持的配置项 - [[#5959](https://github.com/seata/seata/pull/5959)] 修正代码风格问题及去除无用的类引用 - [[#6002](https://github.com/seata/seata/pull/6002)] 移除fst序列化模块 - [[#6045](https://github.com/seata/seata/pull/6045)] 优化MySQL衍生数据库判断逻辑 - [[#6342](https://github.com/seata/seata/pull/6342)] 兼容integration-tx-api模块 ### security: - [[#5642](https://github.com/seata/seata/pull/5642)] 增加Hessian 序列化黑白名单 - [[#5694](https://github.com/seata/seata/pull/5694)] 修复若干Node.js依赖安全漏洞 - [[#5801](https://github.com/seata/seata/pull/5801)] 修复Java依赖安全漏洞 - [[#5805](https://github.com/seata/seata/pull/5805)] 修复序列化漏洞 - [[#5868](https://github.com/seata/seata/pull/5868)] 修复npm package漏洞 - [[#5916](https://github.com/seata/seata/pull/5916)] 修复npm package漏洞 - [[#5942](https://github.com/seata/seata/pull/5942)] 升级依赖版本 - [[#5987](https://github.com/seata/seata/pull/5987)] 升级依赖版本 - [[#6013](https://github.com/seata/seata/pull/6013)] 升级seata-server依赖的spring版本 ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] 添加单元测试用例 [FileLoader, ObjectHolder, StringUtils] - [[#5309](https://github.com/seata/seata/pull/5309)] 添加单元测试用例 [ArrayUtils, ConfigTools, MapUtil] - [[#5335](https://github.com/seata/seata/pull/5335)] 添加单元测试用例 [EnhancedServiceLoader,ExtensionDefinition,SizeUtilTest,ReflectionUtil,LowerCaseLinkHashMap,FileLoader,ObjectHolder] - [[#5366](https://github.com/seata/seata/pull/5366)] 修复 UpdateExecutorTest 单测失败问题 - [[#5383](https://github.com/seata/seata/pull/5383)] 修复多Spring版本测试失败 - [[#5391](https://github.com/seata/seata/pull/5391)] 添加 config 模块的单元测试用例 - [[#5428](https://github.com/seata/seata/pull/5428)] 修复 FileTransactionStoreManagerTest 单测失败问题 - [[#5622](https://github.com/seata/seata/pull/5622)] 添加单元测试用例 [ExporterType, RegistryType] - [[#5637](https://github.com/seata/seata/pull/5637)] 添加单元测试用例 [BatchResultMessage, HeartbeatMessage, RegisterRMResponse, ResultCode, RegisterTMResponse, MergeResultMessage, MergedWarpMessage, Version] - [[#5893](https://github.com/seata/seata/pull/5893)] 移除 sofa 测试用例 - [[#5845](https://github.com/seata/seata/pull/5845)] 升级 `druid` 版本,并添加 `test-druid.yml` 用于测试seata与druid各版本的兼容性。 - [[#5863](https://github.com/seata/seata/pull/5863)] 修复单元测试在Java21下无法正常运行的问题。 - [[#5986](https://github.com/seata/seata/pull/5986)] 修复 zookeeper 单测失败问题 - [[#5995](https://github.com/seata/seata/pull/5995)] 添加 RaftClusterMetadataMsg 模块的单元测试用例 - [[#6001](https://github.com/seata/seata/pull/6001)] 添加 RaftMsgExecute 模块 branch 包下的单元测试用例 - [[#5996](https://github.com/seata/seata/pull/5996)] 添加 RaftMsgExecute 模块 global 包下的单元测试用例 - [[#6003](https://github.com/seata/seata/pull/6003)] 添加 RaftMsgExecute 模块 lock 包下的单元测试用例 - [[#6009](https://github.com/seata/seata/pull/6009)] 添加RaftServerFactory的单元测试用例 ### Contributors: 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [xssdpgy](https://github.com/xssdpgy) - [albumenj](https://github.com/albumenj) - [PeppaO](https://github.com/PeppaO) - [yuruixin](https://github.com/yuruixin) - [CrazyLionLi](https://github.com/JavaLionLi) - [xingfudeshi](https://github.com/xingfudeshi) - [Bughue](https://github.com/Bughue) - [pengten](https://github.com/pengten) - [wangliang181230](https://github.com/wangliang181230) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [funky-eyes](https://github.com/funky-eyes) - [isharpever](https://github.com/isharpever) - [mxsm](https://github.com/mxsm) - [liuqiufeng](https://github.com/liuqiufeng) - [l81893521](https://github.com/l81893521) - [dmego](https://github.com/dmego) - [zsp419](https://github.com/zsp419) - [tuwenlin](https://github.com/tuwenlin) - [sixlei](https://github.com/sixlei) - [yixia](https://github.com/wt-better) - [capthua](https://github.com/capthua) - [robynron](https://github.com/robynron) - [XQDD](https://github.com/XQDD) - [Weelerer](https://github.com/Weelerer) - [Ifdevil](https://github.com/Ifdevil) - [iquanzhan](https://github.com/iquanzhan) - [leizhiyuan](https://github.com/leizhiyuan) - [Aruato](https://github.com/Aruato) - [ggbocoder](https://github.com/ggbocoder) - [ptyin](https://github.com/ptyin) - [jsbxyyx](https://github.com/jsbxyyx) - [xxxcrel](https://github.com/xxxcrel) 同时,我们收到了社区反馈的很多有价值的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
================================================ FILE: changes/zh-cn/2.1.0.md ================================================ 所有提交到 2.x 分支的 PR 请在此处登记。 ### feature: - [[#6370](https://github.com/seata/seata/pull/6370)] seata saga spring接耦、架构优化。 - [[#6205](https://github.com/apache/incubator-seata/pull/6205)] 提供mock server - [[#6169](https://github.com/apache/incubator-seata/pull/6169)] 支持新版本状态机设计器 - [[#6230](https://github.com/apache/incubator-seata/pull/6230)] 支持RocketMQ消息事务 - [[#6326](https://github.com/apache/incubator-seata/pull/6326)] 支持raft节点间的元数据同步 - [[#6415](https://github.com/apache/incubator-seata/pull/6415)] 支持 Saga 设计器的自动布局 ### bugfix: - [[#6090](https://github.com/apache/incubator-seata/pull/6090)] 修复tcc切面异常处理过程,不对内部调用异常做包装处理,直接向外抛出 - [[#6075](https://github.com/apache/incubator-seata/pull/6075)] 修复镜像SQL对于on update列没有添加表别名的问题 - [[#6086](https://github.com/apache/incubator-seata/pull/6086)] 修复oracle alias 解析异常 - [[#6085](https://github.com/apache/incubator-seata/pull/6085)] 修复jdk9+版本编译后,引入后ByteBuffer#flip NoSuchMethodError的问题 - [[#6101](https://github.com/apache/incubator-seata/pull/6101)] 修复在dubbo 3.x的版本中, 消费者端不能生成tcc代理的问题 - [[#6077](https://github.com/apache/incubator-seata/pull/6077)] 修复表存在复合主键索引导致无法回滚问题 - [[#6121](https://github.com/apache/incubator-seata/pull/6121)] 修复回滚分支事务时没有按照时间排序的问题 - [[#6182](https://github.com/apache/incubator-seata/pull/6182)] 修复在ci中guava-32.0.0-jre.jar zip文件为空的问题 - [[#6196](https://github.com/apache/incubator-seata/pull/6196)] 修复asf配置格式错误的问题 - [[#6143](https://github.com/apache/incubator-seata/pull/6143)] 修复优雅停机 - [[#6204](https://github.com/apache/incubator-seata/pull/6204)] 修复错误配置问题 - [[#6248](https://github.com/apache/incubator-seata/pull/6248)] 修复JDBC resultSet, statement, connection关闭顺序 - [[#6261](https://github.com/apache/incubator-seata/pull/6261)] at模式支持pgsql集群模式url - [[#6256](https://github.com/apache/incubator-seata/pull/6256)] 修复在seata-all sdk下,raft-discovery模块不能读取registry.conf的配置的问题 - [[#6232](https://github.com/apache/incubator-seata/pull/6232)] 修复在mysql的json类型下出现Cannot create a JSON value from a string with CHARACTER SET 'binary'问题 - [[#6278](https://github.com/apache/incubator-seata/pull/6278)] 修复 ProtocolV1SerializerTest 失败问题 - [[#6324](https://github.com/apache/incubator-seata/pull/6324)] 修复 Parse protocol file failed - [[#6331](https://github.com/apache/incubator-seata/pull/6331)] 修复TCC嵌套事务不能同时添加TwoPhaseBusinessAction和GlobalTransactional两个注解的问题 - [[#6354](https://github.com/apache/incubator-seata/pull/6354)] 修复动态升降级不能正常工作问题 - [[#6363](https://github.com/apache/incubator-seata/pull/6363)] 修复docker镜像中的已知问题 - [[#6372](https://github.com/apache/incubator-seata/pull/6372)] 修复初始化sql文件postgresql.sql 索引名称冲突问题 - [[#6380](https://github.com/apache/incubator-seata/pull/6380)] 修复针对sql server检查UNDO_LOG表是否存在时的SQL异常 - [[#6385](https://github.com/apache/incubator-seata/pull/6385)] 修复Role.Participant不执行hook但会清理的问题 - [[#6465](https://github.com/apache/incubator-seata/pull/6465)] 修复2.0下saga模式的context replay丢失start问题 - [[#6469](https://github.com/apache/incubator-seata/pull/6469)] 修复在sqlserver数据库下[lock_table]数据表的插入操作sql中存在的错误 - [[#6496](https://github.com/apache/incubator-seata/pull/6496)] 修复XA执行长时间SQL(或死锁SQL)没有完成回滚就释放连接 - [[#6493](https://github.com/apache/incubator-seata/pull/6493)] 修复当使用数据库为SQLServer时seata server的SQL报错 - [[#6497](https://github.com/apache/incubator-seata/pull/6497)] 修复自动装配时的seata tcc 配置类 - [[#6554](https://github.com/apache/incubator-seata/pull/6554)] 修复序列化器不固定使用对应配置序列化器的问题 - [[#6555](https://github.com/apache/incubator-seata/pull/6555)] 修复businessActionContext对io seata包的不兼容 - [[#6553](https://github.com/apache/incubator-seata/pull/6553)] 修复执行完 'ServiceTask' 后无法应用任何评估器的问题 - [[#6575](https://github.com/apache/incubator-seata/pull/6575)] 修复io.seata ActionInterceptorHandler误使用了org.apache.seata BusinessActionContextParameter类的问题 ### optimize: - [[#6031](https://github.com/apache/incubator-seata/pull/6031)] 添加undo_log表的存在性校验 - [[#6089](https://github.com/apache/incubator-seata/pull/6089)] 修改RaftServerFactory语义并删除不必要的单例构建 - [[#4473](https://github.com/apache/incubator-seata/pull/4473)] rm appdata大小限制 - [[#6071](https://github.com/apache/incubator-seata/pull/6071)] 添加git信息到JAR包中 - [[#6042](https://github.com/apache/incubator-seata/pull/6042)] 增加raft模式鉴权机制 - [[#6091](https://github.com/apache/incubator-seata/pull/6091)] 优化raft鉴权时获取tc地址的方式 - [[#6098](https://github.com/apache/incubator-seata/pull/6098)] 优化acquireMetadata方法的重试逻辑 - [[#6034](https://github.com/apache/incubator-seata/pull/6034)] 使用helm图表进行部署时使用命令行中的命名空间 - [[#6116](https://github.com/apache/incubator-seata/pull/6034)] 移除 lgtm.com - [[#6164](https://github.com/apache/incubator-seata/pull/6164)] redis 注册中心推空保护优化 - [[#6174](https://github.com/apache/incubator-seata/pull/6174)] 增加 ASF 基础配置 - [[#6148](https://github.com/apache/incubator-seata/pull/6148)] 支持 Nacos ram role 鉴权方式 - [[#6181](https://github.com/apache/incubator-seata/pull/6181)] 更新贡献指引文档 - [[#6179](https://github.com/apache/incubator-seata/pull/6179)] 移除 @author 信息 - [[#6176](https://github.com/apache/incubator-seata/pull/6176)] 更新源文件header信息 - [[#6178](https://github.com/apache/incubator-seata/pull/6178)] 更新Apache License头信息 - [[#6186](https://github.com/apache/incubator-seata/pull/6186)] 更新README.md(更新邮件列表和一些生态访问链接) - [[#6184](https://github.com/apache/incubator-seata/pull/6184)] 更新NOTICE文件 - [[#6192](https://github.com/apache/incubator-seata/pull/6192)] 移除无用文件 - [[#6194](https://github.com/apache/incubator-seata/pull/6194)] 修复 asf.yaml 解析错误问题 - [[#5399](https://github.com/apache/incubator-seata/pull/5399)] 分支注册只在RM端 - [[#6154](https://github.com/apache/incubator-seata/pull/6154)] 控制台日志优化 "kubectl logs -f" - [[#6116](https://github.com/apache/incubator-seata/pull/6116)] 重写NettyPoolKey的hashcode和equals,修复了channel对象池重复构建问题 - [[#6195](https://github.com/apache/incubator-seata/pull/6195)] 更新 change log 中的 seata url 为 apache/incubator-seata - [[#6200](https://github.com/apache/incubator-seata/pull/6200)] 去除required_status_checks检查 - [[#6201](https://github.com/apache/incubator-seata/pull/6201)] 恢复required_status_checks但去除context校验 - [[#6218](https://github.com/apache/incubator-seata/pull/6218)] 移除Seata-Docker链接 - [[#6227](https://github.com/apache/incubator-seata/pull/6227)] 校验pk中不含逗号 - [[#6004](https://github.com/apache/incubator-seata/pull/6004)] 优化RM,TM连接server快速失败 - [[#6243](https://github.com/apache/incubator-seata/pull/6243)] 优化控制台页眉中的链接 - [[#6238](https://github.com/apache/incubator-seata/pull/6238)] 文件合规优化 - [[#6239](https://github.com/apache/incubator-seata/pull/6239)] 更新security policy,disclaimer 和 notice 文件 - [[#6245](https://github.com/apache/incubator-seata/pull/6245)] file模式下,在配置中心的spring配置改变时,使应用程序中的配置生效 - [[#6247](https://github.com/apache/incubator-seata/pull/6247)] 优化 asf.yml 配置 - [[#6259](https://github.com/apache/incubator-seata/pull/6259)] 修改全局会话大小超过配置的错误消息 - [[#6264](https://github.com/apache/incubator-seata/pull/6264)] 修复 jib-maven-plugin 编译失败问题 - [[#6246](https://github.com/apache/incubator-seata/pull/6246)] 在maven打包的同时打包前端资源 - [[#6268](https://github.com/apache/incubator-seata/pull/6268)] 更新console模块 npmjs 过时依赖 - [[#6271](https://github.com/apache/incubator-seata/pull/6271)] 统一git信息 - [[#6265](https://github.com/apache/incubator-seata/pull/6265)] 优化在 arm64 上构建前端失败的问题 - [[#6267](https://github.com/apache/incubator-seata/pull/6267)] 增加 Server 反序列化校验 - [[#6275](https://github.com/apache/incubator-seata/pull/6275)] 优化.asf.yaml文件中的label格式 - [[#6291](https://github.com/apache/incubator-seata/pull/6291)] 优化seata-server在idea等开发工具运行时,控制台未输出完整日志的问题 - [[#6283](https://github.com/apache/incubator-seata/pull/6283)] 增加兼容模块支持 io.seata APIs - [[#6294](https://github.com/apache/incubator-seata/pull/6294)] 拆分前端资源打包流程到单独的profile - [[#6285](https://github.com/apache/incubator-seata/pull/6285)] 优化控台中时间查询条件不准确的问题 - [[#6297](https://github.com/apache/incubator-seata/pull/6297)] 修复 `maven-pmd-plugin` 相关的问题 - [[#6298](https://github.com/apache/incubator-seata/pull/6298)] 重命名包名为 org.apache.seata - [[#6302](https://github.com/apache/incubator-seata/pull/6302)] 增加 io.seata shade 打包方案 - [[#6306](https://github.com/apache/incubator-seata/pull/6306)] 替换一些URL 至 org/apache/seata - [[#6304](https://github.com/apache/incubator-seata/pull/6304)] 禁用 OSSRH 发布工作流 - [[#6310](https://github.com/apache/incubator-seata/pull/6310)] seata-server兼容io.seata包 - [[#6301](https://github.com/apache/incubator-seata/pull/6301)] 升级console前端依赖及支持的nodejs版本 - [[#6301](https://github.com/apache/incubator-seata/pull/6312)] 添加saga相关的io.seata兼容性API - [[#6313](https://github.com/apache/incubator-seata/pull/6313)] console展示版本号 - [[#6315](https://github.com/apache/incubator-seata/pull/6315)] 兼容低版本的SPI - [[#6327](https://github.com/apache/incubator-seata/pull/6327)] 兼容 integration.http 和 integration.http.Jakarta API - [[#6328](https://github.com/apache/incubator-seata/pull/6328)] 兼容 integration.grpc API - [[#6330](https://github.com/apache/incubator-seata/pull/6330)] 去除 mariadb API - [[#6329](https://github.com/apache/incubator-seata/pull/6312)] 添加 saga 子组件的 io.seata 兼容性 API - [[#6254](https://github.com/apache/incubator-seata/pull/6254)] 优化Hessian 序列化 - [[#6343](https://github.com/apache/incubator-seata/pull/6343)] 兼容tm 模块和rm-datasource模块 - [[#6345](https://github.com/apache/incubator-seata/pull/6345)] 兼容tcc模块 - [[#6332](https://github.com/apache/incubator-seata/pull/6332)] 分发包中移除 mysql 依赖 - [[#6343](https://github.com/apache/incubator-seata/pull/6343)] 兼容 TM 模块和 rm-datasource 模块 - [[#6349](https://github.com/apache/incubator-seata/pull/6349)] 迁移 dockerhub 仓库 - [[#6357](https://github.com/apache/incubator-seata/pull/6357)] 优化协议编解码的序列化/反序列化 - [[#6356](https://github.com/apache/incubator-seata/pull/6356)] 去除健康检查页面的鉴权 - [[#6360](https://github.com/apache/incubator-seata/pull/6360)] 优化部分链接 401 的问题 - [[#6350](https://github.com/apache/incubator-seata/pull/6350)] 移除 enableDegrade 配置 - [[#6366](https://github.com/apache/incubator-seata/pull/6366)] 优化globaltransaction向下兼容性 - [[#6369](https://github.com/apache/incubator-seata/pull/6369)] 优化 arm64 ci - [[#6386](https://github.com/apache/incubator-seata/pull/6386)] 在 `ConfigurationCache` 类中,将 `byte-buddy` 替换为JDK代理 - [[#6391](https://github.com/apache/incubator-seata/pull/6091)] 禁止重复注册TCC资源 - [[#6393](https://github.com/apache/incubator-seata/pull/6393)] 元数据同步前判断版本,并增加重试功能 - [[#6387](https://github.com/apache/incubator-seata/pull/6387)] 优化tcc使用兼容 - [[#6403](https://github.com/apache/incubator-seata/pull/6403)] 优化 Config 兼容模块 - [[#6402](https://github.com/apache/incubator-seata/pull/6402)] 优化rm-datasource向下兼容 - [[#6419](https://github.com/apache/incubator-seata/pull/6419)] 优化integration-tx-api向下兼容 - [[#6427](https://github.com/apache/incubator-seata/pull/6427)] 支持spi、saga、spring模块的向下兼容 - [[#6442](https://github.com/apache/incubator-seata/pull/6442)] 阐明 if - [[#6487](https://github.com/apache/incubator-seata/pull/6487)] 修复错误包名以及单词 - [[#6458](https://github.com/apache/incubator-seata/pull/6458)] 增加MAC地址null值检查 - [[#6516](https://github.com/apache/incubator-seata/pull/6516)] 优化代码格式 - [[#6429](https://github.com/apache/incubator-seata/pull/6429)] 移除重复注释 - [[#6405](https://github.com/apache/incubator-seata/pull/6405)] 修复 kotlin 编译失败 - [[#6412](https://github.com/apache/incubator-seata/pull/6412)] 优化 core 兼容模块 - [[#6518](https://github.com/apache/incubator-seata/pull/6518)] 优化 ConfigurationCache 代理方法 - [[#6529](https://github.com/apache/incubator-seata/pull/6529)] 优化发布插件 - [[#6548](https://github.com/apache/incubator-seata/pull/6548)] 升级byte-buddy版本至1.14.15 - [[#6539](https://github.com/apache/incubator-seata/pull/6539)] 增加组件 license - [[#6540](https://github.com/apache/incubator-seata/pull/6540)] 排除 com.google.guava:listenablefuture 依赖 - [[#6549](https://github.com/apache/incubator-seata/pull/6549)] 支持macos arm架构单测 - [[#6558](https://github.com/apache/incubator-seata/pull/6558)] 移除 mysql-connector-java 依赖 - [[#6570](https://github.com/apache/incubator-seata/pull/6570)] 添加 notice 文件 - [[#6578](https://github.com/apache/incubator-seata/pull/6578)] registry.conf 补充raft配置 - [[#6576](https://github.com/apache/incubator-seata/pull/6576)] 移除 oracle 数据类型序列化扩展 - [[#6583](https://github.com/apache/incubator-seata/pull/6583)] 优化默认编译不依赖 Git 环境 - [[#6585](https://github.com/apache/incubator-seata/pull/6585)] 优化 compatible 模块的配置 - [[#6597](https://github.com/apache/incubator-seata/pull/6597)] 从源码中移除 binary 包 - [[#6605](https://github.com/apache/incubator-seata/pull/6605)] 订正 license 和 notice - [[#6609](https://github.com/apache/incubator-seata/pull/6609)] 订正 notice 文件 - [[#6610](https://github.com/apache/incubator-seata/pull/6610)] 订正 notice 文件 ### security: - [[#6069](https://github.com/apache/incubator-seata/pull/6069)] 升级Guava依赖版本,修复安全漏洞 - [[#6144](https://github.com/apache/incubator-seata/pull/6144)] 升级Nacos依赖版本至1.4.6 - [[#6145](https://github.com/apache/incubator-seata/pull/6145)] 升级 jettison依赖版本至1.5.4 - [[#6147](https://github.com/apache/incubator-seata/pull/6147)] 升级 kafka-clients依赖至3.6.1 - [[#6339](https://github.com/apache/incubator-seata/pull/6339)] 升级 spring mvc 和 tomcat.embed 依赖 - [[#6340](https://github.com/apache/incubator-seata/pull/6340)] 升级和整理依赖 - [[#6362](https://github.com/apache/incubator-seata/pull/6362)] 升级 Spring 相关的依赖 - [[#6375](https://github.com/apache/incubator-seata/pull/6375)] 覆盖 console 前端安全漏洞 ### test: - [[#6081](https://github.com/apache/incubator-seata/pull/6081)] 添加 `test-os.yml` 用于测试seata在各种操作系统下的运行情况 - [[#6125](https://github.com/apache/incubator-seata/pull/6125)] TransactionTemplateTest单测unbind xid - [[#6157](https://github.com/apache/incubator-seata/pull/6157)] 增加common模块单测覆盖率 - [[#6250](https://github.com/apache/incubator-seata/pull/6250)] 增加seata-core模块单测覆盖率 - [[#6325](https://github.com/apache/incubator-seata/pull/6325)] 修复mock-server相关测试用例 - [[#6430](https://github.com/apache/incubator-seata/pull/6430)] 增加 common 模块单元测试覆盖率 - [[#6456](https://github.com/apache/incubator-seata/pull/6456)] 调整动态配置监听测试用例 - [[#6466](https://github.com/apache/incubator-seata/pull/6466)] 支持redis的集成测试 - [[#6484](https://github.com/apache/incubator-seata/pull/6484)] 修复FileConfigurationTest和MockServerTest失败 - [[#6545](https://github.com/apache/incubator-seata/pull/6545)] 修复 TestConfigCustomSPI 兼容性测试失败 - [[#6560](https://github.com/apache/incubator-seata/pull/6560)] 修复 mockserver test,不在 Runtime.getRuntime().addShutdownHook 中关闭 - [[#6565](https://github.com/apache/incubator-seata/pull/6565)] 修复 testCompensationStateMachine 与mockServer单测冲突 ### refactor: - [[#6280](https://github.com/apache/incubator-seata/pull/6280)] 使用diagram-js重构Saga设计器 - [[#6269](https://github.com/apache/incubator-seata/pull/6269)] 统一Seata异常规范 - [[#6420](https://github.com/apache/incubator-seata/pull/6420)] 优化配置缓存 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [ptyin](https://github.com/ptyin) - [laywin](https://github.com/laywin) - [imcmai](https://github.com/imcmai) - [DroidEye2ONGU](https://github.com/DroidEye2ONGU) - [funky-eyes](https://github.com/funky-eyes) - [Bughue](https://github.com/Bughue) - [wangliang181230](https://github.com/wangliang181230) - [ggbocoder](https://github.com/ggbocoder) - [leezongjie](https://github.com/leezongjie) - [l81893521](https://github.com/l81893521) - [baiyangtx](https://github.com/baiyangtx) - [lightClouds917](https://github.com/lightClouds917) - [xingfudeshi](https://github.com/xingfudeshi) - [PleaseGiveMeTheCoke](https://github.com/PleaseGiveMeTheCoke) - [sunrui1225](https://github.com/sunrui1225) - [PeppaO](https://github.com/PeppaO) - [AlbumenJ](https://github.com/AlbumenJ) - [dreamskyvision](https://github.com/dreamskyvision) - [jsbxyyx](https://github.com/jsbxyyx) - [liuqiufeng](https://github.com/liuqiufeng) - [saberyjs](https://github.com/SABERYJS) - [gggyd123](https://github.com/gggyd123) - [jonasHanhan](https://github.com/jonasHanhan) - [Code-breaker1998](https://github.com/Code-breaker1998) - [yixia](https://github.com/wt-better) - [MikhailNavitski](https://github.com/MikhailNavitski) - [deung](https://github.com/deung) - [tanyaofei](https://github.com/tanyaofei) - [xjlgod](https://github.com/xjlgod) - [TakeActionNow2019](https://github.com/TakeActionNow2019) - [sunxunle](https://github.com/sunxunle) - [bageyang](https://github.com/bageyang) - [YeonCheolGit](https://github.com/YeonCheolGit) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 ================================================ FILE: changes/zh-cn/2.2.0.md ================================================ 所有提交到 2.x 分支的 PR 请在此处登记。 ### feature: - [[#6536](https://github.com/apache/incubator-seata/pull/6536)] 支持 naming server客户端 - [[#6226](https://github.com/apache/incubator-seata/pull/6226)] 支持seata私有协议多版本兼容 - [[#6537](https://github.com/apache/incubator-seata/pull/6537)] 支持 Namingserver - [[#6538](https://github.com/apache/incubator-seata/pull/6538)] seata server端集成naming server - [[#6766](https://github.com/apache/incubator-seata/pull/6766)] 添加tcc三阶段钩子函数,方便用户拓展业务逻辑(比如多数据源情况下可以用于切换数据源) ### bugfix: - [[#6592](https://github.com/apache/incubator-seata/pull/6592)] fix @Async注解ClusterWatcherManager中不生效的问题 - [[#6624](https://github.com/apache/incubator-seata/pull/6624)] 修复 Alibaba Dubbo 转换错误 - [[#6627](https://github.com/apache/incubator-seata/pull/6627)] 修复 xaEnded 没有重置 - [[#6626](https://github.com/apache/incubator-seata/pull/6626)] 修复 hsf ConsumerModel 转换错误 - [[#6816](https://github.com/apache/incubator-seata/pull/6816)] 修复在非全局事务上下文中获取branchType时的NPE问题 - [[#6640](https://github.com/apache/incubator-seata/pull/6640)] 优化codecov相关配置 - [[#6642](https://github.com/apache/incubator-seata/pull/6642)] 修复codecov token找不到导致无法提交单测覆盖度报告 - [[#6661](https://github.com/apache/incubator-seata/pull/6661)] 修复`tableMeta`缓存定时刷新失效问题 - [[#6486](https://github.com/apache/incubator-seata/pull/6486)] 修复在mysql数据库下undo_log sql数据超过最大包大小错误 - [[#6668](https://github.com/apache/incubator-seata/pull/6668)] 解决namingserver同一个集群下instance添加和删除时的线程安全问题 - [[#6678](https://github.com/apache/incubator-seata/pull/6678)] 修复由于表名大小写问题导致的相同记录生成不同RowKey的问题 - [[#6697](https://github.com/apache/incubator-seata/pull/6697)] v0版本的ByteBuf不应由父类先解码 - [[#6707](https://github.com/apache/incubator-seata/pull/6707)] 修复Oracle XA事务中只读分支提交出错的问题 - [[#6711](https://github.com/apache/incubator-seata/pull/6711)] 修复达梦数据库的getRollbackInfo没有解压缩的问题 - [[#6714](https://github.com/apache/incubator-seata/pull/6714)] 修复达梦数据库的delete sql回滚失败的问题 - [[#6511](https://github.com/apache/incubator-seata/pull/6511)] 修复在使用SQLServer时,AT模式delete语句无法正常回滚的问题 - [[#6701](https://github.com/apache/incubator-seata/pull/6728)] 修复达梦数据库的对dm.jdbc.driver.DmdbTimestamp的支持 - [[#6757](https://github.com/apache/incubator-seata/pull/6757)] 修复client通过namingserver只能获取到一个tc节点的bug - [[#6769](https://github.com/apache/incubator-seata/pull/6769)] 修复tcc fence死锁 - [[#6778](https://github.com/apache/incubator-seata/pull/6778)] 修复namingserver的节点term为0问题 - [[#6765](https://github.com/apache/incubator-seata/pull/6765)] 改进MySQL驱动加载机制,将自定义类加载器替换为系统类加载器,更兼容简化流程 - [[#6781](https://github.com/apache/incubator-seata/pull/6781)] 修复tc下线时,由于定时任务没有先关闭,导致下线后还会被注册上,需要靠namingserver的健康检查来下线的bug - [[#6785](https://github.com/apache/incubator-seata/pull/6785)] 修复 prometheus 在与 Nacos 集成时无法返回 seata metrics 数据的问题 - [[#6797](https://github.com/apache/incubator-seata/pull/6797)] 当查询的集群地址为空时,获取可用的任意集群地址 - [[#6800](https://github.com/apache/incubator-seata/pull/6800)] 使异常消息对所有数据库驱动程序通用 - [[#6812](https://github.com/apache/incubator-seata/pull/6812)] 修复切换事务分组和节点下线时namingserver没有实时感知和推送的bug - [[#6759](https://github.com/apache/incubator-seata/pull/6759)] 修复跨库表主动刷新`tableMeta`的异常问题 - [[#6817](https://github.com/apache/incubator-seata/pull/6817)] 修复namingserver切换事务分组失效的问题 - [[#6820](https://github.com/apache/incubator-seata/pull/6820)] 修复Dockerfile得文件结构错误 - [[#6825](https://github.com/apache/incubator-seata/pull/6825)] 修复Postgres的XA模式事务超时无法回滚问题 - [[#6833](https://github.com/apache/incubator-seata/pull/6833)] 插入全局锁时 SQLIntegrityConstraintViolationException 捕获不正确 - [[#6835](https://github.com/apache/incubator-seata/pull/6835)] 修复HttpClientUtil中post方法请求体缺失的问题 - [[#6845](https://github.com/apache/incubator-seata/pull/6845)] 修复rocksdb open相同文件多次的问题 - [[#6840](https://github.com/apache/incubator-seata/pull/6840)] 修复ProcessorYaml中不安全的反序列化 - [[#6843](https://github.com/apache/incubator-seata/pull/6843)] 修复从控制台发送POST请求时出现的403错误 - [[#6850](https://github.com/apache/incubator-seata/pull/6850)] raft模式向下兼容2.0版本 - [[#6855](https://github.com/apache/incubator-seata/pull/6855)] 修复raft缩容后元数据中残留该节点的问题(需先升级到2.2再进行缩容) - [[#6859](https://github.com/apache/incubator-seata/pull/6859)] 移除重复的依赖 ### optimize: - [[#6499](https://github.com/apache/incubator-seata/pull/6499)] 拆分 committing 和 rollbacking 状态的任务线程池 - [[#6208](https://github.com/apache/incubator-seata/pull/6208)] 支持多版本的Seata序列化 - [[#6209](https://github.com/apache/incubator-seata/pull/6209)] 解开 RpcMessage 和 Encoder/Decoder 的互相依赖 - [[#6634](https://github.com/apache/incubator-seata/pull/6634)] 根据协议版本指定channel handle - [[#6523](https://github.com/apache/incubator-seata/pull/6523)] 升级 alibaba/druid 的版本到1.2.20 - [[#6566](https://github.com/apache/incubator-seata/pull/6566)] 支持GlobalTransactionScanner类中exposeProxy属性的配置 - [[#6534](https://github.com/apache/incubator-seata/pull/6534)] 优化: 发送异步响应 - [[#6534](https://github.com/apache/incubator-seata/pull/6648)] 增加license header信息 - [[#6666](https://github.com/apache/incubator-seata/pull/6666)] 添加ExceptionUtil工具类用于解包装异常 - [[#6654](https://github.com/apache/incubator-seata/pull/6654)] 增加Namingserver打包功能 - [[#6667](https://github.com/apache/incubator-seata/pull/6667)] 优化Namingserver日志输出 - [[#6687](https://github.com/apache/incubator-seata/pull/6687)] 删除前端构建的静态代码 - [[#6700](https://github.com/apache/incubator-seata/pull/6700)] 去掉sdk版本检查 - [[#6727](https://github.com/apache/incubator-seata/pull/6727)] 反序列化性能优化 - [[#6732](https://github.com/apache/incubator-seata/pull/6732)] 为application.example.yml与application.raft.example.yml添加默认安全配置 - [[#6651](https://github.com/apache/incubator-seata/pull/6651)] 为 proto 文件添加 license header - [[#6653](https://github.com/apache/incubator-seata/pull/6653)] 优化多 license和移除license url - [[#6655](https://github.com/apache/incubator-seata/pull/6655)] 更新前端 license - [[#6652](https://github.com/apache/incubator-seata/pull/6652)] 为spring 配置文件添加 license header - [[#6656](https://github.com/apache/incubator-seata/pull/6656)] 更新源码中的 license - [[#6650](https://github.com/apache/incubator-seata/pull/6650)] 为 SPI配置文件添加 license header - [[#6741](https://github.com/apache/incubator-seata/pull/6741)] 升级 tomcat-embed-core 至 9.0.90 版本 - [[#6742](https://github.com/apache/incubator-seata/pull/6742)] 升级 console 模块 npmjs 版本 - [[#6732](https://github.com/apache/incubator-seata/pull/6732)] 为application.example.yml与application.raft.example.yml添加默认安全配置 - [[#6743](https://github.com/apache/incubator-seata/pull/6743)] 升级saga模块npmjs版本 - [[#6746](https://github.com/apache/incubator-seata/pull/6746)] 优化 compatible 模块依赖 - [[#6745](https://github.com/apache/incubator-seata/pull/6745)] 修复 node-gyp 在 arm64 和 macos 构建失败问题 - [[#6749](https://github.com/apache/incubator-seata/pull/6749)] 优化 WebSecurityConfig csrf 处理 - [[#6748](https://github.com/apache/incubator-seata/pull/6748)] 优化 ConsistentHashLoadBalance 算法 - [[#6747](https://github.com/apache/incubator-seata/pull/6747)] 优化 fastjson 反序列化 - [[#6755](https://github.com/apache/incubator-seata/pull/6755)] 优化namingserver代码逻辑 - [[#6763](https://github.com/apache/incubator-seata/pull/6763)] 优化 NacosConfiguration 单例加载 - [[#6761](https://github.com/apache/incubator-seata/pull/6761)] 提升namingserver manager代码可读性 - [[#6768](https://github.com/apache/incubator-seata/pull/6768)] 上报tcc fence事务隔离级别 - [[#6770](https://github.com/apache/incubator-seata/pull/6770)] 通过caffeine map支持namingserver事务分组的过期删除 - [[#6780](https://github.com/apache/incubator-seata/pull/6780)] 优化类 `SerializerServiceLoader` 中的反射操作 - [[#6784](https://github.com/apache/incubator-seata/pull/6784)] 升级 axios 至 1.7.4 版本 - [[#6787](https://github.com/apache/incubator-seata/pull/6787)] 升级 elliptic 至 6.5.7 版本 - [[#6783](https://github.com/apache/incubator-seata/pull/6783)] 将server事务分组修改接口改为/vgroup/v1 - [[#6793](https://github.com/apache/incubator-seata/pull/6793)] 修复 npmjs 依赖冲突问题 - [[#6794](https://github.com/apache/incubator-seata/pull/6794)] 优化 NacosMockTest 单测问题 - [[#6793](https://github.com/apache/incubator-seata/pull/6795)] 独立server的meta信息初始化逻辑 - [[#6806](https://github.com/apache/incubator-seata/pull/6806)] 优化`tableMeta`缓存定时刷新问题 - [[#6808](https://github.com/apache/incubator-seata/pull/6808)] 修改版本号为2.2.0-SNAPSHOT - [[#6819](https://github.com/apache/incubator-seata/pull/6819)] namingserver与server的合并打包 - [[#6827](https://github.com/apache/incubator-seata/pull/6827)] 重命名namingserver注册类型改为seata - [[#6836](https://github.com/apache/incubator-seata/pull/6836)] 为CI流程增加独立nacos - [[#6841](https://github.com/apache/incubator-seata/pull/6841)] 更新license和notice文件并统一依赖版本 - [[#6823](https://github.com/apache/incubator-seata/pull/6823)] 修正DefaultGlobalTransaction日志的错别字 - [[#6779](https://github.com/apache/incubator-seata/pull/6779)] 在config模块中使用curator替代zkclient - [[#6831](https://github.com/apache/incubator-seata/pull/6831)] 在registry模块中使用curator替代zkclient - [[#6803](https://github.com/apache/incubator-seata/pull/6803)] 优化 ARM64 架构的编译打包 - [[#6852](https://github.com/apache/incubator-seata/pull/6852)] 优化raft接口 - [[#6863](https://github.com/apache/incubator-seata/pull/6863)] 更新notice.md ### refactor: ### security: ### test: - [[#6533](https://github.com/apache/incubator-seata/pull/6533)] 增加 Integration-TX-API 模块单元测试覆盖范围 - [[#6608](https://github.com/apache/incubator-seata/pull/6608)] 添加sql-parser-core模块测试用例 - [[#6647](https://github.com/apache/incubator-seata/pull/6647)] 增加saga模块的测试用例覆盖率 - [[#6695](https://github.com/apache/incubator-seata/pull/6695)] 多版本协议的旧版本(< 0.7.1)客户端测试用例 - [[#6752](https://github.com/apache/incubator-seata/pull/6752)] 增加metrics模块测试用例覆盖率 - [[#6764](https://github.com/apache/incubator-seata/pull/6764)] 增加 Apollo Mock 测试用例 - [[#6750](https://github.com/apache/incubator-seata/pull/6750)] 提升spring autoconfigure模块单测覆盖率 - [[#6773](https://github.com/apache/incubator-seata/pull/6773)] 修复codecov图标显示错误的代码覆盖率 - [[#6821](https://github.com/apache/incubator-seata/pull/6821)] 修复单元测试断言 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [tuwenlin](https://github.com/tuwenlin) - [YeonCheolGit](https://github.com/YeonCheolGit) - [liuqiufeng](https://github.com/liuqiufeng) - [God-Gan](https://github.com/God-Gan) - [Bughue](https://github.com/Bughue) - [funky-eyes](https://github.com/funky-eyes) - [tanyaofei](https://github.com/tanyaofei) - [traitsisgiorgos](https://github.com/traitsisgiorgos) - [wanghongzhou](https://github.com/wanghongzhou) - [ggbocoder](https://github.com/ggbocoder) - [azatyamanaev](https://github.com/azatyamanaev) - [xjlgod](https://github.com/xjlgod) - [xingfudeshi](https://github.com/xingfudeshi) - [wuwen5](https://github.com/wuwen5) - [jsbxyyx](https://github.com/jsbxyyx) - [iAmClever](https://github.com/iAmClever) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [liuqiufeng](https://github.com/liuqiufeng) - [caohdgege](https://github.com/caohdgege) - [TakeActionNow2019](https://github.com/TakeActionNow2019) - [imashimaro](https://github.com/hmj776521114) - [lyl2008dsg](https://github.com/lyl2008dsg) - [lightClouds917](https://github.com/lightClouds917) - [l81893521](https://github.com/l81893521) - [laywin](https://github.com/laywin) - [xiaoxiangyeyu0](https://github.com/xiaoxiangyeyu0) - [LegGasai](https://github.com/LegGasai) - [yangli-stu](https://github.com/yangli-stu) - [heliang666s](https://github.com/heliang666s) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 ================================================ FILE: changes/zh-cn/2.3.0.md ================================================ ### 2.3.0
Release notes ### Apache Seata(incubating) 2.3.0 Apache Seata(incubating) 2.3.0 发布。 Apache Seata(incubating) 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 此版本更新如下: ### feature: - [[#6904](https://github.com/apache/incubator-seata/pull/6904)] 增加Fastjson2序列化Rpc消息支持 - [[#6876](https://github.com/apache/incubator-seata/pull/6876)] 支持人大金仓数据库(kingbase) - [[#6881](https://github.com/apache/incubator-seata/pull/6881)] client和server支持grpc协议 - [[#6864](https://github.com/apache/incubator-seata/pull/6864)] 支持神通数据库(oscar) - [[#6974](https://github.com/apache/incubator-seata/pull/6974)] 支持UndoLog的fastjson2序列化方式 - [[#6992](https://github.com/apache/incubator-seata/pull/6992)] 支持grpc序列化器 - [[#6995](https://github.com/apache/incubator-seata/pull/6995)] 升级过时的 npmjs 依赖 - [[#6973](https://github.com/apache/incubator-seata/pull/6973)] 支持saga注解化 - [[#6926](https://github.com/apache/incubator-seata/pull/6926)] 支持Raft节点间的SSL通信 ### bugfix: - [[#6899](https://github.com/apache/incubator-seata/pull/6899)] 修复file.conf打包后的读取 - [[#6890](https://github.com/apache/incubator-seata/pull/6890)] 修复saga设计json转标准json过程中: 子状态机补偿节点无法被识别 - [[#6907](https://github.com/apache/incubator-seata/pull/6907)] 修复Codecov未生成报告的问题 - [[#6923](https://github.com/apache/incubator-seata/pull/6923)] 增强 401 错误处理,通过刷新令牌 - [[#6925](https://github.com/apache/incubator-seata/pull/6925)] 修复Raft模式下,Follower崩溃可能导致Client继续使用过期令牌的问题 - [[#6932](https://github.com/apache/incubator-seata/pull/6932)] 修复开启本地事务时file&raft模式下锁争抢失败未退出导致可能出现残留锁 - [[#6940](https://github.com/apache/incubator-seata/pull/6940)] 修复NacosRegistry lookup 行为 transactionServiceGroup 为空导致 NPE 错误 - [[#6943](https://github.com/apache/incubator-seata/pull/6943)] 修复并发状态下 `convertBranchSession` 转换报错问题 - [[#6948](https://github.com/apache/incubator-seata/pull/6948)] 修复在ARM64平台下CI构建出错的问题 - [[#6947](https://github.com/apache/incubator-seata/pull/6947)] 修复nacos注册中心查询可用地址时的空指针问题 - [[#6984](https://github.com/apache/incubator-seata/pull/6984)] 修复 openjdk23 版本下无法构建 docker 镜像的问题 - [[#6994](https://github.com/apache/incubator-seata/pull/6994)] 修复updateJoin语句未更新到数据时prepareUndoLog异常 - [[#7005](https://github.com/apache/incubator-seata/pull/7005)] 修复Raft模式下两阶段并发可能导致NPE的问题 - [[#7010](https://github.com/apache/incubator-seata/pull/7010)] 修复使用达梦数据库时删除undolog发生SQL语法错误 - [[#7022](https://github.com/apache/incubator-seata/pull/7022)] 修复 `application.raft.example.yml`的 `store.mode`属性 - [[#7025](https://github.com/apache/incubator-seata/pull/7025)] 修复vGroupMappingManager未初始化的问题 - [[#7044](https://github.com/apache/incubator-seata/pull/7044)] 修复TableMeta在数据源关闭后刷新错误问题 - [[#7117](https://github.com/apache/incubator-seata/pull/7117)] 修复 seata.server.raft.ssl 前缀不存在的问题 - [[#7127](https://github.com/apache/incubator-seata/pull/7127)] 修复saga注解化导致的server branchType解码失败问题 ### optimize: - [[#6826](https://github.com/apache/incubator-seata/pull/6826)] 移除只读XA事务的分支注册操作 - [[#6874](https://github.com/apache/incubator-seata/pull/6874)] modify the version to 2.3.0-SNAPSHOT - [[#6892](https://github.com/apache/incubator-seata/pull/6892)] 升级 console 模块 npmjs 版本 - [[#6874](https://github.com/apache/incubator-seata/pull/6874)] 修改版本为2.3.0-SNAPSHOT - [[#6883](https://github.com/apache/incubator-seata/pull/6874)] 删除代码中无用对象的创建 - [[#6892](https://github.com/apache/incubator-seata/pull/6892)] 升级 npmjs 版本 - [[#6889](https://github.com/apache/incubator-seata/pull/6889)] 修正单词拼写错误 - [[#6898](https://github.com/apache/incubator-seata/pull/6898)] 升级 saga 模块 npmjs 版本 - [[#6879](https://github.com/apache/incubator-seata/pull/6879)] 修复日志参数不匹配问题 - [[#6898](https://github.com/apache/incubator-seata/pull/6898)] 升级 saga 模块 npmjs 版本 - [[#6902](https://github.com/apache/incubator-seata/pull/6900)] 优化 readme 文档 - [[#6807](https://github.com/apache/incubator-seata/pull/6807)] 分离merge消息使其能完全并行处理 - [[#6905](https://github.com/apache/incubator-seata/pull/6905)] 移除构建期不兼容的 license - [[#6906](https://github.com/apache/incubator-seata/pull/6906)] h2依赖添加test scope - [[#6911](https://github.com/apache/incubator-seata/pull/6911)] 修正项目中的部分拼写错误 - [[#6918](https://github.com/apache/incubator-seata/pull/6918)] 使用eclipse-temurin的openjdk镜像作为基础镜像 - [[#6938](https://github.com/apache/incubator-seata/pull/6938)] 更新 README.md 中的社区联系信息 - [[#6950](https://github.com/apache/incubator-seata/pull/6950)] 移除JVM参数app.id - [[#6959](https://github.com/apache/incubator-seata/pull/6959)] 修正 `seata-http-jakarta`的模块命名和描述 - [[#6991](https://github.com/apache/incubator-seata/pull/6991)] gRPC协议序列化默认值为protobuf - [[#6996](https://github.com/apache/incubator-seata/pull/6996)] 优化 AT 事务模式锁释放逻辑 - [[#6993](https://github.com/apache/incubator-seata/pull/6993)] 优化 metrics 指标 - [[#6995](https://github.com/apache/incubator-seata/pull/6995)] 升级过时的 npmjs 依赖 - [[#6996](https://github.com/apache/incubator-seata/pull/6996)] 优化 AT 事务模式锁释放逻辑 - [[#7023](https://github.com/apache/incubator-seata/pull/7023)] 优化快速失败 - [[#7027](https://github.com/apache/incubator-seata/pull/7027)] raft模式下reload行为与file保持一致 - [[#6891](https://github.com/apache/incubator-seata/pull/6891)] 增加 StateType 类型 - [[#7040](https://github.com/apache/incubator-seata/pull/7040)] 优化ConfigurationFactory加载的打印信息 - [[#7046](https://github.com/apache/incubator-seata/pull/7046)] 去除spring-webmvc的依赖冲突 - [[#7043](https://github.com/apache/incubator-seata/pull/7043)] 在获取不到mq的sendResult时,直接完成回滚 - [[#7051](https://github.com/apache/incubator-seata/pull/7051)] 为namingserver模块添加Jib支持以构建Docker镜像 - [[#7054](https://github.com/apache/incubator-seata/pull/7054)] file模式中竞争不到锁时输出持有者的xid - [[#7154](https://github.com/apache/incubator-seata/pull/7154)] 移除未使用的依赖 - [[#7153](https://github.com/apache/incubator-seata/pull/7153)] 升级 tomcat-embed 版本至 9.0.98 - [[#7152](https://github.com/apache/incubator-seata/pull/7152)] 移除 org.eclipse.jetty 依赖 - [[#7151](https://github.com/apache/incubator-seata/pull/7151)] 升级 xstream 版本至 1.4.21 ### refactor: - [[#7017](https://github.com/apache/incubator-seata/pull/7017)] 移除 seata-server 模块的依赖 - [[#7155](https://github.com/apache/incubator-seata/pull/7155)] 重构不满足 license 要求的代码 ### test: - [[#6869](https://github.com/apache/incubator-seata/pull/6869)] 增加`seata-core`测试用例覆盖率 - [[#6927](https://github.com/apache/incubator-seata/pull/6927)] 增加`seata-rocketmq`模块的测试用例 - [[#7018](https://github.com/apache/incubator-seata/pull/7018)] 增加 `seata-tm` 模块的测试用例 - [[#7030](https://github.com/apache/incubator-seata/pull/7030)] 增加 `seata-common` 模块的测试用例 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [funky-eyes](https://github.com/funky-eyes) - [dk2k](https://github.com/dk2k) - [MaoMaoandSnail](https://github.com/MaoMaoandSnail) - [yougecn](https://github.com/yougecn) - [arrrnold17](https://github.com/arrrnold17) - [xjlgod](https://github.com/xjlgod) - [PleaseGiveMeTheCoke](https://github.com/PleaseGiveMeTheCoke) - [dsomehan](https://github.com/dsomehan) - [psxjoy](https://github.com/psxjoy) - [xingfudeshi](https://github.com/xingfudeshi) - [o-jimin](https://github.com/o-jimin) - [lixingjia77](https://github.com/lixingjia77) - [whaon](https://github.com/whaon) - [YvCeung](https://github.com/YvCeung) - [jsbxyyx](https://github.com/jsbxyyx) - [lightClouds917](https://github.com/lightClouds917) - [Muluo-cyan](https://github.com/Muluo-cyan) - [yixia](https://github.com/wt-better) - [ChinaJeckXu](https://github.com/ChinaJeckXu) - [YongGoose](https://github.com/YongGoose) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 ================================================ FILE: changes/zh-cn/2.4.0.md ================================================ ### 2.4.0
Release notes ### Apache Seata(incubating) 2.4.0 Apache Seata(incubating) 2.4.0 发布。 Apache Seata(incubating) 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 此版本更新如下: ### feature: - [[#7157](https://github.com/apache/incubator-seata/pull/7157)] 将console迁移至namingserver中 - [[#7213](https://github.com/apache/incubator-seata/pull/7213)] 支持 kingbase xa 模式 ### bugfix: - [[#7104](https://github.com/apache/incubator-seata/pull/7104)] 修复SeataApplicationListener在低版本springboot未实现supportsSourceType方法的问题 - [[#7116](https://github.com/apache/incubator-seata/pull/7116)] 修复 seata.server.raft.ssl 前缀不存在的问题 - [[#7112](https://github.com/apache/incubator-seata/pull/7112)] 校验是否IPv6网络ip取消必须以fe80开始的条件 - [[#7107](https://github.com/apache/incubator-seata/pull/7107)] 修复tcc模式下,当业务对象为代理对象时,解析注解失败问题。 - [[#7124](https://github.com/apache/incubator-seata/pull/7124)] GlobalTransactionScanner.afterPropertiesSet方法需要做扫描检查 - [[#7135](https://github.com/apache/incubator-seata/pull/7135)] 回滚时遇到唯一索引冲突视为脏写 - [[#7150](https://github.com/apache/incubator-seata/pull/7150)] raft节点之前时间差,follower节点无法同步数据 - [[#7102](https://github.com/apache/incubator-seata/pull/7150)] 将XA模式预提交事务从提交阶段修改为关闭前阶段 - [[#7188](https://github.com/apache/incubator-seata/pull/7188)] 修复 BusinessActionContext 中缺少的 branchType - [[#7219](https://github.com/apache/incubator-seata/pull/7219)] 修复 NotSupportExc 有些情况下不能被正确抛出 - [[#7241](https://github.com/apache/incubator-seata/pull/7241)] 升级 tomcat-embed-core 至 9.0.99 版本以解决 CVE-2025-24813 - [[#7272](https://github.com/apache/incubator-seata/pull/7272)] 修复全局事务显示问题 - [[#7277](https://github.com/apache/incubator-seata/pull/7277)] 修复MySQL jdbc驱动无法正常找到的问题 ### optimize: - [[#6828](https://github.com/apache/incubator-seata/pull/6828)] seata-spring-boot-starter兼容file.conf和registry.conf - [[#7012](https://github.com/apache/incubator-seata/pull/7012)] 当主键超过1000个时,使用union拼接sql,可以使用索引 - [[#7075](https://github.com/apache/incubator-seata/pull/7075)] 当channel为空时,快速失败,以便于减少不必要的等待 - [[#7089](https://github.com/apache/incubator-seata/pull/7089)] 新增instance注册到注册中心的接口 - [[#7093](https://github.com/apache/incubator-seata/pull/7093)] 增加jdk21的工作流测试 - [[#7088](https://github.com/apache/incubator-seata/pull/7088)] 将日志中英文缩写改为全拼 - [[#7064](https://github.com/apache/incubator-seata/pull/7064)] 移除不必要的空校验 - [[#7130](https://github.com/apache/incubator-seata/pull/7130)] 暴漏一些关于Druid, Hikari, 和DBCP的保活配置项 - [[#7131](https://github.com/apache/incubator-seata/pull/7131)] 移除 org.codehaus.jackson 依赖 - [[#7134](https://github.com/apache/incubator-seata/pull/7134)] 升级 tomcat-embed 至 9.0.98 版本 - [[#7138](https://github.com/apache/incubator-seata/pull/7138)] 移除 org.eclipse.jetty 依赖 - [[#7139](https://github.com/apache/incubator-seata/pull/7139)] 升级 xstream 至 1.4.21 版本 - [[#7141](https://github.com/apache/incubator-seata/pull/7141)] 去除未使用的依赖 - [[#7142](https://github.com/apache/incubator-seata/pull/7142)] 升级 commons-compress 至 1.27.1 版本 - [[#7149](https://github.com/apache/incubator-seata/pull/7149)] 修复./distribution/NOTICE.md文件中的异常字符串显示问题 - [[#7170](https://github.com/apache/incubator-seata/pull/7170)] 通过调整线程数优化 Seata 客户端 I/O 处理 - [[#7187](https://github.com/apache/incubator-seata/pull/7187)] 增加dependency-check-maven 插件来检测潜在的漏洞 - [[#7179](https://github.com/apache/incubator-seata/pull/7179)] 使用共享的 EventLoop 来减少 TM 和 RM 客户端的线程开销并提高性能 - [[#7194](https://github.com/apache/incubator-seata/pull/7194)] 自动跳过对AbstractRoutingDataSource类型数据源的代理 - [[#7215](https://github.com/apache/incubator-seata/pull/7215)] 拦截控制台写操作的非leader的raft请求 - [[#7224](https://github.com/apache/incubator-seata/pull/7224)] 优化控制台的changeGlobalStatus接口· - [[#7222](https://github.com/apache/incubator-seata/pull/7222)] raft模式下控制台接口响应全局锁信息时增加vgroup字段 - [[#7229](https://github.com/apache/incubator-seata/pull/7229)] 更新 Notice - [[#7234](https://github.com/apache/incubator-seata/pull/7234)] 优化raft对接namingserve时的服务发现逻辑 - [[#7242](https://github.com/apache/incubator-seata/pull/7242)] 更改参考案例下的ratelimit配置 - [[#7259](https://github.com/apache/incubator-seata/pull/7259)] 将logback appender配置转移到yml配置 - [[#6998](https://github.com/apache/incubator-seata/pull/6998)] 跳过协议版本v0不支持的request - [[#7250](https://github.com/apache/incubator-seata/pull/7250)] 适配 client_protocol_version > server_protocol_version场景 - [[#7232](https://github.com/apache/incubator-seata/pull/7232)] 增加 license header - [[#7260](https://github.com/apache/incubator-seata/pull/7260)] 升级 npmjs 依赖版本 - [[#7284](https://github.com/apache/incubator-seata/pull/7284)] 增加 dependency-check profile - [[#6756](https://github.com/apache/incubator-seata/pull/6756)] seata服务单点限流支持 - [[#7073](https://github.com/apache/incubator-seata/pull/7073)] 支持虚拟线程,用ReentrantLock替换synchronized的用法 - [[#7037](https://github.com/apache/incubator-seata/pull/7037)] 支持UndoLog的fury序列化方式 - [[#7069](https://github.com/apache/incubator-seata/pull/7069)] Raft集群模式支持地址转换 - [[#7038](https://github.com/apache/incubator-seata/pull/7038)] 支持Fury序列化器 - [[#7114](https://github.com/apache/incubator-seata/pull/7114)] 支持raft集群注册至namingserver - [[#7133](https://github.com/apache/incubator-seata/pull/7133)] 实现对残留的end状态事务定时处理 - [[#7171](https://github.com/apache/incubator-seata/pull/7171)] 客户端支持 EpollEventLoopGroup - [[#7183](https://github.com/apache/incubator-seata/pull/7183)] 客户端支持通过namingserver发现raft节点 - [[#7182](https://github.com/apache/incubator-seata/pull/7182)] 采用peerId的ip作为raft节点的host - [[#7181](https://github.com/apache/incubator-seata/pull/7181)] raft实现域名解析并选择peerId - [[#7223](https://github.com/apache/incubator-seata/pull/7223)] 使用 Palantir java 格式应用 Spotless - [[#7283](https://github.com/apache/incubator-seata/pull/7283)] 使用重试逻辑优化事务的结束 ### security: - [[#6069](https://github.com/apache/incubator-seata/pull/6069)] 升级Guava依赖版本,修复安全漏洞 - [[#6144](https://github.com/apache/incubator-seata/pull/6144)] 升级Nacos依赖版本至1.4.6 - [[#6145](https://github.com/apache/incubator-seata/pull/6145)] 升级 jettison依赖版本至1.5.4 - [[#6147](https://github.com/apache/incubator-seata/pull/6147)] 升级 kafka-clients依赖至3.6.1 - [[#6338](https://github.com/apache/incubator-seata/pull/6338)] 升级 jackson 依赖版本 - [[#7201](https://github.com/apache/incubator-seata/pull/7202)] 升级 protobuf 版本到 3.25.5 - [[#7214](https://github.com/apache/incubator-seata/pull/7214)] 升级 jackson 至 2.18.3 版本 - [[#7249](https://github.com/apache/incubator-seata/pull/7249)] 升级 axios 至 1.8.2 版本 ### test: - [[#7092](https://github.com/apache/incubator-seata/pull/7092)] 修复NacosMockTest测试方法并行导致测试结果被干扰失败的问题 - [[#7098](https://github.com/apache/incubator-seata/pull/7098)] 增加 `seata-common` 模块的测试用例 - [[#7160](https://github.com/apache/incubator-seata/pull/7160)] 在 LowerCaseLinkHashMapTest 中重构测试,以使用参数化单元测试 - [[#7167](https://github.com/apache/incubator-seata/pull/7167)] 重构了 DurationUtilTest 中的测试,以简化并使用参数化单元测试 - [[#7189](https://github.com/apache/incubator-seata/pull/7189)] 修复saga测试用例运行异常 - [[#7197](https://github.com/apache/incubator-seata/pull/7197)] 为 config 模块添加 UT 测试用例 - [[#7199](https://github.com/apache/incubator-seata/pull/7199)] 增加 client processor 单测用例 - [[#7203](https://github.com/apache/incubator-seata/pull/7203)] 重构了 rm.datasource.sql.Druid 和 seata-sqlparser-druid 模块中的测试 - [[#7221](https://github.com/apache/incubator-seata/pull/7221)] 增加 gRPC Encoder/Decoder的测试用例 - [[#7227](https://github.com/apache/incubator-seata/pull/7227)] 为 seata-discovery-consul 增加mock测试 - [[#7233][https://github.com/apache/incubator-seata/pull/7233]] 增加对 seata-discovery-etcd3 的mock测试 - [[#7243](https://github.com/apache/incubator-seata/pull/7243)] 增加对 seata-discovery-eureka的单测 - [[#7255](https://github.com/apache/incubator-seata/pull/7255)] 补充更多seata-discovery-eureka模块的单测提高覆盖率 ### refactor: - [[#7145](https://github.com/apache/incubator-seata/pull/7145)] 重构不满足 license 要求的代码 - [[#7236](https://github.com/apache/incubator-seata/pull/7236)] 将 org.apache.seata.server.storage.raft.sore 中的文件夹名称从 sore 更改为 store 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [lyl2008dsg](https://github.com/lyl2008dsg) - [remind](https://github.com/remind) - [xjlgod](https://github.com/xjlgod) - [lightClouds917](https://github.com/lightClouds917) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [PeppaO](https://github.com/PeppaO) - [funky-eyes](https://github.com/funky-eyes) - [MaoMaoandSnail](https://github.com/MaoMaoandSnail) - [psxjoy](https://github.com/psxjoy) - [xiaoxiangyeyu0](https://github.com/xiaoxiangyeyu0) - [wxrqforever](https://github.com/wxrqforever) - [xingfudeshi](https://github.com/xingfudeshi) - [YongGoose](https://github.com/YongGoose) - [Monilnarang](https://github.com/Monilnarang) - [iAmClever](https://github.com/iAmClever) - [s-ramyalakshmi](https://github.com/s-ramyalakshmi) - [YoWuwuuuw](https://github.com/YoWuwuuuw) - [AndrewSf](https://github.com/andrewseif) - [bigcyy](https://github.com/bigcyy) - [wjwang00](https://github.com/wjwang00) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。
================================================ FILE: changes/zh-cn/2.5.0.md ================================================ 所有提交到 2.x 分支的 PR 请在此处登记。 ### feature: - [[#7261](https://github.com/apache/incubator-seata/pull/7261)] 强制进行账户初始化并禁用默认凭据 - [[#7451](https://github.com/apache/incubator-seata/pull/7451)] seata-server支持HTTP/2协议 - [[#7496](https://github.com/apache/incubator-seata/pull/7496)] 添加对oceanbase数据库oracle模式的支持 ### bugfix: - [[#7349](https://github.com/apache/incubator-seata/pull/7349)] 解决 EtcdRegistryServiceImplMockTest 中的空指针异常 - [[#7354](https://github.com/apache/incubator-seata/pull/7354)] 修复lib文件夹中的驱动程序无法加载 - [[#7356](https://github.com/apache/incubator-seata/pull/7356)] 修复 codecov 错误 - [[#7370](https://github.com/apache/incubator-seata/pull/7370)] 修复 ISSUE_TEMPLATE 不可用 - [[#7397](https://github.com/apache/incubator-seata/pull/7397)] 解决空指针和端口绑定错误 - [[#7502](https://github.com/apache/incubator-seata/pull/7502)] 删除多余点号和保持命名规范统一 - [[#7498](https://github.com/apache/incubator-seata/pull/7498)] 修复fury反序列化的类名白名单检查问题 - [[#7504](https://github.com/apache/incubator-seata/pull/7504)] 修复 Hikari 中的加载驱动程序类 - [[#7529](https://github.com/apache/incubator-seata/pull/7529)] 修复多注册中心下server不会向namingserver发送心跳的问题 - [[#7546](https://github.com/apache/incubator-seata/pull/7546)] 修复客户端spring版本兼容 ### optimize: - [[#7270](https://github.com/apache/incubator-seata/pull/7270)] 增强 ci 配置 - [[#7282](https://github.com/apache/incubator-seata/pull/7282)] 优化FileRegistryServiceImpl类lookup的NullPointerException问题 - [[#7310](https://github.com/seata/seata/pull/7310)] 优化naming-server中的一些小问题 - [[#7329](https://github.com/apache/incubator-seata/pull/7329)] 将 tomcat 升级到 9.0.100 - [[#7346](https://github.com/apache/incubator-seata/pull/7346)] 去除springweb改为复用事务端口多协议支持http - [[#7344](https://github.com/apache/incubator-seata/pull/7344)] raft模式提前检查事务大小 - [[#7343](https://github.com/apache/incubator-seata/pull/7343)] 将 tomcat 升级至 9.0.104 - [[#7337](https://github.com/apache/incubator-seata/pull/7337)] 添加 ChannelEventListener 支持以防止内存泄漏 - [[#7344](https://github.com/apache/incubator-seata/pull/7344)] raft模式提前检查事务大小 - [[#7345](https://github.com/apache/incubator-seata/pull/7345)] 为 RegistryFactory 增加空校验与重复类型检查 - [[#7350](https://github.com/apache/incubator-seata/pull/7350)] 优化单测覆盖配置 - [[#7360](https://github.com/apache/incubator-seata/pull/7360)] 更新通道断开连接时的资源清理逻辑 - [[#7363](https://github.com/apache/incubator-seata/pull/7363)] 升级 npmjs 依赖项 - [[#7372](https://github.com/apache/incubator-seata/pull/7372)] 改进忽略许可证标头检查 - [[#7375](https://github.com/apache/incubator-seata/pull/7375)] 优化 discovery 模块的 close 方法 - [[#7388](https://github.com/apache/incubator-seata/pull/7388)] 优化二进制打包目录结构 - [[#7412](https://github.com/apache/incubator-seata/pull/7412)] 适配新版本 Seata 的 Helm 模板 - [[#7414](https://github.com/apache/incubator-seata/pull/7414)] 移除 NettyClientBootstrap 中 defaultEventExecutorGroup - [[#7415](https://github.com/apache/incubator-seata/pull/7415)] 使用线程池异步处理server http请求 - [[#7418](https://github.com/apache/incubator-seata/pull/7418)] 添加 jackson notice - [[#7419](https://github.com/apache/incubator-seata/pull/7419)] 添加 Maven 配置文件以支持源码打包 - [[#7428](https://github.com/apache/incubator-seata/pull/7428)] 修改 pmd-check 输出日志为 ERROR 级别 - [[#7430](https://github.com/apache/incubator-seata/pull/7430)] 在netty-http-server中增加了对解析@RequestParam注释的支持 - [[#7445](https://github.com/apache/incubator-seata/pull/7432)] 分离license到server和namingserver - [[#7426](https://github.com/apache/incubator-seata/pull/7426)] 添加 license header - [[#7450](https://github.com/apache/incubator-seata/pull/7450)] 将 Spotless 应用于整个代码库 - [[#7456](https://github.com/apache/incubator-seata/pull/7456)] Druid SQL 解析器因不支持的 REPLACE 语句而抛出 ParserException - [[#7466](https://github.com/apache/incubator-seata/pull/7466)] 在 issue 模板中添加贡献意向勾选框 - [[#7478](https://github.com/apache/incubator-seata/pull/7478)] 增加处于重试状态的数据采集 - [[#7483](https://github.com/apache/incubator-seata/pull/7483)] 将retryDeadThreshold改为70秒 - [[#7518](https://github.com/apache/incubator-seata/pull/7518)] 避免在 ChannelEventHandlerIntegrationTest 中使用不稳定的 API - [[#7530](https://github.com/apache/incubator-seata/pull/7530)] 优化druid 1.2.12 ci - [[#7391](https://github.com/apache/incubator-seata/pull/7530)] 优化tomcat的9.0.105 - [[#7390](https://github.com/apache/incubator-seata/pull/7530)] 优化license header checker - [[#7389](https://github.com/apache/incubator-seata/pull/7530)] 修复 js resource missing license header - [[#7536](https://github.com/apache/incubator-seata/pull/7536)] 优化druid 1.2.12 ci流水 ### test: - [[#7092](https://github.com/apache/incubator-seata/pull/7092)] 修复NacosMockTest测试方法并行导致测试结果被干扰失败的问题 - [[#7098](https://github.com/apache/incubator-seata/pull/7098)] 增加 `seata-common` 模块的测试用例 - [[#7160](https://github.com/apache/incubator-seata/pull/7160)] 在 LowerCaseLinkHashMapTest 中重构测试,以使用参数化单元测试 - [[#7167](https://github.com/apache/incubator-seata/pull/7167)] 重构了 DurationUtilTest 中的测试,以简化并使用参数化单元测试 - [[#7189](https://github.com/apache/incubator-seata/pull/7189)] 修复saga测试用例运行异常 - [[#7197](https://github.com/apache/incubator-seata/pull/7197)] 为 config 模块添加 UT 测试用例 - [[#7199](https://github.com/apache/incubator-seata/pull/7199)] 增加 client processor 单测用例 - [[#7203](https://github.com/apache/incubator-seata/pull/7203)] 重构了 rm.datasource.sql.Druid 和 seata-sqlparser-druid 模块中的测试 - [[#7221](https://github.com/apache/incubator-seata/pull/7221)] 增加 gRPC Encoder/Decoder的测试用例 - [[#7227](https://github.com/apache/incubator-seata/pull/7227)] 为 seata-discovery-consul 增加mock测试 - [[#7233](https://github.com/apache/incubator-seata/pull/7233)] 增加对 seata-discovery-etcd3 的mock测试 - [[#7243](https://github.com/apache/incubator-seata/pull/7243)] 增加对 seata-discovery-eureka的单测 - [[#7255](https://github.com/apache/incubator-seata/pull/7255)] 补充更多seata-discovery-eureka模块的单测提高覆盖率 - [[#7286](https://github.com/apache/incubator-seata/pull/7286)] 重构了 RaftSyncMessageTest 中的 testMsgSerialize 测试,通过拆分为两个独立测试以简化逻辑 - [[#7287](https://github.com/apache/incubator-seata/pull/7287)] 重构了 CodeTest 中的 testGetErrorMsgWithValidCodeReturnsExpectedMsg 测试,以简化并使用参数化单元测试。 - [[#7288](https://github.com/apache/incubator-seata/pull/7288)] 重构了 CodeTest 中的 testSetCodeAndMsgUpdatesValuesCorrectly 测试,以简化并使用参数化单元测试。 - [[#7294](https://github.com/apache/incubator-seata/pull/7294)] 重构了 SqlServerInsertRecognizerTest 中的 testGetInsertParamsValue 测试,通过拆分并使用参数化单元测试进行改进 - [[#7295](https://github.com/apache/incubator-seata/pull/7295)] 重构了 StringUtilsTest 中的 3 个测试,改为使用参数化单元测试 - [[#7205](https://github.com/apache/incubator-seata/issues/7205)] 为 namingserver module 添加单元测试 - [[#7359](https://github.com/apache/incubator-seata/issues/7359)] 合并所有模块的单测报告,准确显示单测覆盖度 - [[#7423](https://github.com/apache/incubator-seata/pull/7423)] 为 org.apache.seata.spring.annotation.scannercheckers 添加单元测试 - [[#7420](https://github.com/apache/incubator-seata/pull/7420)] 为 RemotingFactoryBeanParser 类添加了单元测试 - [[#7379](https://github.com/apache/incubator-seata/issues/7379)] 为 TccAnnotationProcessor 添加了单元测试 - [[#7422](https://github.com/apache/incubator-seata/pull/7422)] 为 seata-spring-boot-starter 添加了测试 - [[#7433](https://github.com/apache/incubator-seata/pull/7433)] 增加对 GlobalTransactionScanner 添加了测试 - [[#7436](https://github.com/apache/incubator-seata/pull/7436)] 修复namingserver 单测错误 - [[#7435](https://github.com/apache/incubator-seata/pull/7435)] 为测试中的动态服务器端口分配添加通用测试配置 - [[#7432](https://github.com/apache/incubator-seata/pull/7432)] 使用Maven Profile按条件引入Test模块 - [[#7442](https://github.com/apache/incubator-seata/pull/7442)] 增加 saga compatible 模块单测 - [[#7457](https://github.com/apache/incubator-seata/pull/7457)] 增加 rm 模块的单测 - [[#7464](https://github.com/apache/incubator-seata/pull/7464)] 增加 gRPC 模块的单测 - [[#7468](https://github.com/apache/incubator-seata/pull/7468)] 为 SupportSqlWhereMethod 类添加 UT - [[#7501](https://github.com/apache/incubator-seata/pull/7501)] 补充Fury的单元测试用例 - [[#7528](https://github.com/apache/incubator-seata/pull/7528)] 修复 spring-boot-starter 模块的单测失败问题 - [[#7275](https://github.com/apache/incubator-seata/pull/7275)] 添加rm数据源的单测 - [[#7321](https://github.com/apache/incubator-seata/pull/7321)] 添加apm-seata-skywalking-plugin的单测 - [[#7400](https://github.com/apache/incubator-seata/pull/7400)] 添加SpringProxyUtils and OrderUtils的单侧 - [[#7385](https://github.com/apache/incubator-seata/pull/7385)] 删除watch API的HttpServletRequest ### refactor: - [[#7315](https://github.com/apache/incubator-seata/pull/7315)] 重构日志测试,使用ListAppender实现更准确高效的日志捕获 - [[#7461](https://github.com/apache/incubator-seata/pull/7461)] 重构 server netty 配置改为使用 CONFIG 格式 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [Monilnarang](https://github.com/Monilnarang) - [xingfudeshi](https://github.com/xingfudeshi) - [wjwang00](https://github.com/wjwang00) - [YongGoose](https://github.com/YongGoose) - [JisoLya](https://github.com/JisoLya) - [YoWuwuuuw](https://github.com/YoWuwuuuw) - [PleaseGiveMeTheCoke](https://github.com/PleaseGiveMeTheCoke) - [funky-eyes](https://github.com/funky-eyes) - [xucq07](https://github.com/xucq07) - [PengningYang](https://github.com/PengningYang) - [WangzJi](https://github.com/WangzJi) - [maple525866](https://github.com/maple525866) - [YvCeung](https://github.com/YvCeung) - [jsbxyyx](https://github.com/jsbxyyx) - [simzyoo](https://github.com/simzyoo) - [diguage](https://github.com/diguage) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [xxsc0529](https://github.com/xxsc0529) - [xjlgod](https://github.com/xjlgod) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 ================================================ FILE: changes/zh-cn/2.6.0.md ================================================ 所有提交到 2.x 分支的 PR 请在此处登记。 ### feature: - [[#7485](https://github.com/apache/incubator-seata/pull/7485)] 给seata-server端的http请求添加过滤器 - [[#7509](https://github.com/apache/incubator-seata/pull/7509)] 复用连接合并分支事务 - [[#7492](https://github.com/apache/incubator-seata/pull/7492)] 升级 common 模块中的 HTTP 客户端以支持 HTTP/2 - [[#7503](https://github.com/apache/incubator-seata/pull/7503)] 支持fory序列化 - [[#7551](https://github.com/apache/incubator-seata/pull/7551)] XAUtils支持达梦数据库 - [[#7559](https://github.com/apache/incubator-seata/pull/7559)] 为 TableMetaRefreshHolder 实例引入清理 API - [[#7669](https://github.com/apache/incubator-seata/pull/7669)] 添加对 Jackson 序列化和反序列化 PostgreSQL 数组类型的支持 - [[#7664](https://github.com/apache/incubator-seata/pull/7565)] 支持神通数据库的XA模式 - [[#7675](https://github.com/apache/incubator-seata/pull/7675)] 支持Oracle批量插入 - [[#7663](https://github.com/apache/incubator-seata/pull/7663)] 支持java25版本的CI流水线 - [[#7851](https://github.com/apache/incubator-seata/pull/7851)] 控制台支持事务分组管理能力 - [[#7857](https://github.com/apache/incubator-seata/pull/7857)] 控制台支持集群信息展示 - [[#7826](https://github.com/apache/incubator-seata/pull/7826)] 在 Server Raft 模式下,为 Watch API 提供对 HTTP/2 响应处理的支持 - [[#7863](https://github.com/apache/incubator-seata/pull/7863)] JDK25以下workflow不构建naming server和console模块 - [[#7870](https://github.com/apache/incubator-seata/pull/7870)] 将namingserver和console模块升级到JDK 25和SpringBoot 3.5, 并在console模块中添加spring-ai依赖。 - [[#7872](https://github.com/apache/incubator-seata/pull/7872)] 根据当前内存值自动计算 JVM 参数 - [[#7876](https://github.com/apache/incubator-seata/pull/7876)] feature: 添加MCP服务自定义配置属性和鉴权功能 - [[#7878](https://github.com/apache/incubator-seata/pull/7878)] 控制台支持raft集群模式的事务分组管理 - [[#7893](https://github.com/apache/incubator-seata/pull/7893)] 添加全局和分支事务及锁管理MCP工具 ### bugfix: - [[#7471](https://github.com/apache/seata/issues/7471)] 修复SerialArray equals()方法在二阶段回滚中多维数组比较的问题 - [[#7482](https://github.com/apache/incubator-seata/pull/7482)] Github Action 工作流未运行相应的 Kotlin 测试 - [[#7538](https://github.com/apache/incubator-seata/pull/7538)] 统一DmdbTimestamp比较方式,通过UTC比较,以防止回滚失败 - [[#7546](https://github.com/seata/seata/pull/7546)] 修复客户端spring版本兼容 - [[#7505](https://github.com/apache/incubator-seata/pull/7505)] 通过使用 reconnectExecutor 异步释放 channel,防止阻塞 Netty I/O 线程 - [[#7563](https://github.com/apache/incubator-seata/pull/7563)] 修复在未开启服务端过滤器的状态下导致的过滤器链空指针异常 - [[#7570](https://github.com/apache/incubator-seata/pull/7570)] 修复 GlobalTransactionalInterceptorHandler 中的 order() 方法行为,确保拦截器的正确排序 - [[#7596](https://github.com/apache/incubator-seata/pull/7596)] 修复xss过滤器获取默认关键字时反序列化失败的问题 - [[#7613](https://github.com/apache/incubator-seata/pull/7613)] 修复全局锁查询中的datetime时间格式时间查询sql错误 - [[#7622](https://github.com/seata/seata/pull/7622)] 调整org.apache.seata.saga.rm.SagaResourceManage加载顺序 - [[#7624](https://github.com/apache/incubator-seata/pull/7624)] 修复yml配置文件中对于整数的兼容问题 - [[#7644](https://github.com/apache/incubator-seata/pull/7644)] 修复JAVA25时spotless的兼容性问题 - [[#7662](https://github.com/apache/incubator-seata/pull/7662)] 确保 rm 的可见性,并且 MockTest 中的方法按顺序执行 - [[#7683](https://github.com/apache/incubator-seata/pull/7683)] 重写 XABranchXid的equals和hashCode,解决mysql driver内存泄漏问题 - [[#7643](https://github.com/apache/incubator-seata/pull/7643)] 修复 DM 事务回滚不使用数据库自动增量主键 - [[#7708](https://github.com/apache/incubator-seata/pull/7708)] 使用xaActive判断xaResource是否需要执行end方法 - [[#7747](https://github.com/apache/incubator-seata/pull/7747)] 支持undo_log序列名动态推导 - [[#7749](https://github.com/apache/incubator-seata/pull/7749)] 修复 Http2HttpHandler 解析 application/x-www-form-urlencoded 请求失败的问题 - [[#7761](https://github.com/apache/incubator-seata/pull/7761)] 对 Byte[] 类型进行了特殊处理,以确保主键值正确 - [[#7771](https://github.com/apache/incubator-seata/pull/7771)] 确保神通XA模式相同的事务使用相同的XAConnection - [[#7785](https://github.com/apache/incubator-seata/pull/7785)] 修复失败的测试方法 - [[#7796](https://github.com/apache/incubator-seata/pull/7796)] 修复 Consul 监听器空值 NPE 问题 - [[#7839](https://github.com/apache/incubator-seata/pull/7839)] 解决TransactionAutoConfiguration与Spring Boot 4.x的兼容性问题 - [[#7843](https://github.com/apache/incubator-seata/pull/7843)] 修复 Dm/KingbaseTableMetaCache 中的索引类型误判问题 - [[#7856](https://github.com/apache/incubator-seata/pull/7856)] 修复package.json中min-document的逗号缺失 - [[#7860](https://github.com/apache/incubator-seata/pull/7860)] 修复 RocketMQ 事务中延迟消息静默失效的问题,改为显式抛出异常 - [[#7879](https://github.com/apache/incubator-seata/pull/7879)] 修正服务器端口与命名服务器端口 - [[#7881](https://github.com/apache/incubator-seata/pull/7881)] 修复了除mysql之外其他数据库的sql文件关于vgroup_table的表,使用三列唯一索引以保证容灾迁移高可用 - [[#7891](https://github.com/apache/incubator-seata/pull/7891)] 修复raft重选举与心跳并发时可能导致namingserver侧的元数据存在多个leader - [[#7908](https://github.com/apache/incubator-seata/pull/7908)] 在 PostgreSQL 主键中处理带时区的时间戳 - [[#7938](https://github.com/apache/incubator-seata/pull/7938)] 保证Jakarta相关包路径正确 - [[#7959](https://github.com/apache/incubator-seata/pull/7959)] 修复consoleApiService bean未加载的问题 - [[#7966](https://github.com/apache/incubator-seata/pull/7966)] 修复dm和kingbase中因列顺序不同导致索引未被识别为主键索引的问题 ### optimize: - [[#7460](https://github.com/apache/incubator-seata/pull/7460)] 移除 core 模块测试类中的硬编码端口配置 - [[#7478](https://github.com/apache/incubator-seata/pull/7484)] 删除client id指标 - [[#7557](https://github.com/seata/seata/pull/7557)] 升级 npmjs 依赖 - [[#7576](https://github.com/seata/seata/pull/7576)] 针对配置变更增加空推保护 - [[#7577](https://github.com/seata/seata/pull/7577)] 去除zstd解压时4MB的限制 - [[#7591](https://github.com/seata/seata/pull/7591)] 当没有显式配置xssFilter相关的配置时,优化获取默认配置的逻辑 - [[#7608](https://github.com/seata/seata/pull/7608)] 修改refreshToken方法中的参数名称 - [[#7603](https://github.com/seata/seata/pull/7603)] 将Apache Tomcat依赖项从9.0.106升级到9.0.108 - [[#7614](https://github.com/seata/seata/pull/7614)] 更新 README.md - [[#7443](https://github.com/seata/seata/pull/7443)] 将saga注释模式中的@LocalTCC替换为@SagaTransactional - [[#7645](https://github.com/seata/seata/pull/7645)] 简化相关的 transport.* 配置项类型 - [[#7668](https://github.com/seata/seata/pull/7668)] 优化DeflaterUtil变量名称 - [[#7673](https://github.com/apache/incubator-seata/pull/7673)] 升级 @babel/runtime ^7.26.10 到 ^7.27.0 - [[#7689](https://github.com/apache/incubator-seata/pull/7689)] 优化 source release - [[#7711](https://github.com/apache/incubator-seata/pull/7711)] 添加 fastjson 对 PostgreSQL 数组类型的序列化和反序列化的支持 - [[#7722](https://github.com/apache/incubator-seata/pull/7722)] 优化 SerializerType 枚举含义 - [[#7739](https://github.com/apache/incubator-seata/pull/7739)] 优化 docker 镜像构建 - [[#7741](https://github.com/apache/incubator-seata/pull/7741)] 支持发布基于JDK 25的镜像 - [[#7743](https://github.com/seata/seata/pull/7743)] 将 Apache Tomcat 依赖项从 9.0.108 升级到 9.0.109 - [[#7740](https://github.com/apache/incubator-seata/pull/7740)] 优化http工具类使之支持h2c协议 - [[#7744](https://github.com/apache/incubator-seata/pull/7744)] 将 Apache Tomcat 依赖项从 9.0.109 升级到 9.0.110 - [[#7751](https://github.com/apache/incubator-seata/pull/7751)] 移除无用依赖 - [[#7807](https://github.com/apache/incubator-seata/pull/7807)] 支持 mariadb 3.x - [[#7781](https://github.com/apache/incubator-seata/pull/7781)] 高亮 pmd 检查日志信息 - [[#7704](https://github.com/apache/incubator-seata/pull/7704)] 修复前端依赖漏洞 - [[#7710](https://github.com/apache/incubator-seata/pull/7710)] 修复语法拼写错误 - [[#7721](https://github.com/apache/incubator-seata/pull/7721)] 优化common 模块 - [[#7768](https://github.com/apache/incubator-seata/pull/7768)] 优化 docker 镜像构建 - [[#7809](https://github.com/apache/incubator-seata/pull/7809)] 优化 README.md - [[#7813](https://github.com/apache/incubator-seata/pull/7813)] 增加解码buffer限制 - [[#7822](https://github.com/apache/incubator-seata/pull/7822)] 在 HTTP 线程上下文中添加请求和响应对象 - [[#7829](https://github.com/apache/incubator-seata/pull/7829)] 优化lz4 compressor - [[#7864](https://github.com/apache/incubator-seata/pull/7864)] 自动跳过JDK<25环境下的console和namingserver模块编译 - [[#7867](https://github.com/apache/incubator-seata/pull/7867)] 优化全局事务注解支持非private修饰符方法 - [[#7868](https://github.com/apache/incubator-seata/pull/7868)] 将build_arm64-binary的CI更改为JDK25版本,并运行于ubuntu-24.04-arm - [[#7873](https://github.com/apache/incubator-seata/pull/7873)] 将Jacoco插件版本从0.8.7升级到0.8.14以适配JDK25 - [[#7885](https://github.com/apache/incubator-seata/pull/7885)] 替换 fury 至 fory - [[#7884](https://github.com/apache/incubator-seata/pull/7884)] 将 tomcat-embed-core 版本升级到 11.0.10 - [[#7888](https://github.com/apache/incubator-seata/pull/7888)] 升级namingserver模块org.apache.tomcat.embed:tomcat-embed-core - [[#7889](https://github.com/apache/incubator-seata/pull/7889)] 升级console模块org.apache.tomcat.embed:tomcat-embed-core - [[#7894](https://github.com/apache/incubator-seata/pull/7894)] 优化saga模块中的方法名和类名 - [[#7905](https://github.com/apache/incubator-seata/pull/7905)] 优化README文档 - [[#7909](https://github.com/apache/incubator-seata/pull/7909)] 在控制台配置文件中为namingserver地址配置添加注释 - [[#7913](https://github.com/apache/incubator-seata/pull/7913)] 移除 @author 信息 - [[#7931](https://github.com/apache/incubator-seata/pull/7931)] 固定namingserver和console的spring版本 - [[#7942](https://github.com/apache/incubator-seata/pull/7942)] 升级jib-maven-plugin版本和提高ci并行度 - [[#7935](https://github.com/apache/incubator-seata/pull/7935)] 添加 OkHttp 和 MockWebServer 依赖来解决版本冲突 ### security: - [[#7632](https://github.com/apache/incubator-seata/pull/7632)] 升级sha.js为2.4.12 - [[#7633](https://github.com/apache/incubator-seata/pull/7633)] 升级cipher-base为1.0.6 - [[#7716](https://github.com/apache/incubator-seata/pull/7716)] 升级 commons-lang 为 3.18.0 - [[#7699](https://github.com/apache/incubator-seata/pull/7699)] 升级axios到1.12.2 - [[#7845](https://github.com/apache/incubator-seata/pull/7845)] 升级node-forge到1.3.2以上 - [[#7849](https://github.com/apache/incubator-seata/pull/7849)] 升级min-document到2.19.1以上 - [[#7847](https://github.com/apache/incubator-seata/pull/7847)] 升级js-yaml到3.14.2, 4.1.1以上 ### test: - [[#7635](https://github.com/apache/incubator-seata/pull/7635)] 修正 JUnit 5 测试方法的访问修饰符及注解使用规范 - [[#7541](https://github.com/seata/seata/pull/7541)] 修复 jakarta 依赖在 jdk17+ 单测失败问题 - [[#7540](https://github.com/seata/seata/pull/7540)] 修复mock server端口冲突问题 - [[#7578](https://github.com/seata/seata/pull/7578)] zstd解压由jni改为ZstdInputStream - [[#7580](https://github.com/seata/seata/pull/7580)] 修复测试用例顺序错乱导致的异常 - [[#7584](https://github.com/seata/seata/pull/7584)] 修复 ConsulConfigurationTest#testInitSeataConfig 在 CI 中由于等待/重试时间过短导致的不稳定问题 - [[#7610](https://github.com/apache/incubator-seata/pull/7610)] 当nacosCaseEnabled为true时启用nacos集成测试 - [[#7672](https://github.com/apache/incubator-seata/pull/7672)] 增加 `seata-common` 模块的测试用例 - [[#7679](https://github.com/apache/incubator-seata/pull/7679)] 修复旧版本协议测试超时问题 - [[#7638](https://github.com/apache/incubator-seata/pull/7638)] 增加了 `seata-common` 模块的测试用例,删去了一个todo - [[#7709](https://github.com/apache/incubator-seata/pull/7709)] 为dm模块增加单测 - [[#7725](https://github.com/apache/incubator-seata/pull/7725)] 为compressor模块增加单测 - [[#7718](https://github.com/apache/incubator-seata/pull/7718)] 为config模块增加单测 - [[#7723](https://github.com/apache/incubator-seata/pull/7723)] 添加 fastjson2 的 UT 来测试 PostgreSQL 数组类型 - [[#7731](https://github.com/apache/incubator-seata/pull/7731)] 为rm.fence模块添加单测 - [[#7737](https://github.com/apache/incubator-seata/pull/7737)] 为 DefaultResourceManager 和 ClusterWatcherManager 添加测试方法 - [[#7757](https://github.com/apache/incubator-seata/pull/7757)] 为 undo 模块添加单测 - [[#7763](https://github.com/apache/incubator-seata/pull/7763)] 为 RegistryNamingServerProperties 和 RegistryMetadataProperties 添加单测 - [[#7764](https://github.com/apache/incubator-seata/pull/7764)] 为 server/coordinator 模块添加单测 - [[#7777](https://github.com/apache/incubator-seata/pull/7777)] 为 seata-saga-statelang 模块添加单测 - [[#7776](https://github.com/apache/incubator-seata/pull/7776)] 为 XA 模块添加单测 - [[#7788](https://github.com/apache/incubator-seata/pull/7788)] 为 rm-datasource 模块添加单测 - [[#7774](https://github.com/apache/incubator-seata/pull/7774)] 为 server/console 模块添加单测 - [[#7767](https://github.com/apache/incubator-seata/pull/7767)] 为 server/cluster 模块添加单测 - [[#7750](https://github.com/apache/incubator-seata/pull/7750)] 为 server 模块添加单测 - [[#7733](https://github.com/apache/incubator-seata/pull/7733)] 为 core 模块添加单测 - [[#7728](https://github.com/apache/incubator-seata/pull/7728)] 为 compatible 模块添加单测 - [[#7727](https://github.com/apache/incubator-seata/pull/7727)] 为 compatible 模块添加单测 - [[#7803](https://github.com/apache/incubator-seata/pull/7803)] 修复 `DataCompareUtilsTest` 中因键迭代顺序不稳定导致的测试用例间歇性失败问题。 - [[#7804](https://github.com/apache/incubator-seata/pull/7804)] 修复 testXARollbackWithResourceLock() 以确保 CI 正常运行 - [[#7779](https://github.com/apache/incubator-seata/pull/7779)] 提高 RaftRegistryServiceImpl 单测覆盖 - [[#7801](https://github.com/apache/incubator-seata/pull/7801)] 修复 `JsonParserWrapTest.testToJSONString` 因字段顺序不稳定导致的测试用例间歇性失败问题 - [[#7800](https://github.com/apache/incubator-seata/pull/7800)] 修复 `StringUtilsTest.testToStringAndCycleDependency` 因反射字段顺序不稳定导致的测试用例间歇性失败问题 - [[#7802](https://github.com/apache/incubator-seata/pull/7802)] 修复 `ConnectionContextProxyTest` 中锁键顺序不稳定导致的测试用例间歇性失败问题。 - [[#7808](https://github.com/apache/incubator-seata/pull/7808)] 修复多个 Insert Executor 单测中因主键值比较顺序导致的间歇性失败问题 - [[#7815](https://github.com/apache/incubator-seata/pull/7815)] 通过合并测试来修复,避免因执行顺序导致的失败 - [[#7819](https://github.com/apache/incubator-seata/pull/7819)] 修复RpcStatus单测失败问题 - [[#7827](https://github.com/apache/incubator-seata/pull/7827)] 修复 TableMetaTest 中因主键名称列表顺序不稳定导致的单测间歇性失败问题 - [[#7859](https://github.com/apache/incubator-seata/pull/7859)] 修复 `MetadataTest` 因共享状态与依赖 `toString()` 输出不稳定导致的测试用例间歇性失败问题 - [[#7858](https://github.com/apache/incubator-seata/pull/7858)] 修复 `HttpTest.convertParamOfJsonStringTest` 因 Map 遍历顺序不确定导致的测试用例间歇性失败问题 - [[#7874](https://github.com/apache/incubator-seata/pull/7874)] DBType和RedisKeyConstants增加单元测试 - [[#7900](https://github.com/apache/incubator-seata/pull/7900)] ConnectionContext增加单元测试 - [[#7901](https://github.com/apache/incubator-seata/pull/7901)] LockStatus, MessageType, ProtocolConstants增加单元测试 - [[#7906](https://github.com/apache/incubator-seata/pull/7906)] Fury/Fory 增加单元测试 - [[#7907](https://github.com/apache/incubator-seata/pull/7907)] test: 修复ZkConfigurationTest的时序问题导致的ci错误 - [[#7912](https://github.com/apache/incubator-seata/pull/7912)] test: 添加 Antlr 测试以提高测试覆盖率 - [[#7933](https://github.com/apache/incubator-seata/pull/7933)] oscar数据库测试用例仅运行在druid大于等于1.2.5版本 ### refactor: - [[#7615](https://github.com/seata/seata/pull/7615)] 重构 DataSourceProxy - [[#7617](https://github.com/seata/seata/pull/7617)] 重构 Alibaba Dubbo 和 HSF 模块 - [[#7719](https://github.com/apache/incubator-seata/pull/7719)] 替换 AbstractNettyRemotingClient 中的 synchronized 为 ReentrantLock,以支持虚拟线程 - [[#7688](https://github.com/seata/seata/pull/7688)] 增加 extensions 模块 - [[#7789](https://github.com/apache/incubator-seata/pull/7789)] 将 `GROUP_UPDATE_TIME` 重命名为 `GROUP_UPDATE_TERM`,更准确地反映其实际用途 - [[#7698](https://github.com/apache/incubator-seata/pull/7698)] 重构 test 模块 - [[#7818](https://github.com/apache/incubator-seata/pull/7818)] 增加HTTP过滤器链 - [[#7904](https://github.com/apache/incubator-seata/pull/7904)] 统一http客户端工具类为okhttp3 ### doc: - [[#7462](https://github.com/seata/seata/pull/7462)] 完善 TM 模块的 Javadoc,补充全面的英文文档说明。 - [[#7531](https://github.com/seata/seata/pull/7531)] 优化 Readme 和 change 文档 - [[#7571](https://github.com/seata/seata/pull/7571)] 在拉取请求模板中添加 CONTRIBUTING.md 超链接 - [[#7605](https://github.com/apache/incubator-seata/pull/7605)] 在application.yml中增加了seata作为注册中心的注释 - [[#7625](https://github.com/apache/incubator-seata/pull/7625)] 改进 @EnableAutoDataSourceProxy 和 DefaultFailureHandlerImpl 的 Javadoc - [[#7702](https://github.com/apache/incubator-seata/pull/7702)] 修复 JavaDoc 中的语法错误 将 "whether use" 改为 "whether to use" 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [YvCeung](https://github.com/YvCeung) - [xjlgod](https://github.com/xjlgod) - [YongGoose](https://github.com/YongGoose) - [KoKimSS](https://github.com/KoKimSS) - [maple525866](https://github.com/maple525866) - [funky-eyes](https://github.com/funky-eyes) - [keepConcentration](https://github.com/keepConcentration) - [sunheyi6](https://github.com/sunheyi6) - [WangzJi](https://github.com/WangzJi) - [unifolio0](https://github.com/unifolio0) - [Asuka-star](https://github.com/Asuka-star) - [contrueCT](https://github.com/contrueCT) - [YoWuwuuuw](https://github.com/YoWuwuuuw) - [yougecn](https://github.com/yougecn) - [jongmin-chung](https://github.com/jongmin-chung) - [jihun4452](https://github.com/jihun4452) - [psxjoy](https://github.com/psxjoy) - [dsomehan](https://github.com/dsomehan) - [LegendPei](https://github.com/LegendPei) - [lokidundun](https://github.com/lokidundun) - [xiaoxiangyeyu0](https://github.com/xiaoxiangyeyu0) - [jsbxyyx](https://github.com/jsbxyyx) - [xingfudeshi](https://github.com/xingfudeshi) - [diguage](https://github.com/diguage) - [aias00](https://github.com/aias00) - [MaoMaoandSnail](https://github.com/MaoMaoandSnail) - [neronsoda](https://github.com/neronsoda) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 ================================================ FILE: changes/zh-cn/2.x.md ================================================ 所有提交到 2.x 分支的 PR 请在此处登记。 ### feature: - [[#7882](https://github.com/apache/incubator-seata/pull/7882)] 为NamingServer增加Metrics监控 - [[#7760](https://github.com/apache/incubator-seata/pull/7760)] 统一Jackson/fastjson序列化器 - [[#7000](https://github.com/apache/incubator-seata/pull/7000)] 支持多版本codec,修复不返回客户端注册失败消息的问题 - [[#7865](https://github.com/apache/incubator-seata/pull/7865)] 新增 Benchmark 命令行工具 - [[#7903](https://github.com/apache/incubator-seata/pull/7903)] 在Server Raft模式下支持Watch API的HTTP/2流推送 - [[#8014](https://github.com/apache/incubator-seata/pull/8014)] 为 benchmark CLI 添加 P99.9 尾延迟百分位 - [[#8002](https://github.com/apache/incubator-seata/pull/8002)] 为namingserver指标增加Grafana dashboard JSON ### bugfix: - [[#7929](https://github.com/apache/incubator-seata/pull/7929)] 修复 KingbaseUndoLogManager INSERT_UNDO_LOG_SQL 错误 - [[#7940](https://github.com/apache/incubator-seata/pull/7940)] 保证Jakarta相关包路径正确 - [[#7960](https://github.com/apache/incubator-seata/pull/7960)] 修复consoleApiService bean未加载的问题 - [[#7956](https://github.com/apache/incubator-seata/pull/7956)] 修复本地JDK17以上jacoco报告为空的问题 - [[#7965](https://github.com/apache/incubator-seata/pull/7965)] 修复在 dm 和 kingbase 中当没有将索引设置为主键索引时出现的问题 - [[#7992](https://github.com/apache/incubator-seata/pull/7992)] 修复报告分支事务状态时没有设置分支类型 ### optimize: - [[#7930](https://github.com/apache/incubator-seata/pull/7930)] 固定namingserver和console的Spring版本 - [[#7943](https://github.com/apache/incubator-seata/pull/7943)] 升级jib-maven-plugin版本和提高ci并行度 - [[#7934](https://github.com/apache/incubator-seata/pull/7934)] 添加 OkHttp 和 MockWebServer 依赖来解决版本冲突 - [[#7951](https://github.com/apache/incubator-seata/pull/7951)] 升级qs依赖版本至6.14.1 - [[#7955](https://github.com/apache/incubator-seata/pull/7955)] 将 getProperty 调用改为 resolvePlaceholders - [[#7971](https://github.com/apache/incubator-seata/pull/7971)] 升级一些依赖 - [[#7970](https://github.com/apache/incubator-seata/pull/7970)] 移除 ClusterController 中不必要的 refreshLeader 调用 - [[#8019](https://github.com/apache/incubator-seata/pull/8019)] 标记弃用的json解析器 ### security: ### test: - [[#7962](https://github.com/apache/incubator-seata/pull/7962)] 为 NacosRegistryProvider 和 NacosRegistryServiceImpl 添加单元测试用例 - [[#8003](https://github.com/apache/incubator-seata/pull/8003)] 为 NacosRegistryServiceImplTest 增加服务名称、分组和集群的额外模拟 - [[#7915](https://github.com/apache/incubator-seata/pull/7915)] 为 saga-engine 添加单元测试用例 ### refactor: - [[#7957](https://github.com/apache/incubator-seata/pull/7957)] 在 NamingServer 用 OkHttp 替换 Apache HttpClient ### doc: 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) - [contrueCT](https://github.com/contrueCT) - [lokidundun](https://github.com/lokidundun) - [LegendPei](https://github.com/LegendPei) - [funky-eyes](https://github.com/funky-eyes) - [maple525866](https://github.com/maple525866) - [neronsoda](https://github.com/neronsoda) - [aias00](https://github.com/Aias00) - [sddtc](https://github.com/sddtc) - [xingfudeshi](https://github.com/xingfudeshi) - [Sumit6307](https://github.com/Sumit6307) - [xiaoxiangyeyu0](https://github.com/xiaoxiangyeyu0) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 ================================================ FILE: codecov.yml ================================================ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. # codecov: require_ci_to_pass: true branch: 2.x coverage: status: patch: true project: default: threshold: 1% if_not_found: success changes: false precision: 2 range: "50...100" ignore: - "**/test/**" - "test/.*" - ".github/.*" - ".mvn/.*" - ".style/.*" - "**/**.md" - "distribution/.*" - "rm-datasource/src/test/java/org/apache/seata/rm/datasource/mock" - "sqlparser/seata-sqlparser-antlr/src/main/java/org/apache/seata/sqlparser/antlr/mysql/antlr/.*" - "sqlparser/seata-sqlparser-antlr/src/main/java/org/apache/seata/sqlparser/antlr/mysql/parser/.*" comment: layout: "diff,flags,files,reach" behavior: default require_changes: false ================================================ FILE: common/pom.xml ================================================ org.apache.seata seata-parent ${revision} 4.0.0 seata-common jar seata-common ${project.version} common library for Seata built with Maven io.netty netty-all org.slf4j slf4j-api org.apache.commons commons-lang3 com.fasterxml.jackson.core jackson-databind com.squareup.okhttp3 okhttp provided ================================================ FILE: common/src/main/java/org/apache/seata/common/ConfigurationKeys.java ================================================ /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.seata.common; /** * The type Configuration keys. * */ public interface ConfigurationKeys { /** * The constant SEATA_FILE_ROOT_CONFIG */ String SEATA_FILE_ROOT_CONFIG = "seata"; /** * The constant FILE_ROOT_REGISTRY. */ String FILE_ROOT_REGISTRY = "registry"; /** * The constant FILE_ROOT_CONFIG. */ String FILE_ROOT_CONFIG = "config"; /** * The constant FILE_CONFIG_SPLIT_CHAR. */ String FILE_CONFIG_SPLIT_CHAR = "."; /** * The constant FILE_ROOT_PREFIX_REGISTRY. */ String FILE_ROOT_PREFIX_REGISTRY = FILE_ROOT_REGISTRY + FILE_CONFIG_SPLIT_CHAR; /** * The constant FILE_ROOT_PREFIX_CONFIG. */ String FILE_ROOT_PREFIX_CONFIG = FILE_ROOT_CONFIG + FILE_CONFIG_SPLIT_CHAR; /** * The constant SEATA_FILE_PREFIX_ROOT_CONFIG */ String SEATA_FILE_PREFIX_ROOT_CONFIG = SEATA_FILE_ROOT_CONFIG + FILE_CONFIG_SPLIT_CHAR; /** * The constant FILE_ROOT_TYPE. */ String FILE_ROOT_TYPE = "type"; /** * The constant DATA_TYPE. */ String DATA_TYPE = "dataType"; /** * The constant SEATA_PREFIX. */ String SEATA_PREFIX = SEATA_FILE_ROOT_CONFIG + "."; /** * The constant SERVICE_PREFIX. */ String SERVICE_PREFIX = "service."; /** * The constant STORE_PREFIX. */ String STORE_PREFIX = "store."; /** * The constant SESSION_PREFIX. */ String SESSION_PREFIX = "session."; /** * The constant STORE_SESSION_PREFIX. */ String STORE_SESSION_PREFIX = STORE_PREFIX + SESSION_PREFIX; /** * The constant MODE. */ String MODE = "mode"; /** * The constant STORE_MODE. */ String STORE_MODE = STORE_PREFIX + MODE; /** * The constant SERVER_STORE_MODE. */ String SERVER_STORE_MODE = SEATA_PREFIX + STORE_PREFIX + MODE; /** * The constant STORE_LOCK_MODE. */ String STORE_LOCK_MODE = STORE_PREFIX + "lock." + MODE; /** * The constant SERVER_STORE_LOCK_MODE. */ String SERVER_STORE_LOCK_MODE = SEATA_PREFIX + STORE_PREFIX + "lock." + MODE; /** * The constant STORE_SESSION_MODE. */ String STORE_SESSION_MODE = STORE_SESSION_PREFIX + MODE; /** * The constant SERVER_STORE_SESSION_MODE. */ String SERVER_STORE_SESSION_MODE = SEATA_PREFIX + STORE_SESSION_PREFIX + MODE; /** * The constant STORE_PUBLIC_KEY. */ String STORE_PUBLIC_KEY = STORE_PREFIX + "publicKey"; /** * The constant STORE_FILE_PREFIX */ String STORE_FILE_PREFIX = STORE_PREFIX + "file."; /** * The constant STORE_FILE_DIR */ String STORE_FILE_DIR = STORE_FILE_PREFIX + "dir"; /** * The constant SERVICE_GROUP_MAPPING_PREFIX. */ String SERVICE_GROUP_MAPPING_PREFIX = SERVICE_PREFIX + "vgroupMapping."; /** * The constant GROUPLIST_POSTFIX. */ String GROUPLIST_POSTFIX = ".grouplist"; /** * The constant SERVER_NODE_SPLIT_CHAR. */ String SERVER_NODE_SPLIT_CHAR = System.getProperty("line.separator"); /** * The constant CLIENT_PREFIX. */ String CLIENT_PREFIX = "client."; /** * The constant SERVER_PREFIX. */ String SERVER_PREFIX = "server."; /** * The constant TRANSPORT_PREFIX. */ String TRANSPORT_PREFIX = "transport."; /** * The constant CLIENT_RM_PREFIX. */ String CLIENT_RM_PREFIX = CLIENT_PREFIX + "rm."; /** * The constant CLIENT_ASYNC_COMMIT_BUFFER_LIMIT. */ String CLIENT_ASYNC_COMMIT_BUFFER_LIMIT = CLIENT_RM_PREFIX + "asyncCommitBufferLimit"; /** * The constant CLIENT_RM_LOCK_PREFIX. */ String CLIENT_RM_LOCK_PREFIX = CLIENT_RM_PREFIX + "lock."; /** * The constant CLIENT_LOCK_RETRY_TIMES. */ String CLIENT_LOCK_RETRY_TIMES = CLIENT_RM_LOCK_PREFIX + "retryTimes"; /** * The constant CLIENT_LOCK_RETRY_INTERVAL. */ String CLIENT_LOCK_RETRY_INTERVAL = CLIENT_RM_LOCK_PREFIX + "retryInterval"; /** * The constant CLIENT_LOCK_RETRY_POLICY_BRANCH_ROLLBACK_ON_CONFLICT. */ String CLIENT_LOCK_RETRY_POLICY_BRANCH_ROLLBACK_ON_CONFLICT = CLIENT_RM_LOCK_PREFIX + "retryPolicyBranchRollbackOnConflict"; /** * The constant SERVICE_SESSION_RELOAD_READ_SIZE */ String SERVICE_SESSION_RELOAD_READ_SIZE = STORE_FILE_PREFIX + "sessionReloadReadSize"; /** * The constant CLIENT_REPORT_SUCCESS_ENABLE. */ String CLIENT_REPORT_SUCCESS_ENABLE = CLIENT_RM_PREFIX + "reportSuccessEnable"; /** * The constant CLIENT_SAGA_BRANCH_REGISTER_ENABLE. */ String CLIENT_SAGA_BRANCH_REGISTER_ENABLE = CLIENT_RM_PREFIX + "sagaBranchRegisterEnable"; /** * The constant CLIENT_SAGA_JSON_PARSER. */ String CLIENT_SAGA_JSON_PARSER = CLIENT_RM_PREFIX + "sagaJsonParser"; /** * The constant CLIENT_SAGA_RETRY_PERSIST_MODE_UPDATE. */ String CLIENT_SAGA_RETRY_PERSIST_MODE_UPDATE = CLIENT_RM_PREFIX + "sagaRetryPersistModeUpdate"; /** * The constant CLIENT_SAGA_COMPENSATE_PERSIST_MODE_UPDATE. */ String CLIENT_SAGA_COMPENSATE_PERSIST_MODE_UPDATE = CLIENT_RM_PREFIX + "sagaCompensatePersistModeUpdate"; /** * The constant CLIENT_REPORT_RETRY_COUNT. */ String CLIENT_REPORT_RETRY_COUNT = CLIENT_RM_PREFIX + "reportRetryCount"; /** * The constant CLIENT_TABLE_META_CHECK_ENABLE. */ String CLIENT_TABLE_META_CHECK_ENABLE = CLIENT_RM_PREFIX + "tableMetaCheckEnable"; /** * The constant CLIENT_TABLE_META_CHECKER_INTERVAL. */ String CLIENT_TABLE_META_CHECKER_INTERVAL = CLIENT_RM_PREFIX + "tableMetaCheckerInterval"; /** * The constant TCC_ACTION_INTERCEPTOR_ORDER. */ String TCC_ACTION_INTERCEPTOR_ORDER = CLIENT_RM_PREFIX + "tccActionInterceptorOrder"; /** * The constant CLIENT_TM_PREFIX. */ String CLIENT_TM_PREFIX = CLIENT_PREFIX + "tm."; /** * The constant CLIENT_TM_COMMIT_RETRY_TIMES. */ String CLIENT_TM_COMMIT_RETRY_COUNT = CLIENT_TM_PREFIX + "commitRetryCount"; /** * The constant CLIENT_TM_ROLLBACK_RETRY_TIMES. */ String CLIENT_TM_ROLLBACK_RETRY_COUNT = CLIENT_TM_PREFIX + "rollbackRetryCount"; /** * The constant DEFAULT_GLOBAL_TRANSACTION_TIMEOUT. */ String DEFAULT_GLOBAL_TRANSACTION_TIMEOUT = CLIENT_TM_PREFIX + "defaultGlobalTransactionTimeout"; /** * The constant SERIALIZE_FOR_RPC. */ String SERIALIZE_FOR_RPC = TRANSPORT_PREFIX + "serialization"; /** * The constant COMPRESSOR_FOR_RPC. * * @since 0.7.0 */ String COMPRESSOR_FOR_RPC = TRANSPORT_PREFIX + "compressor"; /** * The constant STORE_DB_PREFIX. */ String STORE_DB_PREFIX = "store.db."; /** * The constant STORE_DB_DRUID_PREFIX. */ String STORE_DB_DRUID_PREFIX = "store.db.druid."; /** * The constant STORE_DB_HIKARI_PREFIX. */ String STORE_DB_HIKARI_PREFIX = "store.db.hikari."; /** * The constant STORE_DB_DBCP_PREFIX. */ String STORE_DB_DBCP_PREFIX = "store.db.dbcp."; /** * The constant STORE_REDIS_PREFIX. */ String STORE_REDIS_PREFIX = "store.redis."; /** * The constant STORE_DB_GLOBAL_TABLE. */ String STORE_DB_GLOBAL_TABLE = STORE_DB_PREFIX + "globalTable"; /** * The constant STORE_DB_BRANCH_TABLE. */ String STORE_DB_BRANCH_TABLE = STORE_DB_PREFIX + "branchTable"; /** * The constant DISTRIBUTED_LOCK_DB_TABLE. */ String DISTRIBUTED_LOCK_DB_TABLE = STORE_DB_PREFIX + "distributedLockTable"; /** * The constant STORE_DB_DATASOURCE_TYPE. */ String STORE_DB_DATASOURCE_TYPE = STORE_DB_PREFIX + "datasource"; /** * The constant STORE_DB_TYPE. */ String STORE_DB_TYPE = STORE_DB_PREFIX + "dbType"; /** * The constant STORE_DB_DRIVER_CLASS_NAME. */ String STORE_DB_DRIVER_CLASS_NAME = STORE_DB_PREFIX + "driverClassName"; /** * The constant STORE_DB_MAX_WAIT. */ String STORE_DB_MAX_WAIT = STORE_DB_PREFIX + "maxWait"; /** * The constant STORE_DB_URL. */ String STORE_DB_URL = STORE_DB_PREFIX + "url"; /** * The constant STORE_DB_USER. */ String STORE_DB_USER = STORE_DB_PREFIX + "user"; /** * The constant STORE_DB_PASSWORD. */ String STORE_DB_PASSWORD = STORE_DB_PREFIX + "password"; /** * The constant STORE_DB_MIN_CONN. */ String STORE_DB_MIN_CONN = STORE_DB_PREFIX + "minConn"; /** * The constant STORE_DB_MAX_CONN. */ String STORE_DB_MAX_CONN = STORE_DB_PREFIX + "maxConn"; /** * The constant STORE_DB_LOG_QUERY_LIMIT. */ String STORE_DB_LOG_QUERY_LIMIT = STORE_DB_PREFIX + "queryLimit"; /** * The constant STORE_DB_DRUID_TIME_BETWEEN_EVICTION_RUNS_MILLIS. */ String STORE_DB_DRUID_TIME_BETWEEN_EVICTION_RUNS_MILLIS = STORE_DB_DRUID_PREFIX + "timeBetweenEvictionRunsMillis"; /** * The constant STORE_DB_DRUID_MIN_EVICTABLE_TIME_MILLIS. */ String STORE_DB_DRUID_MIN_EVICTABLE_TIME_MILLIS = STORE_DB_DRUID_PREFIX + "minEvictableIdleTimeMillis"; /** * The constant STORE_DB_DRUID_TEST_WHILE_IDLE. */ String STORE_DB_DRUID_TEST_WHILE_IDLE = STORE_DB_DRUID_PREFIX + "testWhileIdle"; /** * The constant STORE_DB_DRUID_TEST_ON_BORROW. */ String STORE_DB_DRUID_TEST_ON_BORROW = STORE_DB_DRUID_PREFIX + "testOnBorrow"; /** * The constant STORE_DB_DRUID_KEEP_ALIVE. */ String STORE_DB_DRUID_KEEP_ALIVE = STORE_DB_DRUID_PREFIX + "keepAlive"; /** * The constant STORE_DB_HIKARI_IDLE_TIMEOUT. */ String STORE_DB_HIKARI_IDLE_TIMEOUT = STORE_DB_HIKARI_PREFIX + "idleTimeout"; /** * The constant STORE_DB_HIKARI_KEEPALIVE_TIME. */ String STORE_DB_HIKARI_KEEPALIVE_TIME = STORE_DB_HIKARI_PREFIX + "keepaliveTime"; /** * The constant STORE_DB_HIKARI_MAX_LIFE_TIME. */ String STORE_DB_HIKARI_MAX_LIFE_TIME = STORE_DB_HIKARI_PREFIX + "maxLifetime"; /** * The constant STORE_DB_HIKARI_VALIDATION_TIMEOUT. */ String STORE_DB_HIKARI_VALIDATION_TIMEOUT = STORE_DB_HIKARI_PREFIX + "validationTimeout"; /** * The constant STORE_DB_DBCP_TIME_BETWEEN_EVICTION_RUNS_MILLIS. */ String STORE_DB_DBCP_TIME_BETWEEN_EVICTION_RUNS_MILLIS = STORE_DB_DBCP_PREFIX + "timeBetweenEvictionRunsMillis"; /** * The constant STORE_DB_DBCP_MIN_EVICTABLE_TIME_MILLIS. */ String STORE_DB_DBCP_MIN_EVICTABLE_TIME_MILLIS = STORE_DB_DBCP_PREFIX + "minEvictableIdleTimeMillis"; /** * The constant STORE_DB_DBCP_TEST_WHILE_IDLE. */ String STORE_DB_DBCP_TEST_WHILE_IDLE = STORE_DB_DBCP_PREFIX + "testWhileIdle"; /** * The constant STORE_DB_DBCP_TEST_ON_BORROW. */ String STORE_DB_DBCP_TEST_ON_BORROW = STORE_DB_DBCP_PREFIX + "testOnBorrow"; /** * The constant LOCK_DB_TABLE. */ String LOCK_DB_TABLE = STORE_DB_PREFIX + "lockTable"; /** * The constant SERVER_RPC_PORT. */ String SERVER_SERVICE_PORT_CAMEL = SERVER_PREFIX + "servicePort"; /** * The constant SERVER_RAFT_PORT. */ String SERVER_RAFT_PORT_CAMEL = SERVER_PREFIX + "raftPort"; /** * The constant SERVER_SERVICE_PORT_CONFIG. */ String SERVER_SERVICE_PORT_CONFIG = SEATA_PREFIX + SERVER_PREFIX + "service-port"; /** * The constant ENV_SEATA_PORT_KEY. */ String ENV_SEATA_PORT_KEY = "SEATA_PORT"; /** * The constant RECOVERY_PREFIX. */ String RECOVERY_PREFIX = SERVER_PREFIX + "recovery."; /** * The constant COMMITING_RETRY_PERIOD. */ String COMMITING_RETRY_PERIOD = RECOVERY_PREFIX + "committingRetryPeriod"; /** * The constant ASYN_COMMITING_RETRY_PERIOD. */ String ASYNC_COMMITING_RETRY_PERIOD = RECOVERY_PREFIX + "asyncCommittingRetryPeriod"; /** * The constant ROLLBACKING_RETRY_PERIOD. */ String ROLLBACKING_RETRY_PERIOD = RECOVERY_PREFIX + "rollbackingRetryPeriod"; /** * The constant END_STATUS_RETRY_PERIOD. */ String END_STATUS_RETRY_PERIOD = RECOVERY_PREFIX + "endstatusRetryPeriod"; /** * The constant TIMEOUT_RETRY_PERIOD. */ String TIMEOUT_RETRY_PERIOD = RECOVERY_PREFIX + "timeoutRetryPeriod"; /** * The constant CLIENT_UNDO_PREFIX. */ String CLIENT_UNDO_PREFIX = "client.undo."; /** * The constant TRANSACTION_UNDO_DATA_VALIDATION. */ String TRANSACTION_UNDO_DATA_VALIDATION = CLIENT_UNDO_PREFIX + "dataValidation"; /** * The constant TRANSACTION_UNDO_LOG_SERIALIZATION. */ String TRANSACTION_UNDO_LOG_SERIALIZATION = CLIENT_UNDO_PREFIX + "logSerialization"; /** * The constant TRANSACTION_UNDO_ONLY_CARE_UPDATE_COLUMNS. */ String TRANSACTION_UNDO_ONLY_CARE_UPDATE_COLUMNS = CLIENT_UNDO_PREFIX + "onlyCareUpdateColumns"; /** * the constant CLIENT_UNDO_COMPRESS_PREFIX */ String CLIENT_UNDO_COMPRESS_PREFIX = CLIENT_UNDO_PREFIX + "compress."; /** * the constant CLIENT_UNDO_COMPRESS_TYPE */ String CLIENT_UNDO_COMPRESS_TYPE = CLIENT_UNDO_COMPRESS_PREFIX + "type"; /** * the constant CLIENT_UNDO_COMPRESS_ENABLE */ String CLIENT_UNDO_COMPRESS_ENABLE = CLIENT_UNDO_COMPRESS_PREFIX + "enable"; /** * the constant CLIENT_UNDO_COMPRESS_THRESHOLD */ String CLIENT_UNDO_COMPRESS_THRESHOLD = CLIENT_UNDO_COMPRESS_PREFIX + "threshold"; /** * The constant METRICS_PREFIX. */ String METRICS_PREFIX = "metrics."; /** * The constant METRICS_ENABLED. */ String METRICS_ENABLED = "enabled"; /** * The constant METRICS_REGISTRY_TYPE. */ String METRICS_REGISTRY_TYPE = "registryType"; /** * The constant METRICS_EXPORTER_LIST. */ String METRICS_EXPORTER_LIST = "exporterList"; /** * The constant METRICS_EXPORTER_PROMETHEUS_PORT */ String METRICS_EXPORTER_PROMETHEUS_PORT = "exporterPrometheusPort"; /** * The constant SERVER_UNDO_PREFIX. */ String SERVER_UNDO_PREFIX = SERVER_PREFIX + "undo."; /** * The constant TRANSACTION_UNDO_LOG_SAVE_DAYS. */ String TRANSACTION_UNDO_LOG_SAVE_DAYS = SERVER_UNDO_PREFIX + "logSaveDays"; /** * The constant TRANSACTION_UNDO_LOG_DELETE_PERIOD */ String TRANSACTION_UNDO_LOG_DELETE_PERIOD = SERVER_UNDO_PREFIX + "logDeletePeriod"; /** * The constant TRANSACTION_UNDO_LOG_TABLE */ String TRANSACTION_UNDO_LOG_TABLE = CLIENT_UNDO_PREFIX + "logTable"; /** * The constant LOG_PREFIX */ String LOG_PREFIX = "log."; /** * The constant TRANSACTION_UNDO_LOG_EXCEPTION_RATE */ String TRANSACTION_LOG_EXCEPTION_RATE = LOG_PREFIX + "exceptionRate"; /** * The constant MAX_COMMIT_RETRY_TIMEOUT. */ String MAX_COMMIT_RETRY_TIMEOUT = SERVER_PREFIX + "maxCommitRetryTimeout"; /** * The constant MAX_ROLLBACK_RETRY_TIMEOUT. */ String MAX_ROLLBACK_RETRY_TIMEOUT = SERVER_PREFIX + "maxRollbackRetryTimeout"; /** * The constant ROLLBACK_RETRY_TIMEOUT_UNLOCK_ENABLE. * This configuration is deprecated, please use {@link #ROLLBACK_FAILED_UNLOCK_ENABLE} instead. */ @Deprecated String ROLLBACK_RETRY_TIMEOUT_UNLOCK_ENABLE = SERVER_PREFIX + "rollbackRetryTimeoutUnlockEnable"; /** * The constant ROLLBACK_FAILED_UNLOCK_ENABLE. */ String ROLLBACK_FAILED_UNLOCK_ENABLE = SERVER_PREFIX + "rollbackFailedUnlockEnable"; /** * the constant RETRY_DEAD_THRESHOLD */ String RETRY_DEAD_THRESHOLD = SERVER_PREFIX + "retryDeadThreshold"; /** * the constant END_STATE_RETRY_DEAD_THRESHOLD */ String END_STATE_RETRY_DEAD_THRESHOLD = SERVER_PREFIX + "endStateRetryDeadThreshold"; /** * the constant DISTRIBUTED_LOCK_EXPIRE_TIME */ String DISTRIBUTED_LOCK_EXPIRE_TIME = SERVER_PREFIX + "distributedLockExpireTime"; /** * The constant MIN_SERVER_POOL_SIZE. */ String MIN_SERVER_POOL_SIZE = TRANSPORT_PREFIX + "minServerPoolSize"; /** * The constant MAX_SERVER_POOL_SIZE. */ String MAX_SERVER_POOL_SIZE = TRANSPORT_PREFIX + "maxServerPoolSize"; /** * The constant MIN_BRANCH_RESULT_POOL_SIZE. */ String MIN_BRANCH_RESULT_POOL_SIZE = TRANSPORT_PREFIX + "minBranchResultPoolSize"; /** * The constant MAX_BRANCH_RESULT_POOL_SIZE. */ String MAX_BRANCH_RESULT_POOL_SIZE = TRANSPORT_PREFIX + "maxBranchResultPoolSize"; /** * The constant MAX_TASK_QUEUE_SIZE. */ String MAX_TASK_QUEUE_SIZE = TRANSPORT_PREFIX + "maxTaskQueueSize"; /** * The constant KEEP_ALIVE_TIME. */ String KEEP_ALIVE_TIME = TRANSPORT_PREFIX + "keepAliveTime"; /** * The constant MIN_HTTP_POOL_SIZE. */ String MIN_HTTP_POOL_SIZE = TRANSPORT_PREFIX + "minHttpPoolSize"; /** * The constant MAX_HTTP_POOL_SIZE. */ String MAX_HTTP_POOL_SIZE = TRANSPORT_PREFIX + "maxHttpPoolSize"; /** * The constant MAX_HTTP_TASK_QUEUE_SIZE. */ String MAX_HTTP_TASK_QUEUE_SIZE = TRANSPORT_PREFIX + "maxHttpTaskQueueSize"; /** * The constant HTTP_POOL_KEEP_ALIVE_TIME. */ String HTTP_POOL_KEEP_ALIVE_TIME = TRANSPORT_PREFIX + "httpPoolKeepAliveTime"; /** * The constant TRANSPORT_TYPE */ @Deprecated String TRANSPORT_TYPE = TRANSPORT_PREFIX + "type"; /** * The constant TRANSPORT_SERVER */ @Deprecated String TRANSPORT_SERVER = TRANSPORT_PREFIX + "server"; /** * The constant TRANSPORT_HEARTBEAT */ String TRANSPORT_HEARTBEAT = TRANSPORT_PREFIX + "heartbeat"; /** * The constant THREAD_FACTORY_PREFIX */ String THREAD_FACTORY_PREFIX = TRANSPORT_PREFIX + "threadFactory."; /** * The constant BOSS_THREAD_PREFIX */ String BOSS_THREAD_PREFIX = THREAD_FACTORY_PREFIX + "bossThreadPrefix"; /** * The constant WORKER_THREAD_PREFIX */ String WORKER_THREAD_PREFIX = THREAD_FACTORY_PREFIX + "workerThreadPrefix"; /** * The constant SERVER_EXECUTOR_THREAD_PREFIX */ String SERVER_EXECUTOR_THREAD_PREFIX = THREAD_FACTORY_PREFIX + "serverExecutorThreadPrefix"; /** * The constant SHARE_BOSS_WORKER */ String SHARE_BOSS_WORKER = THREAD_FACTORY_PREFIX + "shareBossWorker"; /** * The constant CLIENT_SELECTOR_THREAD_PREFIX */ String CLIENT_SELECTOR_THREAD_PREFIX = THREAD_FACTORY_PREFIX + "clientSelectorThreadPrefix"; /** * The constant CLIENT_SELECTOR_THREAD_SIZE */ String CLIENT_SELECTOR_THREAD_SIZE = THREAD_FACTORY_PREFIX + "clientSelectorThreadSize"; /** * The constant CLIENT_WORKER_THREAD_PREFIX */ String CLIENT_WORKER_THREAD_PREFIX = THREAD_FACTORY_PREFIX + "clientWorkerThreadPrefix"; /** * The constant BOSS_THREAD_SIZE */ String BOSS_THREAD_SIZE = THREAD_FACTORY_PREFIX + "bossThreadSize"; /** * The constant WORKER_THREAD_SIZE */ String WORKER_THREAD_SIZE = THREAD_FACTORY_PREFIX + "workerThreadSize"; /** * The constant ENABLE_SHARED_EVENTLOOP */ String ENABLE_CLIENT_SHARED_EVENTLOOP = TRANSPORT_PREFIX + "enableClientSharedEventLoopGroup"; /** * The constant SHUTDOWN_PREFIX */ String SHUTDOWN_PREFIX = TRANSPORT_PREFIX + "shutdown."; /** * The constant SHUTDOWN_WAIT */ String SHUTDOWN_WAIT = SHUTDOWN_PREFIX + "wait"; /** * The constant ENABLE_CLIENT_BATCH_SEND_REQUEST */ @Deprecated String ENABLE_CLIENT_BATCH_SEND_REQUEST = TRANSPORT_PREFIX + "enableClientBatchSendRequest"; String TRANSPORT_PROTOCOL = TRANSPORT_PREFIX + "protocol"; /** * The constant ENABLE_TM_CLIENT_BATCH_SEND_REQUEST */ String ENABLE_TM_CLIENT_BATCH_SEND_REQUEST = TRANSPORT_PREFIX + "enableTmClientBatchSendRequest"; /** * The constant ENABLE_RM_CLIENT_CHANNEL_CHECK_FAIL_FAST */ String ENABLE_TM_CLIENT_CHANNEL_CHECK_FAIL_FAST = TRANSPORT_PREFIX + "enableTmClientChannelCheckFailFast"; /** * The constant ENABLE_RM_CLIENT_CHANNEL_CHECK_FAIL_FAST */ String ENABLE_RM_CLIENT_CHANNEL_CHECK_FAIL_FAST = TRANSPORT_PREFIX + "enableRmClientChannelCheckFailFast"; /** * The constant ENABLE_RM_CLIENT_BATCH_SEND_REQUEST */ String ENABLE_RM_CLIENT_BATCH_SEND_REQUEST = TRANSPORT_PREFIX + "enableRmClientBatchSendRequest"; /** * The constant ENABLE_TC_SERVER_BATCH_SEND_RESPONSE */ String ENABLE_TC_SERVER_BATCH_SEND_RESPONSE = TRANSPORT_PREFIX + "enableTcServerBatchSendResponse"; /** * The constant DISABLE_GLOBAL_TRANSACTION. */ String DISABLE_GLOBAL_TRANSACTION = SERVICE_PREFIX + "disableGlobalTransaction"; /** * The constant SQL_PARSER_TYPE. */ String SQL_PARSER_TYPE = CLIENT_RM_PREFIX + "sqlParserType"; /** * The constant STORE_REDIS_MODE. */ String STORE_REDIS_MODE = STORE_REDIS_PREFIX + "mode"; /** * The constant STORE_REDIS_TYPE. lua pipeline */ String STORE_REDIS_TYPE = STORE_REDIS_PREFIX + "type"; /** * The constant STORE_REDIS_HOST. */ String STORE_REDIS_HOST = STORE_REDIS_PREFIX + "host"; /** * The constant STORE_REDIS_PORT. */ String STORE_REDIS_PORT = STORE_REDIS_PREFIX + "port"; /** * The constant STORE_REDIS_SINGLE_PREFIX. */ String STORE_REDIS_SINGLE_PREFIX = STORE_REDIS_PREFIX + "single."; /** * The constant STORE_REDIS_SINGLE_HOST. */ String STORE_REDIS_SINGLE_HOST = STORE_REDIS_SINGLE_PREFIX + "host"; /** * The constant STORE_MIN_Conn. */ String STORE_REDIS_MIN_CONN = STORE_REDIS_PREFIX + "minConn"; /** * The constant STORE_REDIS_SINGLE_PORT. */ String STORE_REDIS_SINGLE_PORT = STORE_REDIS_SINGLE_PREFIX + "port"; /** * The constant STORE_REDIS_MAX_CONN. */ String STORE_REDIS_MAX_CONN = STORE_REDIS_PREFIX + "maxConn"; /** * the constant STORE_REDIS_MAX_TOTAL */ String STORE_REDIS_MAX_TOTAL = STORE_REDIS_PREFIX + "maxTotal"; /** * The constant STORE_REDIS_DATABASE. */ String STORE_REDIS_DATABASE = STORE_REDIS_PREFIX + "database"; /** * The constant STORE_REDIS_PASSWORD. */ String STORE_REDIS_PASSWORD = STORE_REDIS_PREFIX + "password"; /** * The constant STORE_REDIS_QUERY_LIMIT. */ String STORE_REDIS_QUERY_LIMIT = STORE_REDIS_PREFIX + "queryLimit"; /** * The constant REDIS_SENTINEL_MODE. */ String REDIS_SENTINEL_MODE = "sentinel"; /** * The constant REDIS_SINGLE_MODE. */ String REDIS_SINGLE_MODE = "single"; /** * The constant STORE_REDIS_SENTINEL_PREFIX. */ String STORE_REDIS_SENTINEL_PREFIX = STORE_REDIS_PREFIX + "sentinel."; /** * STORE_REDIS_SENTINEL_MASTERNAME. */ String STORE_REDIS_SENTINEL_MASTERNAME = STORE_REDIS_SENTINEL_PREFIX + "masterName"; /** * STORE_REDIS_SENTINEL_HOST. */ String STORE_REDIS_SENTINEL_HOST = STORE_REDIS_SENTINEL_PREFIX + "sentinelHosts"; /** * STORE_REDIS_SENTINEL_PASSWORD. */ String STORE_REDIS_SENTINEL_PASSWORD = STORE_REDIS_SENTINEL_PREFIX + "sentinelPassword"; /** * The constant CLIENT_DEGRADE_CHECK_PERIOD. */ String CLIENT_DEGRADE_CHECK_PERIOD = CLIENT_TM_PREFIX + "degradeCheckPeriod"; /** * The constant CLIENT_DEGRADE_CHECK. */ String CLIENT_DEGRADE_CHECK = CLIENT_TM_PREFIX + "degradeCheck"; /** * The constant CLIENT_DEGRADE_CHECK_ALLOW_TIMES. */ String CLIENT_DEGRADE_CHECK_ALLOW_TIMES = CLIENT_TM_PREFIX + "degradeCheckAllowTimes"; /** * The constant GLOBAL_TRANSACTION_INTERCEPTOR_ORDER. */ String TM_INTERCEPTOR_ORDER = CLIENT_TM_PREFIX + "interceptorOrder"; /** * The constant ACCESS_KEY. */ String ACCESS_KEY = "accesskey"; /** * The constant SECRET_KEY. */ String SECRET_KEY = "secretkey"; /** * The constant SEATA_ACCESS_KEY. */ String SEATA_ACCESS_KEY = SEATA_PREFIX + ACCESS_KEY; /** * The constant SEATA_SECRET_KEY. */ String SEATA_SECRET_KEY = SEATA_PREFIX + SECRET_KEY; /** * The constant EXTRA_DATA_SPLIT_CHAR. */ String EXTRA_DATA_SPLIT_CHAR = "\n"; /** * The constant EXTRA_DATA_KV_CHAR. */ String EXTRA_DATA_KV_CHAR = "="; /** * The constant SERVER_ENABLE_CHECK_AUTH. */ String SERVER_ENABLE_CHECK_AUTH = SERVER_PREFIX + "enableCheckAuth"; /** * The constant NAMING_SERVER */ String NAMING_SERVER = "seata"; /** * The constant APPLICATION_ID. */ String APPLICATION_ID = "applicationId"; /** * The constant TX_SERVICE_GROUP. */ String TX_SERVICE_GROUP = "txServiceGroup"; /** * The constant DATA_SOURCE_PROXY_MODE. */ String DATA_SOURCE_PROXY_MODE = "dataSourceProxyMode"; /** * The constant TCC_PREFIX */ String TCC_PREFIX = "tcc."; /** * The constant TCC_FENCE_PREFIX */ String TCC_FENCE_PREFIX = TCC_PREFIX + "fence."; /** * The constant TCC_FENCE_CLEAN_PERIOD */ String TCC_FENCE_CLEAN_PERIOD = TCC_FENCE_PREFIX + "cleanPeriod"; /** * The constant TCC_FENCE_LOG_TABLE_NAME */ String TCC_FENCE_LOG_TABLE_NAME = TCC_FENCE_PREFIX + "logTableName"; /** * The constant TCC_BUSINESS_ACTION_CONTEXT_JSON_PARSER_NAME */ String TCC_BUSINESS_ACTION_CONTEXT_JSON_PARSER_NAME = TCC_PREFIX + "contextJsonParserType"; /** * The constant rpcRmRequestTimeout */ String RPC_RM_REQUEST_TIMEOUT = TRANSPORT_PREFIX + "rpcRmRequestTimeout"; /** * The constant RPC_TM_REQUEST_TIMEOUT */ String RPC_TM_REQUEST_TIMEOUT = TRANSPORT_PREFIX + "rpcTmRequestTimeout"; /** * The constant RPC_TM_REQUEST_TIMEOUT */ String RPC_TC_REQUEST_TIMEOUT = TRANSPORT_PREFIX + "rpcTcRequestTimeout"; /** * The constant SESSION_BRANCH_ASYNC_QUEUE_SIZE */ String SESSION_BRANCH_ASYNC_QUEUE_SIZE = SERVER_PREFIX + SESSION_PREFIX + "branchAsyncQueueSize"; /** * The constant ENABLE_BRANCH_ASYNC_REMOVE */ String ENABLE_BRANCH_ASYNC_REMOVE = SERVER_PREFIX + SESSION_PREFIX + "enableBranchAsyncRemove"; /** * The constant SERVER_RAFT. */ String SERVER_RAFT = SERVER_PREFIX + "raft."; /** * The constant SERVER_RAFT_SSL. */ String SERVER_RAFT_SSL = SERVER_RAFT + "ssl."; /** * The constant SERVER_RAFT_SSL_CLIENT. */ String SERVER_RAFT_SSL_CLIENT = SERVER_RAFT_SSL + "client."; /** * The constant SERVER_RAFT_SSL_SERVER. */ String SERVER_RAFT_SSL_SERVER = SERVER_RAFT_SSL + "server."; /** * The constant SERVER_RAFT_SERVER_ADDR. */ String SERVER_RAFT_SERVER_ADDR = SERVER_RAFT + "serverAddr"; /** * The constant SERVER_RAFT_GROUP. */ String SERVER_RAFT_GROUP = SERVER_RAFT + "group"; /** * The constant SERVER_RAFT_SNAPSHOT_INTERVAL. */ String SERVER_RAFT_SNAPSHOT_INTERVAL = SERVER_RAFT + "snapshotInterval"; /** * The constant SERVER_RAFT_DISRUPTOR_BUFFER_SIZE. */ String SERVER_RAFT_DISRUPTOR_BUFFER_SIZE = SERVER_RAFT + "disruptorBufferSize"; /** * The constant SERVER_RAFT_MAX_REPLICATOR_INFLIGHT_MSGS. */ String SERVER_RAFT_MAX_REPLICATOR_INFLIGHT_MSGS = SERVER_RAFT + "maxReplicatorInflightMsgs"; /** * The constant SERVER_RAFT_SYNC. */ String SERVER_RAFT_SYNC = SERVER_RAFT + "sync"; /** * The constant SERVER_RAFT_SSL_ENABLED. */ String SERVER_RAFT_SSL_ENABLED = SERVER_RAFT_SSL + "enabled"; /** * The constant SERVER_RAFT_SSL_SERVER_KEYSTORE. */ String SERVER_RAFT_SSL_SERVER_KEYSTORE_PATH = SERVER_RAFT_SSL_SERVER + "keystore.path"; /** * The constant SERVER_RAFT_SSL_CLIENT_KEYSTORE. */ String SERVER_RAFT_SSL_CLIENT_KEYSTORE_PATH = SERVER_RAFT_SSL_CLIENT + "keystore.path"; /** * The constant SERVER_RAFT_SSL_SERVER_KEYSTORE_PASSWORD. */ String SERVER_RAFT_SSL_SERVER_KEYSTORE_PASSWORD = SERVER_RAFT_SSL_SERVER + "keystore.password"; /** * The constant SERVER_RAFT_SSL_CLIENT_KEYSTORE_PASSWORD. */ String SERVER_RAFT_SSL_CLIENT_KEYSTORE_PASSWORD = SERVER_RAFT_SSL_CLIENT + "keystore.password"; /** * The constant SERVER_RAFT_SSL_CLIENT_KEYSTORE_TYPE. */ String SERVER_RAFT_SSL_CLIENT_KEYSTORE_TYPE = SERVER_RAFT_SSL_CLIENT + "keystore.type"; /** * The constant SERVER_RAFT_SSL_SERVER_KEYSTORE_TYPE. */ String SERVER_RAFT_SSL_SERVER_KEYSTORE_TYPE = SERVER_RAFT_SSL_SERVER + "keystore.type"; /** * The constant SERVER_RAFT_SSL_KMF_ALGORITHM. */ String SERVER_RAFT_SSL_KMF_ALGORITHM = SERVER_RAFT_SSL + "kmfAlgorithm"; /** * The constant SERVER_RAFT_SSL_KMF_ALGORITHM. */ String SERVER_RAFT_SSL_TMF_ALGORITHM = SERVER_RAFT_SSL + "tmfAlgorithm"; /** * The constant SERVER_RAFT_MAX_APPEND_BUFFER_SIZE. */ String SERVER_RAFT_MAX_APPEND_BUFFER_SIZE = SERVER_RAFT + "maxAppendBufferSize"; /** * The constant SERVER_RAFT_APPLY_BATCH. */ String SERVER_RAFT_APPLY_BATCH = SERVER_RAFT + "applyBatch"; /** * The constant SERVER_RAFT_APPLY_BATCH. */ String SERVER_RAFT_ELECTION_TIMEOUT_MS = SERVER_RAFT + "electionTimeoutMs"; /** * The constant SERVER_RAFT_REPORTER_ENABLED. */ String SERVER_RAFT_REPORTER_ENABLED = SERVER_RAFT + "reporterEnabled"; /** * The constant SERVER_RAFT_REPORTER_INITIAL_DELAY. */ String SERVER_RAFT_REPORTER_INITIAL_DELAY = SERVER_RAFT + "reporterInitialDelay"; /** * The constant SERVER_RAFT_SERIALIZATION. */ String SERVER_RAFT_SERIALIZATION = SERVER_RAFT + "serialization"; /** * The constant SERVER_RAFT_COMPRESSOR. */ String SERVER_RAFT_COMPRESSOR = SERVER_RAFT + "compressor"; /** * The constant SERVER_HTTP. */ String SERVER_HTTP = SERVER_PREFIX + "http."; String SERVER_HTTP_FILTER_PREFIX = SERVER_HTTP + "filter."; /** * The constant SERVER_HTTP_FILTER_XSS_FILTER_KEYWORDS. * */ String SERVER_HTTP_FILTER_XSS_FILTER_KEYWORDS = SERVER_HTTP_FILTER_PREFIX + "xss.keywords"; /** * The constant IS_USE_CLOUD_NAMESPACE_PARSING. */ String IS_USE_CLOUD_NAMESPACE_PARSING = "isUseCloudNamespaceParsing"; /** * The constant IS_USE_ENDPOINT_PARSING_RULE. */ String IS_USE_ENDPOINT_PARSING_RULE = "isUseEndpointParsingRule"; /** * The constant XAER_NOTA_RETRY_TIMEOUT */ String XAER_NOTA_RETRY_TIMEOUT = SERVER_PREFIX + "xaerNotaRetryTimeout"; /** * The constant XA_BRANCH_EXECUTION_TIMEOUT */ String XA_BRANCH_EXECUTION_TIMEOUT = CLIENT_RM_PREFIX + "branchExecutionTimeoutXA"; /** * The constant XA_CONNECTION_TWO_PHASE_HOLD_TIMEOUT */ String XA_CONNECTION_TWO_PHASE_HOLD_TIMEOUT = CLIENT_RM_PREFIX + "connectionTwoPhaseHoldTimeoutXA"; /** * The constant ENABLE_PARALLEL_REQUEST_HANDLE_KEY */ String ENABLE_PARALLEL_REQUEST_HANDLE_KEY = SERVER_PREFIX + "enableParallelRequestHandle"; /** * The constant ENABLE_PARALLEL_HANDLE_BRANCH_KEY */ String ENABLE_PARALLEL_HANDLE_BRANCH_KEY = SERVER_PREFIX + "enableParallelHandleBranch"; /** * The constant RM_APPLICATION_DATA_SIZE_ERROR */ String RM_APPLICATION_DATA_SIZE_LIMIT = CLIENT_RM_PREFIX + "applicationDataLimit"; /** * The constant RM_APPLICATION_DATA_SIZE_CHECK */ String RM_APPLICATION_DATA_SIZE_CHECK = CLIENT_RM_PREFIX + "applicationDataLimitCheck"; /** * The constant SERVER_APPLICATION_DATA_SIZE_ERROR */ String SERVER_APPLICATION_DATA_SIZE_LIMIT = SERVER_PREFIX + "applicationDataLimit"; /** * The constant SERVER_APPLICATION_DATA_SIZE_CHECK */ String SERVER_APPLICATION_DATA_SIZE_CHECK = SERVER_PREFIX + "applicationDataLimitCheck"; /** * The constant ROCKET_MQ_MSG_TIMEOUT */ String ROCKET_MQ_MSG_TIMEOUT = SERVER_PREFIX + "rocketmqMsgTimeout"; /** * */ String NAMINGSERVER_REGISTRY_PREFIX = FILE_ROOT_REGISTRY + FILE_CONFIG_SPLIT_CHAR + NAMING_SERVER + FILE_CONFIG_SPLIT_CHAR; /** * */ String SEATA_NAMINGSERVER_REGISTRY_PREFIX = SEATA_FILE_ROOT_CONFIG + FILE_CONFIG_SPLIT_CHAR + NAMINGSERVER_REGISTRY_PREFIX; /** * The constant REGISTRY_NAMINGSERVER_CLUSTER */ String REGISTRY_NAMINGSERVER_CLUSTER = NAMINGSERVER_REGISTRY_PREFIX + "cluster"; /** * The constant VGROUP_TABLE_NAME */ String VGROUP_TABLE_NAME = STORE_DB_PREFIX + "vgroupTable"; /** * The constant NAMESPACE_KEY */ String NAMESPACE_KEY = SEATA_NAMINGSERVER_REGISTRY_PREFIX + "namespace"; /** * The constant CLUSTER_NAME_KEY */ String CLUSTER_NAME_KEY = SEATA_FILE_ROOT_CONFIG + FILE_CONFIG_SPLIT_CHAR + REGISTRY_NAMINGSERVER_CLUSTER; /** * The constant META_PREFIX */ String META_PREFIX = SEATA_FILE_ROOT_CONFIG + FILE_CONFIG_SPLIT_CHAR + FILE_ROOT_REGISTRY + FILE_CONFIG_SPLIT_CHAR + "metadata."; /** * The constant SERVER_REGISTRY_METADATA_PREFIX */ String SERVER_REGISTRY_METADATA_PREFIX = SERVER_PREFIX + FILE_ROOT_REGISTRY + ".metadata"; /** * The constant SERVER_REGISTRY_METADATA_EXTERNAL */ String SERVER_REGISTRY_METADATA_EXTERNAL = SERVER_REGISTRY_METADATA_PREFIX + ".external"; /** * The constant RATE_LIMIT_PREFIX. */ String RATE_LIMIT_PREFIX = SERVER_PREFIX + "ratelimit"; /** * The constant RATE_LIMIT_BUCKET_TOKEN_NUM_PER_SECOND. */ String RATE_LIMIT_BUCKET_TOKEN_NUM_PER_SECOND = RATE_LIMIT_PREFIX + ".bucketTokenNumPerSecond"; /** * The constant RATE_LIMIT_ENABLE. */ String RATE_LIMIT_ENABLE = RATE_LIMIT_PREFIX + ".enable"; /** * The constant RATE_LIMIT_BUCKET_TOKEN_MAX_NUM. */ String RATE_LIMIT_BUCKET_TOKEN_MAX_NUM = RATE_LIMIT_PREFIX + ".bucketTokenMaxNum"; /** * The constant RATE_LIMIT_BUCKET_TOKEN_INITIAL_NUM. */ String RATE_LIMIT_BUCKET_TOKEN_INITIAL_NUM = RATE_LIMIT_PREFIX + ".bucketTokenInitialNum"; } ================================================ FILE: common/src/main/java/org/apache/seata/common/Constants.java ================================================ /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.seata.common; import java.nio.charset.Charset; /** * The type Constants. * */ public interface Constants { /** * The constant IP_PORT_SPLIT_CHAR. */ String IP_PORT_SPLIT_CHAR = ":"; /** * The constant CLIENT_ID_SPLIT_CHAR. */ String CLIENT_ID_SPLIT_CHAR = ":"; /** * The constant ENDPOINT_BEGIN_CHAR. */ String ENDPOINT_BEGIN_CHAR = "/"; /** * The constant DBKEYS_SPLIT_CHAR. */ String DBKEYS_SPLIT_CHAR = ","; /** * The constant ROW_LOCK_KEY_SPLIT_CHAR. */ String ROW_LOCK_KEY_SPLIT_CHAR = ";"; /** * The constant HIDE_KEY_PREFIX_CHAR. */ String HIDE_KEY_PREFIX_CHAR = "."; /** * the start time of transaction */ String START_TIME = "start-time"; /** * app name */ String APP_NAME = "appName"; /** * TCC start time */ String ACTION_START_TIME = "action-start-time"; /** * TCC name */ String ACTION_NAME = "actionName"; /** * Use TCC fence */ String USE_COMMON_FENCE = "useTCCFence"; /** * phase one method name */ String PREPARE_METHOD = "sys::prepare"; /** * phase two commit method name */ String COMMIT_METHOD = "sys::commit"; /** * phase two rollback method name */ String ROLLBACK_METHOD = "sys::rollback"; /** * host ip */ String HOST_NAME = "host-name"; /** * branch context */ String TX_ACTION_CONTEXT = "actionContext"; /** * isolation */ String TX_ISOLATION = "isolation"; /** * default charset name */ String DEFAULT_CHARSET_NAME = "UTF-8"; /** * default charset is utf-8 */ Charset DEFAULT_CHARSET = Charset.forName(DEFAULT_CHARSET_NAME); /** * The constant OBJECT_KEY_SPRING_APPLICATION_CONTEXT */ String OBJECT_KEY_SPRING_APPLICATION_CONTEXT = "springApplicationContext"; /** * The constant OBJECT_KEY_SPRING_CONFIGURABLE_ENVIRONMENT */ String OBJECT_KEY_SPRING_CONFIGURABLE_ENVIRONMENT = "springConfigurableEnvironment"; /** * The constant BEAN_NAME_SPRING_APPLICATION_CONTEXT_PROVIDER */ String BEAN_NAME_SPRING_APPLICATION_CONTEXT_PROVIDER = "springApplicationContextProvider"; /** * The constant BEAN_NAME_SPRING_FENCE_CONFIG */ String BEAN_NAME_SPRING_FENCE_CONFIG = "SpringFenceConfig"; /** * The constant BEAN_NAME_FAILURE_HANDLER */ String BEAN_NAME_FAILURE_HANDLER = "failureHandler"; /** * The constant SAGA_TRANS_NAME_PREFIX */ String SAGA_TRANS_NAME_PREFIX = "$Saga_"; /** * The constant RETRY_ROLLBACKING */ String RETRY_ROLLBACKING = "RetryRollbacking"; /** * The constant RETRY_COMMITTING */ String RETRY_COMMITTING = "RetryCommitting"; /** * The constant ASYNC_COMMITTING */ String ASYNC_COMMITTING = "AsyncCommitting"; /** * The constant TX_TIMEOUT_CHECK */ String TX_TIMEOUT_CHECK = "TxTimeoutCheck"; /** * The constant UNDOLOG_DELETE */ String UNDOLOG_DELETE = "UndologDelete"; /** * The constant SYNC_PROCESSING */ String SYNC_PROCESSING = "SyncProcessing"; /** * The constant Committing */ String COMMITTING = "Committing"; /** * The constant Rollbacking */ String ROLLBACKING = "Rollbacking"; /** * The constant END */ String END = "END"; /** * The constant AUTO_COMMIT */ String AUTO_COMMIT = "autoCommit"; /** * The constant SKIP_CHECK_LOCK */ String SKIP_CHECK_LOCK = "skipCheckLock"; /** * The constant REGISTRY_TYPE_SPLIT_CHAR. */ String REGISTRY_TYPE_SPLIT_CHAR = ","; /** * phase two compensation method name */ String COMPENSATION_METHOD = "sys::compensation"; /** * phase STORE_REDIS_TYPE_PIPELINE */ String STORE_REDIS_TYPE_PIPELINE = "pipeline"; /** * The constant FASTJSON_JSON_PARSER_NAME */ String FASTJSON_JSON_PARSER_NAME = "fastjson"; /** * The constant JACKSON_JSON_PARSER_NAME */ String JACKSON_JSON_PARSER_NAME = "jackson"; /** * The constant GSON_JSON_PARSER_NAME */ String GSON_JSON_PARSER_NAME = "gson"; /** * The constant JACKSON_JSON_TEXT_PREFIX */ String JACKSON_JSON_TEXT_PREFIX = "{\"@class\":"; /** * The constant DEAD_LOCK_SQL_STATE */ String DEAD_LOCK_SQL_STATE = "40001"; /** * The constant DEAD_LOCK_ERROR_CODE */ int DEAD_LOCK_ERROR_CODE = 1213; /** * The constant RAFT_GROUP_HEADER */ String RAFT_GROUP_HEADER = "X-SEATA-RAFT-GROUP"; /** * The constant WATCH_EVENT_PREFIX * Prefix for watch event data format: "{prefix}{json}\n" * CW stands for Cluster Watch */ String WATCH_EVENT_PREFIX = "CW:"; } ================================================ FILE: common/src/main/java/org/apache/seata/common/DefaultValues.java ================================================ /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.seata.common; import java.time.Duration; import java.util.Arrays; import java.util.List; /** * The interface Default values. */ public interface DefaultValues { /** * The constant DEFAULT_CLIENT_LOCK_RETRY_INTERVAL. */ int DEFAULT_CLIENT_LOCK_RETRY_INTERVAL = 10; /** * The constant DEFAULT_TM_DEGRADE_CHECK_ALLOW_TIMES. */ int DEFAULT_TM_DEGRADE_CHECK_ALLOW_TIMES = 10; /** * The constant DEFAULT_CLIENT_LOCK_RETRY_TIMES. */ int DEFAULT_CLIENT_LOCK_RETRY_TIMES = 30; /** * The constant DEFAULT_CLIENT_LOCK_RETRY_POLICY_BRANCH_ROLLBACK_ON_CONFLICT. */ boolean DEFAULT_CLIENT_LOCK_RETRY_POLICY_BRANCH_ROLLBACK_ON_CONFLICT = true; /** * The constant DEFAULT_LOG_EXCEPTION_RATE. */ int DEFAULT_LOG_EXCEPTION_RATE = 100; /** * The constant DEFAULT_CLIENT_ASYNC_COMMIT_BUFFER_LIMIT. */ int DEFAULT_CLIENT_ASYNC_COMMIT_BUFFER_LIMIT = 10000; /** * The constant DEFAULT_TM_DEGRADE_CHECK_PERIOD. */ int DEFAULT_TM_DEGRADE_CHECK_PERIOD = 2000; /** * The constant DEFAULT_CLIENT_REPORT_RETRY_COUNT. */ int DEFAULT_CLIENT_REPORT_RETRY_COUNT = 5; /** * The constant DEFAULT_CLIENT_REPORT_SUCCESS_ENABLE. */ boolean DEFAULT_CLIENT_REPORT_SUCCESS_ENABLE = false; /** * The constant DEFAULT_CLIENT_TABLE_META_CHECK_ENABLE. */ boolean DEFAULT_CLIENT_TABLE_META_CHECK_ENABLE = true; /** * The constant DEFAULT_TABLE_META_CHECKER_INTERVAL. */ long DEFAULT_TABLE_META_CHECKER_INTERVAL = 60000L; /** * The constant DEFAULT_TM_DEGRADE_CHECK. */ boolean DEFAULT_TM_DEGRADE_CHECK = false; /** * The constant DEFAULT_CLIENT_SAGA_BRANCH_REGISTER_ENABLE. */ boolean DEFAULT_CLIENT_SAGA_BRANCH_REGISTER_ENABLE = false; /** * The default session store dir */ String DEFAULT_SESSION_STORE_FILE_DIR = "sessionStore"; /** * The constant DEFAULT_CLIENT_SAGA_RETRY_PERSIST_MODE_UPDATE. */ boolean DEFAULT_CLIENT_SAGA_RETRY_PERSIST_MODE_UPDATE = false; /** * The constant DEFAULT_CLIENT_SAGA_COMPENSATE_PERSIST_MODE_UPDATE. */ boolean DEFAULT_CLIENT_SAGA_COMPENSATE_PERSIST_MODE_UPDATE = false; /** * The constant DEFAULT_RAFT_SERIALIZATION. */ String DEFAULT_RAFT_SERIALIZATION = "jackson"; /** * The constant DEFAULT_RAFT_COMPRESSOR. */ String DEFAULT_RAFT_COMPRESSOR = "none"; /** * Shutdown timeout default 3s */ int DEFAULT_SHUTDOWN_TIMEOUT_SEC = 13; /** * The constant DEFAULT_SELECTOR_THREAD_SIZE. */ int DEFAULT_SELECTOR_THREAD_SIZE = -1; /** * The constant DEFAULT_BOSS_THREAD_SIZE. */ int DEFAULT_BOSS_THREAD_SIZE = 1; /** * The constant DEFAULT_SELECTOR_THREAD_PREFIX. */ String DEFAULT_SELECTOR_THREAD_PREFIX = "NettyClientSelector"; /** * The constant DEFAULT_WORKER_THREAD_PREFIX. */ String DEFAULT_WORKER_THREAD_PREFIX = "NettyClientWorkerThread"; /** * The constant DEFAULT_ENABLE_CLIENT_BATCH_SEND_REQUEST. */ @Deprecated boolean DEFAULT_ENABLE_CLIENT_BATCH_SEND_REQUEST = true; /** * The constant DEFAULT_ENABLE_CLIENT_USE_SHARED_EVENT_LOOP. */ boolean DEFAULT_ENABLE_CLIENT_USE_SHARED_EVENT_LOOP = false; /** * The constant DEFAULT_ENABLE_TM_CLIENT_BATCH_SEND_REQUEST. */ boolean DEFAULT_ENABLE_TM_CLIENT_BATCH_SEND_REQUEST = false; /** * The constant DEFAULT_ENABLE_RM_CLIENT_BATCH_SEND_REQUEST. */ boolean DEFAULT_ENABLE_RM_CLIENT_BATCH_SEND_REQUEST = true; /** * The constant DEFAULT_ENABLE_TC_SERVER_BATCH_SEND_RESPONSE. */ boolean DEFAULT_ENABLE_TC_SERVER_BATCH_SEND_RESPONSE = false; /** * The constant DEFAULT_CLIENT_CHANNEL_CHECK_FAIL_FAST. */ boolean DEFAULT_CLIENT_CHANNEL_CHECK_FAIL_FAST = true; /** * The constant DEFAULT_BOSS_THREAD_PREFIX. */ String DEFAULT_BOSS_THREAD_PREFIX = "NettyBoss"; /** * The constant DEFAULT_NIO_WORKER_THREAD_PREFIX. */ String DEFAULT_NIO_WORKER_THREAD_PREFIX = "NettyServerNIOWorker"; /** * The constant DEFAULT_EXECUTOR_THREAD_PREFIX. */ String DEFAULT_EXECUTOR_THREAD_PREFIX = "NettyServerBizHandler"; /** * The constant DEFAULT_PROTOCOL. */ String DEFAULT_PROTOCOL = "seata"; /** * The constant DEFAULT_MIN_HTTP_POOL_SIZE. */ int DEFAULT_MIN_HTTP_POOL_SIZE = 10; /** * The constant DEFAULT_MAX_HTTP_POOL_SIZE. */ int DEFAULT_MAX_HTTP_POOL_SIZE = 100; /** * The constant DEFAULT_MAX_HTTP_TASK_QUEUE_SIZE. */ int DEFAULT_MAX_HTTP_TASK_QUEUE_SIZE = 1000; /** * The constant DEFAULT_HTTP_POOL_KEEP_ALIVE_TIME. */ int DEFAULT_HTTP_POOL_KEEP_ALIVE_TIME = 500; /** * The constant DEFAULT_SERVER_SOCKET_SEND_BUF_SIZE. */ int DEFAULT_SERVER_SOCKET_SEND_BUF_SIZE = 153600; /** * The constant DEFAULT_SERVER_SOCKET_RESV_BUF_SIZE. */ int DEFAULT_SERVER_SOCKET_RESV_BUF_SIZE = 153600; /** * The constant DEFAULT_WRITE_BUFFER_HIGH_WATER_MARK. */ int DEFAULT_WRITE_BUFFER_HIGH_WATER_MARK = 67108864; /** * The constant DEFAULT_WRITE_BUFFER_LOW_WATER_MARK. */ int DEFAULT_WRITE_BUFFER_LOW_WATER_MARK = 1048576; /** * The constant DEFAULT_SO_BACK_LOG_SIZE. */ int DEFAULT_SO_BACK_LOG_SIZE = 1024; /** * The constant DEFAULT_SERVER_CHANNEL_MAX_IDLE_TIME_SECONDS. */ int DEFAULT_SERVER_CHANNEL_MAX_IDLE_TIME_SECONDS = 30; /** * The constant DEFAULT_MIN_SERVER_POOL_SIZE. */ int DEFAULT_MIN_SERVER_POOL_SIZE = 50; /** * The constant DEFAULT_MAX_SERVER_POOL_SIZE. */ int DEFAULT_MAX_SERVER_POOL_SIZE = 500; /** * The constant DEFAULT_MAX_TASK_QUEUE_SIZE. */ int DEFAULT_MAX_TASK_QUEUE_SIZE = 20000; /** * The constant DEFAULT_KEEP_ALIVE_TIME. */ int DEFAULT_KEEP_ALIVE_TIME = 500; /** * The constant DEFAULT_TRANSPORT_HEARTBEAT. */ boolean DEFAULT_TRANSPORT_HEARTBEAT = true; /** * The constant DEFAULT_TRANSACTION_UNDO_DATA_VALIDATION. */ boolean DEFAULT_TRANSACTION_UNDO_DATA_VALIDATION = true; /** * The constant DEFAULT_TRANSACTION_UNDO_LOG_SERIALIZATION. */ String DEFAULT_TRANSACTION_UNDO_LOG_SERIALIZATION = "jackson"; /** * The constant DEFAULT_ONLY_CARE_UPDATE_COLUMNS. */ boolean DEFAULT_ONLY_CARE_UPDATE_COLUMNS = true; /** * The constant DEFAULT_TRANSACTION_UNDO_LOG_TABLE. */ String DEFAULT_TRANSACTION_UNDO_LOG_TABLE = "undo_log"; /** * The constant DEFAULT_STORE_DB_GLOBAL_TABLE. */ String DEFAULT_STORE_DB_GLOBAL_TABLE = "global_table"; /** * The constant DEFAULT_STORE_DB_BRANCH_TABLE. */ String DEFAULT_STORE_DB_BRANCH_TABLE = "branch_table"; /** * The constant DEFAULT_LOCK_DB_TABLE. */ String DEFAULT_LOCK_DB_TABLE = "lock_table"; /** * the constant DEFAULT_DISTRIBUTED_LOCK_DB_TABLE */ String DEFAULT_DISTRIBUTED_LOCK_DB_TABLE = "distributed_lock"; /** * The constant DEFAULT_TM_COMMIT_RETRY_COUNT. */ int DEFAULT_TM_COMMIT_RETRY_COUNT = 5; /** * The constant DEFAULT_TM_ROLLBACK_RETRY_COUNT. */ int DEFAULT_TM_ROLLBACK_RETRY_COUNT = 5; /** * The constant DEFAULT_GLOBAL_TRANSACTION_TIMEOUT. */ int DEFAULT_GLOBAL_TRANSACTION_TIMEOUT = 60000; /** * The constant DEFAULT_TX_GROUP. */ String DEFAULT_TX_GROUP = "default_tx_group"; /** * The constant DEFAULT_TX_GROUP_OLD. */ @Deprecated String DEFAULT_TX_GROUP_OLD = "my_test_tx_group"; /** * The constant DEFAULT_TC_CLUSTER. */ String DEFAULT_TC_CLUSTER = "default"; /** * The constant DEFAULT_GROUPLIST. */ String DEFAULT_GROUPLIST = "127.0.0.1:8091"; /** * The constant DEFAULT_DATA_SOURCE_PROXY_MODE. */ String DEFAULT_DATA_SOURCE_PROXY_MODE = "AT"; /** * The constant DEFAULT_DISABLE_GLOBAL_TRANSACTION. */ boolean DEFAULT_DISABLE_GLOBAL_TRANSACTION = false; /** * The constant SERVICE_DEFAULT_PORT. */ // currently not use and will be delete in the next version @Deprecated int SERVICE_DEFAULT_PORT = 8091; /** * The constant SERVICE_OFFSET_SPRING_BOOT. */ int SERVICE_OFFSET_SPRING_BOOT = 1000; /** * The constant SERVER_PORT. */ String SERVER_PORT = "seata.server.port"; /** * The constant SERVER_DEFAULT_STORE_MODE. */ String SERVER_DEFAULT_STORE_MODE = "file"; /** * The constant DEFAULT_SAGA_JSON_PARSER. */ String DEFAULT_SAGA_JSON_PARSER = "fastjson"; /** * The constant DEFAULT_TCC_BUSINESS_ACTION_CONTEXT_JSON_PARSER. */ // default tcc business action context json parser String DEFAULT_TCC_BUSINESS_ACTION_CONTEXT_JSON_PARSER = "fastjson"; /** * The constant DEFAULT_SERVER_ENABLE_CHECK_AUTH. */ boolean DEFAULT_SERVER_ENABLE_CHECK_AUTH = true; /** * The constant DEFAULT_LOAD_BALANCE. */ String DEFAULT_LOAD_BALANCE = "XID"; /** * The constant VIRTUAL_NODES_DEFAULT. */ int VIRTUAL_NODES_DEFAULT = 10; /** * The constant DEFAULT_SEATA_GROUP. */ String DEFAULT_SEATA_GROUP = "default"; /** * the constant DEFAULT_CLIENT_UNDO_COMPRESS_ENABLE */ boolean DEFAULT_CLIENT_UNDO_COMPRESS_ENABLE = true; /** * the constant DEFAULT_CLIENT_UNDO_COMPRESS_TYPE */ String DEFAULT_CLIENT_UNDO_COMPRESS_TYPE = "zip"; /** * the constant DEFAULT_CLIENT_UNDO_COMPRESS_THRESHOLD */ String DEFAULT_CLIENT_UNDO_COMPRESS_THRESHOLD = "64k"; /** * the constant DEFAULT_RETRY_DEAD_THRESHOLD */ int DEFAULT_RETRY_DEAD_THRESHOLD = 70 * 1000; /** * the constant DEFAULT_END_STATE_RETRY_DEAD_THRESHOLD */ int DEFAULT_END_STATE_RETRY_DEAD_THRESHOLD = 10 * 1000; /** * the constant TM_INTERCEPTOR_ORDER */ int TM_INTERCEPTOR_ORDER = Integer.MIN_VALUE + 1000; /** * the constant TCC_ACTION_INTERCEPTOR_ORDER */ int TCC_ACTION_INTERCEPTOR_ORDER = Integer.MIN_VALUE + 1000; /** * the constant SAGA_ACTION_INTERCEPTOR_ORDER */ int SAGA_ACTION_INTERCEPTOR_ORDER = Integer.MIN_VALUE + 1000; /** * the constant DEFAULT_DISTRIBUTED_LOCK_EXPIRE */ int DEFAULT_DISTRIBUTED_LOCK_EXPIRE = 10000; /** * the constant DEFAULT_COMMON_FENCE_CLEAN_PERIOD */ int DEFAULT_COMMON_FENCE_CLEAN_PERIOD = 1; /** * the constant DEFAULT_COMMON_FENCE_LOG_TABLE_NAME */ String DEFAULT_COMMON_FENCE_LOG_TABLE_NAME = "tcc_fence_log"; /** * the constant COMMON_FENCE_BEAN_NAME */ String COMMON_FENCE_BEAN_NAME = "tccFenceConfig"; /** * the constant DEFAULT_RPC_RM_REQUEST_TIMEOUT */ long DEFAULT_RPC_RM_REQUEST_TIMEOUT = Duration.ofSeconds(15).toMillis(); /** * the constant DEFAULT_RPC_TM_REQUEST_TIMEOUT */ long DEFAULT_RPC_TM_REQUEST_TIMEOUT = Duration.ofSeconds(30).toMillis(); /** * the constant DEFAULT_RPC_TC_REQUEST_TIMEOUT */ long DEFAULT_RPC_TC_REQUEST_TIMEOUT = Duration.ofSeconds(15).toMillis(); /** * the constant DEFAULT_APPLICATION_DATA_SIZE_LIMIT */ int DEFAULT_APPLICATION_DATA_SIZE_LIMIT = 64000; /** * the constant DEFAULT_XAER_NOTA_RETRY_TIMEOUT */ int DEFAULT_XAER_NOTA_RETRY_TIMEOUT = 60000; /** * the constant DEFAULT_XA_BRANCH_EXECUTION_TIMEOUT */ int DEFAULT_XA_BRANCH_EXECUTION_TIMEOUT = 60000; /** * the constant DEFAULT_XA_TWO_PHASE_WAIT_TIMEOUT */ int DEFAULT_XA_CONNECTION_TWO_PHASE_HOLD_TIMEOUT = 10000; /** * the constant DEFAULT_SERVER_RAFT_ELECTION_TIMEOUT_MS */ int DEFAULT_SERVER_RAFT_ELECTION_TIMEOUT_MS = 1000; /** * the constant DEFAULT_COMMITING_RETRY_PERIOD */ int DEFAULT_COMMITING_RETRY_PERIOD = 1000; /** * the constant DEFAULT_ASYNC_COMMITTING_RETRY_PERIOD */ int DEFAULT_ASYNC_COMMITTING_RETRY_PERIOD = 1000; /** * the constant DEFAULT_ROLLBACKING_RETRY_PERIOD */ int DEFAULT_ROLLBACKING_RETRY_PERIOD = 1000; /** * the constant DEFAULT_END_STATUS_RETRY_PERIOD */ int DEFAULT_END_STATUS_RETRY_PERIOD = 30 * 1000; /** * the constant DEFAULT_TIMEOUT_RETRY_PERIOD */ int DEFAULT_TIMEOUT_RETRY_PERIOD = 1000; /** * the constant DEFAULT_UNDO_LOG_DELETE_PERIOD */ long DEFAULT_UNDO_LOG_DELETE_PERIOD = 24 * 60 * 60 * 1000; /** * the constant DEFAULT_SERVICE_SESSION_RELOAD_READ_SIZE */ int DEFAULT_SERVICE_SESSION_RELOAD_READ_SIZE = 100; /** * the constant DEFAULT_PROMETHEUS_PORT */ int DEFAULT_PROMETHEUS_PORT = 9898; /** * the const DEFAULT_METRICS_ENABLED */ boolean DEFAULT_METRICS_ENABLED = true; /** * the const DEFAULT_METRICS_REGISTRY_TYPE */ String DEFAULT_METRICS_REGISTRY_TYPE = "compact"; /** * the const DEFAULT_METRICS_EXPORTER_LIST */ String DEFAULT_METRICS_EXPORTER_LIST = "prometheus"; /** * the const DEFAULT_MAX_COMMIT_RETRY_TIMEOUT */ long DEFAULT_MAX_COMMIT_RETRY_TIMEOUT = -1L; /** * the const DEFAULT_MAX_ROLLBACK_RETRY_TIMEOUT */ long DEFAULT_MAX_ROLLBACK_RETRY_TIMEOUT = -1L; /** * The constant DEFAULT_ROLLBACK_FAILED_UNLOCK_ENABLE. */ boolean DEFAULT_ROLLBACK_FAILED_UNLOCK_ENABLE = false; /** * DEFAULT_DISTRIBUTED_LOCK_EXPIRE_TIME */ long DEFAULT_DISTRIBUTED_LOCK_EXPIRE_TIME = 10000; /** * DEFAULT_ENABLE_BRANCH_ASYNC_REMOVE */ boolean DEFAULT_ENABLE_BRANCH_ASYNC_REMOVE = false; /** * The constant DEFAULT_DB_MAX_CONN. */ int DEFAULT_DB_MAX_CONN = 100; /** * The constant DEFAULT_DB_MIN_CONN. */ int DEFAULT_DB_MIN_CONN = 10; /** * The constant DEFAULT_REDIS_MAX_IDLE. */ int DEFAULT_REDIS_MAX_IDLE = 100; /** * The constant DEFAULT_REDIS_MAX_TOTAL. */ int DEFAULT_REDIS_MAX_TOTAL = 100; /** * The constant DEFAULT_REDIS_MIN_IDLE. */ int DEFAULT_REDIS_MIN_IDLE = 10; /** * The constant DEFAULT_QUERY_LIMIT. */ int DEFAULT_QUERY_LIMIT = 1000; /** * Default druid location in classpath */ String DRUID_LOCATION = "lib/sqlparser/druid.jar"; /** * The constant DEFAULT_ROCKET_MQ_MSG_TIMEOUT. */ int DEFAULT_ROCKET_MQ_MSG_TIMEOUT = 60 * 1000; long DEFAULT_DB_DRUID_TIME_BETWEEN_EVICTION_RUNS_MILLIS = 120000; long DEFAULT_DB_DRUID_MIN_EVICTABLE_TIME_MILLIS = 300000; boolean DEFAULT_DB_DRUID_TEST_WHILE_IDLE = true; boolean DEFAULT_DB_DRUID_TEST_ON_BORROW = false; boolean DEFAULT_DB_DRUID_KEEP_ALIVE = false; long DEFAULT_DB_HIKARI_IDLE_TIMEOUT = 600000L; long DEFAULT_DB_HIKARI_KEEPALIVE_TIME = 120000L; long DEFAULT_DB_HIKARI_MAX_LIFE_TIME = 1800000L; long DEFAULT_DB_HIKARI_VALIDATION_TIMEOUT = 5000L; long DEFAULT_DB_DBCP_TIME_BETWEEN_EVICTION_RUNS_MILLIS = 120000; long DEFAULT_DB_DBCP_MIN_EVICTABLE_TIME_MILLIS = 300000; boolean DEFAULT_DB_DBCP_TEST_WHILE_IDLE = true; boolean DEFAULT_DB_DBCP_TEST_ON_BORROW = false; /** * The constant DEFAULT_RATE_LIMIT_ENABLE. */ boolean DEFAULT_RATE_LIMIT_ENABLE = false; /** * The constant DEFAULT_RAFT_SSL_ENABLED. */ boolean DEFAULT_RAFT_SSL_ENABLED = false; List DEFAULT_XSS_KEYWORDS = Arrays.asList( "", "javascript:", "vbscript:", "data:", "expression(", "onerror", "onload", "onclick", "onmouseover", "onfocus", "onblur", "onmouseenter", "onmouseleave", "onkeydown", "onkeyup", "onchange", "