Full Code of apache/incubator-seata for AI

2.x a63866fcea40 cached
3985 files
21.3 MB
4.3M tokens
1 requests
Copy disabled (too large) Download .txt
Showing preview only (17,015K chars total). Download the full file to get everything.
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/
│   │       │

================================================
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
================================================
<!--
    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.
-->
<!-- Please make sure you have read and understood the contributing guidelines -->

- [ ] 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?
<!-- If that, add "fixes #xxx" below in the next line, for example, fixes #97. -->


### Ⅲ. 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
================================================
<!--
    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.
-->
# 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
================================================
<!--
    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.
-->
# 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/<your-username>/incubator-seata`, in which `your-username` is your GitHub username.

1. **CLONE** your own repository to develop locally. Use `git clone git@github.com:<your-username>/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:<your-username>/incubator-seata.git (fetch)
origin     git@github.com:<your-username>/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
================================================
<!--
    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.
-->

# 为 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/<your-username>/incubator-seata`,其中your-username是你的 GitHub 用户名。

2. **克隆** 您自己的存储库以在本地开发. 使用 `git clone git@github.com:<your-username>/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:<your-username>/incubator-seata.git (fetch)
origin     git@github.com:<your-username>/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
================================================
<!--
    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.
-->
<div style="align: center">
<img src="https://img.alicdn.com/imgextra/i1/O1CN011z0JfQ2723QgDiWuH_!!6000000007738-2-tps-1497-401.png"  height="100" width="426"/>
</div>

# 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
<properties>
  <seata.version>2.5.0</seata.version>
</properties>

<dependencies>
<!--dependencies for non-SpringBoot application framework-->
  <dependency>
    <groupId>org.apache.seata</groupId>
    <artifactId>seata-all</artifactId>
    <version>${seata.version}</version>
  </dependency>

<!--If your project base on `Spring Boot`, you can directly use the following dependencies-->
<!--Notice: `seata-spring-boot-starter` has already included `seata-all` dependency-->
  <dependency>
    <groupId>org.apache.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>${seata.version}</version>
  </dependency>
</dependencies>
```

## 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                                                   |
|:---------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------:|
| <img src="https://seata.apache.org/zh-cn/assets/images/dingtalk-group-67f42c9466fb2268b6927bb16b549d6c.jpg"  width="150" /> | <img src="https://seata.apache.org/zh-cn/assets/images/wechat-official-467d10305f5449e6b2096e65d23a9d02.jpg"  width="150" /> | <img src="https://seata.apache.org/zh-cn/assets/images/qq-group-8d8a89699cdb9ba8818364069475ba96.jpg"  width="150" /> | <img src="https://seata.apache.org/zh-cn/assets/images/wechat-f8a87a96973942b826e32d1aed9bc8d9.jpg"  width="150" /> |

## 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.

<div style='vertical-align: middle'>
    <img alt='Alibaba Group' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01TleQq128FAP8POtL5_!!6000000007902-2-tps-241-42.png'  /img>
    <img alt='蚂蚁金服' height='40'  src='https://img.alicdn.com/tfs/TB1wuuCoET1gK0jSZFhXXaAtVXa-496-202.jpg'  /img>
    <img alt='阿里云' height='40'  src='https://img.alicdn.com/tfs/TB1Ly5oS3HqK1RjSZFPXXcwapXa-238-54.png'  /img>
    <img alt='中航信' height='40'  src='https://img.alicdn.com/imgextra/i3/O1CN01Hohqhm1JvGPE4cSD4_!!6000000001090-1-tps-436-84.gif'  /img>
    <img alt='联通(浙江)' height='40'  src='https://img.alicdn.com/tfs/TB1hvabw9f2gK0jSZFPXXXsopXa-174-100.png'  /img>
    <img alt='中国铁塔' height='40'  src='https://img.alicdn.com/imgextra/i3/O1CN01qkkEMZ1Jr8qDmXdAa_!!6000000001081-2-tps-220-67.png'  /img>
    <img alt='滴滴' height='40'  src='https://img.alicdn.com/imgextra/i3/O1CN01RXbaWn1SDbBfpCs1B_!!6000000002213-0-tps-640-458.jpg'  /img>
    <img alt='中国邮政' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01Rkw4z01OPGomOisU1_!!6000000001697-2-tps-220-64.png'  /img>
    <img alt='58集团' height='40'  src='https://img.alicdn.com/imgextra/i3/O1CN01y0Wwc51wxnbw9FDJi_!!6000000006375-2-tps-252-84.png'  /img>
    <img alt='南航' height='40'  src='https://img.alicdn.com/tfs/TB1GMQpZHY1gK0jSZTEXXXDQVXa-203-63.png'  /img>
    <img alt='TCL' height='40'  src='https://img.alicdn.com/tfs/TB1oHThw.Y1gK0jSZFCXXcwqXXa-214-200.png'  /img>
    <img alt='韵达快递' height='40'  src='https://img.alicdn.com/imgextra/i3/O1CN01McNkv624Z5AKVHR0h_!!6000000007404-2-tps-140-54.png'  /img>
    <img alt='科大讯飞' height='40'  src='https://img.alicdn.com/tfs/TB1x0p5jxvbeK8jSZPfXXariXXa-272-83.png'  /img>
    <img alt='奇虎360' height='40'  src='https://img.alicdn.com/imgextra/i2/O1CN01M9aSuY1nQWGxoVQu9_!!6000000005084-2-tps-239-78.png' /img>
    <img alt='收钱吧' height='40' src='https://img.alicdn.com/imgextra/i1/O1CN01PmTFnO1gZ2K7GUpgh_!!6000000004155-2-tps-2406-747.png' /img>
    <img alt='太极计算机' height='40'  src='https://img.alicdn.com/tfs/TB1.zqEoAL0gK0jSZFAXXcA9pXa-245-38.png'  /img>
    <img alt='美的集团' height='40' src='https://img.alicdn.com/tfs/TB1cgvjwYj1gK0jSZFOXXc7GpXa-1040-282.png'  /img>    
    <img alt='中国网安' height='40' src='https://img.alicdn.com/imgextra/i3/O1CN01OioqXX1dfxSxg6DYn_!!6000000003764-2-tps-574-122.png' /img>
    <img alt='政采云' height='40'  src='https://img.alicdn.com/tfs/TB1DDiCorY1gK0jSZTEXXXDQVXa-440-114.jpg'  /img>
    <img alt='浙江公安厅' height='40'  src='https://img.alicdn.com/tfs/TB1SXGzoxn1gK0jSZKPXXXvUXXa-426-180.jpg'  /img>
    <img alt='特步' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01qo6gfd1l7AK1LIF8t_!!6000000004771-2-tps-132-40.png'  /img>
    <img alt='中通快递' height='40'  src='https://img.alicdn.com/tfs/TB1rCNSFxn1gK0jSZKPXXXvUXXa-172-31.png'  /img>
    <img alt='欧莱雅百库' height='40'  src='https://img.alicdn.com/tfs/TB1Xa3bZQL0gK0jSZFtXXXQCXXa-936-93.png'  /img> 
    <img alt='浙江烟草' height='40'  src='https://img.alicdn.com/tfs/TB1e7Wiovb2gK0jSZK9XXaEgFXa-1028-160.jpg'  /img>
    <img alt='波司登' height='40'  src='https://img.alicdn.com/tfs/TB12cmCouL2gK0jSZFmXXc7iXXa-310-110.jpg'  /img> 
    <img alt='凯京科技' height='40'  src='https://img.alicdn.com/tfs/TB1j0dEop67gK0jSZPfXXahhFXa-400-208.jpg'  /img>
    <img alt='点购集团' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01edO0ox1Nu7syhwbAy_!!6000000001629-2-tps-300-112.png'  /img>
    <img alt='求是创新健康' height='40'  src='https://img.alicdn.com/imgextra/i3/O1CN01hygG6821bQLGWN8tm_!!6000000007003-2-tps-98-52.png'  /img>
    <img alt='科蓝' height='40'  src='https://img.alicdn.com/tfs/TB1tuSyouT2gK0jSZFvXXXnFXXa-304-94.jpg'  /img>
    <img alt='康美药业' height='40'  src='https://img.alicdn.com/imgextra/i4/O1CN01BWFT271rXAVLUYWWG_!!6000000005640-2-tps-185-40.png'  /img>
    <img alt='雁联' height='40'  src='https://img.alicdn.com/tfs/TB1c8iCouL2gK0jSZFmXXc7iXXa-428-102.jpg'  /img>
    <img alt='学两手' height='40'  src='https://img.alicdn.com/imgextra/i4/O1CN01njYJ2J1ytnNhCFWcI_!!6000000006637-2-tps-340-104.png'  /img>
    <img alt='衣二三' height='40'  src='https://img.alicdn.com/tfs/TB1OCGioCf2gK0jSZFPXXXsopXa-500-179.jpg'  /img>
    <img alt='北京薪福社' height='40'  src='https://img.alicdn.com/tfs/TB1Atu9ovzO3e4jSZFxXXaP_FXa-310-60.png'  /img> 
    <img alt='叩丁狼教育' height='40'  src='https://img.alicdn.com/tfs/TB1pfYTpRBh1e4jSZFhXXcC9VXa-151-72.png'  /img> 
    <img alt='悦途出行' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01F5wna31NJwavQ0r4w_!!6000000001550-2-tps-171-48.png'  /img>
    <img alt='国信易企签' height='40'  src='https://img.alicdn.com/tfs/TB1UTwmZFT7gK0jSZFpXXaTkpXa-201-85.png'  /img>  
    <img alt='睿颐软件' height='40'  src='https://img.alicdn.com/tfs/TB143R4op67gK0jSZPfXXahhFXa-148-42.png'  /img>
    <img alt='全房通' height='40'  src='https://img.alicdn.com/tfs/TB1iMSAopP7gK0jSZFjXXc5aXXa-398-182.jpg'  /img> 
    <img alt='有利网' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01b1huj51aYDwz4RqSQ_!!6000000003341-2-tps-350-51.png'  /img>
    <img alt='赛维' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01SekTsn25izLZW7IKo_!!6000000007561-2-tps-270-124.png'  /img>
    <img alt='安心保险' height='40'  src='https://img.alicdn.com/imgextra/i2/O1CN01cyUkSO20BUISGUjyw_!!6000000006811-2-tps-149-114.png'  /img>
    <img alt='科达科技' height='40'  src='https://img.alicdn.com/tfs/TB1JvOjouT2gK0jSZFvXXXnFXXa-386-146.jpg'  /img>
    <img alt='会分期' height='40'  src='https://img.alicdn.com/tfs/TB1ChKFoBr0gK0jSZFnXXbRRXXa-402-166.jpg'  /img>
    <img alt='会找房' height='40'  src='https://img.alicdn.com/tfs/TB1bNWFoBr0gK0jSZFnXXbRRXXa-398-336.jpg'  /img>
    <img alt='会通教育' height='40'  src='https://img.alicdn.com/tfs/TB1_D9Boxn1gK0jSZKPXXXvUXXa-580-218.jpg'  /img>
    <img alt='享住智慧' height='40'  src='https://img.alicdn.com/imgextra/i2/O1CN01u3zEdz1Puhc2jO2kT_!!6000000001901-2-tps-114-43.png'  /img>
    <img alt='兰亮网络' height='40'  src='https://img.alicdn.com/tfs/TB1_miroq61gK0jSZFlXXXDKFXa-283-70.png'  /img>
    <img alt='桔子数科' height='40'  src='https://img.alicdn.com/tfs/TB1HD.oZUY1gK0jSZFMXXaWcVXa-300-300.png'  /img> 
    <img alt='蓝天教育' height='40'  src='https://img.alicdn.com/tfs/TB1CaSroAT2gK0jSZPcXXcKkpXa-492-176.jpg'  /img>
    <img alt='烟台欣和' height='40'  src='https://img.alicdn.com/imgextra/i3/O1CN01lp3KWN1uGd2y6CEAx_!!6000000006010-2-tps-1383-1023.png'  /img>
    <img alt='阿康健康' height='40'  src='https://img.alicdn.com/tfs/TB1JNSqouH2gK0jSZFEXXcqMpXa-450-182.jpg'  /img>
    <img alt='财新传媒' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01MMilH71k2IUuZsp45_!!6000000004625-2-tps-128-80.png'  /img>
    <img alt='新脉远' height='40'  src='https://img.alicdn.com/tfs/TB1NV1uouH2gK0jSZJnXXaT1FXa-462-172.jpg'  /img>
    <img alt='乾动新能源' height='40'  src='https://img.alicdn.com/imgextra/i2/O1CN01ZTwkxR1VubDVHuxii_!!6000000002713-2-tps-72-50.png'  /img>
    <img alt='路客精品民宿' height='40'  src='https://img.alicdn.com/tfs/TB1CCavoBr0gK0jSZFnXXbRRXXa-240-100.png'  /img>
    <img alt='深圳好尔美' height='40'  src='https://img.alicdn.com/tfs/TB1IIivoxD1gK0jSZFyXXciOVXa-200-130.png'  /img>
    <img alt='浙大睿医' height='40'  src='https://img.alicdn.com/tfs/TB1kQThrFY7gK0jSZKzXXaikpXa-220-110.jpg'  /img>
    <img alt='深圳市云羿贸易科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB15r7dZHY1gK0jSZTEXXXDQVXa-234-233.png'  /img> 
    <img alt='居然之家' height='40'  src='https://img.alicdn.com/tfs/TB1LK6jrUT1gK0jSZFrXXcNCXXa-180-54.png'  /img>
    <img alt='深圳来电科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1SEzM0eL2gK0jSZFmXXc7iXXa-154-45.png'  /img> 
    <img alt='臻善科技' height='40'  src='https://img.alicdn.com/imgextra/i3/O1CN01g9LjBW1YCa03USGaO_!!6000000003023-2-tps-158-29.png'  /img>
    <img alt='中国支付通' height='40'  src='https://img.alicdn.com/tfs/TB1VGpTFET1gK0jSZFrXXcNCXXa-193-55.png'  /img>
    <img alt='众网小贷' height='40'  src='https://img.alicdn.com/tfs/TB19Y8XFEY1gK0jSZFMXXaWcVXa-160-60.png'  /img>
    <img alt='谐云科技' height='40'  src='https://img.alicdn.com/tfs/TB1V1YlrRv0gK0jSZKbXXbK2FXa-514-160.png'  /img>
    <img alt='浙江甄品' height='40'  src='https://img.alicdn.com/tfs/TB1oC2prND1gK0jSZFyXXciOVXa-246-124.jpg'  /img>
    <img alt='深圳海豚网' height='40'  src='https://img.alicdn.com/tfs/TB1defkrLb2gK0jSZK9XXaEgFXa-434-146.jpg'  /img>
    <img alt='汇通天下' height='40'  src='https://img.alicdn.com/tfs/TB1uIHmrHr1gK0jSZR0XXbP8XXa-1024-568.png'  /img>
    <img alt='九机网' height='40'  src='https://img.alicdn.com/tfs/TB1ERHlrUY1gK0jSZFMXXaWcVXa-120-60.png'  /img>
    <img alt='有好东西' height='40'  src='https://img.alicdn.com/tfs/TB1LT2lrNn1gK0jSZKPXXXvUXXa-300-300.jpg'  /img>
    <img alt='南京智慧盾' height='40'  src='https://img.alicdn.com/tfs/TB1s2LprUY1gK0jSZFCXXcwqXXa-618-148.jpg'  /img>
    <img alt='数跑科技' height='40'  src='https://img.alicdn.com/tfs/TB1qtGew7T2gK0jSZPcXXcKkpXa-294-104.png'  /img>
    <img alt='拉粉粉' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN0191WwyY1d8WZaQZcjA_!!6000000003691-2-tps-200-200.png'  /img> 
    <img alt='汇通达' height='40'  src='https://img.alicdn.com/tfs/TB1KVJ9wWL7gK0jSZFBXXXZZpXa-145-59.png'  /img>
    <img alt='易宝支付' height='40'  src='https://img.alicdn.com/tfs/TB1vWafw7T2gK0jSZFkXXcIQFXa-301-100.png'  /img>
    <img alt='维恩贝特' height='40'  src='https://img.alicdn.com/imgextra/i2/O1CN01Nop2ji1glrR8j0u21_!!6000000004183-2-tps-120-50.png'  /img>
    <img alt='八库' height='40' src='https://img.alicdn.com/tfs/TB1hC5cwVY7gK0jSZKzXXaikpXa-318-134.png'  /img>
    <img alt='大诚若谷' height='40'  src='https://img.alicdn.com/tfs/TB1VuPhw4D1gK0jSZFyXXciOVXa-294-124.png'  /img>
    <img alt='杭州华网信息' height='40'  src='https://img.alicdn.com/tfs/TB1FFX6FqL7gK0jSZFBXXXZZpXa-288-101.png'  /img>  
    <img alt='深圳易佰' height='40'  src='https://img.alicdn.com/tfs/TB1gkXaFrr1gK0jSZR0XXbP8XXa-187-57.png'  /img>
    <img alt='易点生活' height='40' src='https://img.alicdn.com/imgextra/i3/O1CN01svojxj1LuvK3hgQ5Y_!!6000000001360-2-tps-133-48.png' /img>
    <img alt='成都数智索' height='40'  src='https://img.alicdn.com/tfs/TB1oJKiw4D1gK0jSZFyXXciOVXa-2053-377.png'  /img>  
    <img alt='北京超图' height='40'  src='https://img.alicdn.com/tfs/TB1eKFXFEz1gK0jSZLeXXb9kVXa-163-54.png'  /img>
    <img alt='江西群享科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1Qcd0p79l0K4jSZFKXXXFjpXa-372-125.png'  /img> 
    <img alt='宋城独木桥网络有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1UKocmPMZ7e4jSZFOXXX7epXa-234-82.png'  /img> 
    <img alt='唯小宝(江苏)网络技术有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1eswAZFP7gK0jSZFjXXc5aXXa-800-800.png'  /img> 
    <img alt='杭州喜团科技' height='40'  src='https://img.alicdn.com/tfs/TB1IXqgwYj1gK0jSZFuXXcrHpXa-197-58.png'  /img>
    <img alt='海典软件' height='40'  src='https://img.alicdn.com/tfs/TB1KmosZNv1gK0jSZFFXXb0sXXa-247-61.png'  /img> 
    <img alt='中元健康科技有限公司' height='40' src='https://img.alicdn.com/imgextra/i3/O1CN018aBoRi1ZOm8uiOJwA_!!6000000003185-0-tps-1659-569.jpg' /img>
    <img alt='宿迁民丰农商银行' height='40'  src='https://img.alicdn.com/tfs/TB1bH5fw7L0gK0jSZFAXXcA9pXa-442-39.png'  /img>
    <img alt='上海海智在线' height='40' src='https://img.alicdn.com/tfs/TB1xAJUFy_1gK0jSZFqXXcpaXXa-320-80.jpg'  /img>
    <img alt='丞家(上海)公寓管理' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01bQlU6F1r8R7GYzQxf_!!6000000005586-2-tps-318-60.png'  /img>
    <img alt='安徽国科新材科' height='40'  src='https://img.alicdn.com/tfs/TB1ICJfFuH2gK0jSZJnXXaT1FXa-654-232.png'  /img>
    <img alt='商银信支付' height='40' src='https://img.alicdn.com/tfs/TB1rxndw4n1gK0jSZKPXXXvUXXa-150-68.png'   /img>
    <img alt='钛师傅云' height='40'  src='https://img.alicdn.com/imgextra/i4/O1CN01jEUKEJ1WS28EnlGRb_!!6000000002786-2-tps-240-60.png'  /img>
    <img alt='广州力生信息' height='40'  src='https://img.alicdn.com/tfs/TB1m0FcFuH2gK0jSZFEXXcqMpXa-139-48.png'  /img>
    <img alt='杭州启舰科技有限公司' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01XJFoMP1qIDxrcCFC8_!!6000000005472-2-tps-120-46.png'  /img>
    <img alt='微链' height='40'  src='https://img.alicdn.com/tfs/TB14LhHmMgP7K4jSZFqXXamhVXa-300-135.png'  /img> 
    <img alt='上海美浮特' height='40'  src='https://img.alicdn.com/tfs/TB1uUtaFuT2gK0jSZFvXXXnFXXa-370-45.jpg'  /img>    
    <img alt='江西群享科技有限公司' height='40' src='https://img.alicdn.com/imgextra/i3/O1CN018AiGbE1PZdN8Vu4Fd_!!6000000001855-2-tps-630-220.png' /img>
    <img alt='杭州中威慧云医疗科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1iqo_FaL7gK0jSZFBXXXZZpXa-361-54.jpg'  /img> 
    <img alt='易族智汇(北京)' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01fkwike1yZdx8ZBeP6_!!6000000006593-2-tps-460-136.png'  /img> 
    <img alt='佛山宅无限' height='40'  src='https://img.alicdn.com/imgextra/i4/O1CN01onGhwm1j2vQTRjmx8_!!6000000004491-2-tps-100-48.png'  /img>     
    <img alt='F5未来商店' height='40'  src='https://img.alicdn.com/imgextra/i3/O1CN014QzjZ31l7AK1LINSu_!!6000000004771-2-tps-1073-175.png'  /img>  
    <img alt='重庆雷高科技有限公司' height='40' src='https://img.alicdn.com/imgextra/i3/O1CN01TKiMMC1VQpSIe3n7i_!!6000000002648-2-tps-931-865.png' /img>
    <img alt='甄品信息科技' height='40'  src='https://img.alicdn.com/tfs/TB1SxJWFEY1gK0jSZFCXXcwqXXa-185-65.png'  /img>  
    <img alt='行云全球汇跨境电商(杭州分部)' height='40'  src='https://img.alicdn.com/imgextra/i1/O1CN01tiLZ0d1dvWx2Dwl4N_!!6000000003798-2-tps-189-45.png'  /img>  
    <img alt='世纪加华' height='40'  src='https://img.alicdn.com/imgextra/i3/O1CN012jqfoI22wmQR2jiiY_!!6000000007185-0-tps-200-93.jpg'  /img>     
    <img alt='快陪练' height='40'  src='https://img.alicdn.com/tfs/TB1rhNRFAL0gK0jSZFtXXXQCXXa-321-96.png'  /img> 
    <img alt='西南石油大学' height='40'  src='https://img.alicdn.com/imgextra/i4/O1CN012swbCB1HU7hgxsF8r_!!6000000000760-0-tps-121-121.jpg'  /img> 
    <img alt='厦门服云信息科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1zuAzZKL2gK0jSZFmXXc7iXXa-691-263.png'  /img> 
    <img alt='领课网络' height='40'  src='https://img.alicdn.com/tfs/TB18TNRFEz1gK0jSZLeXXb9kVXa-244-60.jpg'  /img> 
    <img alt='美通社' height='40'  src='https://img.alicdn.com/tfs/TB1i1JTFCf2gK0jSZFPXXXsopXa-151-60.png'  /img> 
    <img alt='睿维科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1ztXXFpY7gK0jSZKzXXaikpXa-179-60.png'  /img> 
    <img alt='郑州信源信息技术' height='40'  src='https://img.alicdn.com/tfs/TB1SkJ9FuT2gK0jSZFvXXXnFXXa-266-56.png'  /img>     
    <img alt='荣怀集团' height='40'  src='https://img.alicdn.com/tfs/TB1AzbWgZKfxu4jSZPfXXb3dXXa-1117-382.png'  /img>  
    <img alt='浙江群集大数据科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1HtFZFq61gK0jSZFlXXXDKFXa-1375-214.png'  /img>  
    <img alt='北京易点租有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1nax.FuH2gK0jSZFEXXcqMpXa-336-154.png'  /img>  
    <img alt='浙江蕙康科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1nS7IZNv1gK0jSZFFXXb0sXXa-716-193.png'  /img>  
    <img alt='致远创想' height='40'  src='https://img.alicdn.com/tfs/TB13aaKpA9l0K4jSZFKXXXFjpXa-300-300.png'  /img> 
    <img alt='深圳智荟物联技术有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1To3amPMZ7e4jSZFOXXX7epXa-1228-500.png'  /img> 
    <img alt='源讯中国' height='40'  src='https://img.alicdn.com/tfs/TB1CZuKpA9l0K4jSZFKXXXFjpXa-283-92.png'  /img> 
    <img alt='武汉江寓生活服务有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1E4slZFT7gK0jSZFpXXaTkpXa-268-268.png'  /img> 
    <img alt='大账房' height='40'  src='https://img.alicdn.com/tfs/TB1.sIyZKL2gK0jSZFmXXc7iXXa-121-121.png'  /img> 
    <img alt='上海阳光喔教育科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1aUUcZHY1gK0jSZTEXXXDQVXa-246-72.png'  /img> 
    <img alt='北京新学道教育科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1v3.gZLb2gK0jSZK9XXaEgFXa-240-240.png'  /img> 
    <img alt='北京悦途出行网络科技公司' height='40'  src='https://img.alicdn.com/tfs/TB1VHkrZHr1gK0jSZFDXXb9yVXa-248-80.png'  /img> 
    <img alt='上海意贝斯特信息技术有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1kGElZUH1gK0jSZSyXXXtlpXa-126-48.png'  /img> 
    <img alt='御家汇' height='40'  src='https://img.alicdn.com/tfs/TB1kIIqZUY1gK0jSZFMXXaWcVXa-90-80.png'  /img> 
    <img alt='广州社众软件' height='40'  src='https://img.alicdn.com/tfs/TB1CawkZND1gK0jSZFsXXbldVXa-112-112.png'  /img> 
    <img alt='浩鲸科技' height='40'  src='https://img.alicdn.com/tfs/TB1fxZqZQL0gK0jSZFAXXcA9pXa-300-300.png'  /img> 
    <img alt='华宇信息' height='40'  src='https://img.alicdn.com/tfs/TB1q3UiZKL2gK0jSZPhXXahvXXa-802-271.png'  /img> 
    <img alt='中国云尚科技' height='40'  src='https://img.alicdn.com/tfs/TB1uf7bZQL0gK0jSZFtXXXQCXXa-303-65.png'  /img> 
    <img alt='卫宁健康' height='40'  src='https://img.alicdn.com/tfs/TB1WMgmZUY1gK0jSZFCXXcwqXXa-189-57.png'  /img> 
    <img alt='聚合联动' height='40'  src='https://img.alicdn.com/tfs/TB1gnllpnM11u4jSZPxXXahcXXa-150-60.png'  /img> 
    <img alt='熙菱信息' height='40'  src='https://img.alicdn.com/tfs/TB1NJmLpA9l0K4jSZFKXXXFjpXa-195-60.png'  /img> 
    <img alt='鲸算科技' height='40'  src='https://img.alicdn.com/tfs/TB1jfCLpA9l0K4jSZFKXXXFjpXa-514-220.png'  /img> 
    <img alt='杭州沃朴物联科技有限公司' height='40'  src='https://img.alicdn.com/tfs/TB1vxJ.ZVT7gK0jSZFpXXaTkpXa-309-51.png'  /img> 
    <img alt='深圳市臻络科技有限公司' height='40' src='https://img.alicdn.com/tfs/TB1v5eiZ.T1gK0jSZFrXXcNCXXa-500-41.png'  /img> 
    <img alt='白云电气' height='40' src='https://img.alicdn.com/imgextra/i2/O1CN01QPEPnx1zaOC9n4QXE_!!6000000006730-0-tps-781-100.jpg' /img>
    <img alt='百果园' height='40' src='https://img.alicdn.com/imgextra/i3/O1CN018XKqWK1VPSHxBxLHR_!!6000000002645-2-tps-295-79.png' /img>
    <img alt='海尔' height='40' src='https://img.alicdn.com/imgextra/i1/O1CN01UkbkeF1PCjajbslRf_!!6000000001805-0-tps-200-200.jpg' /img>
    <img alt='六倍体科技' height='40' src='https://img.alicdn.com/imgextra/i2/O1CN01TuPFhT288krOXRXQC_!!6000000007888-0-tps-200-200.jpg' /img>
    <img alt='泉州银行' height='40' src='https://img.alicdn.com/imgextra/i2/O1CN01tUg4Nw1mULzRSQr4B_!!6000000004957-2-tps-447-346.png' /img>
    <img alt='小滴课堂' height='40' src='https://img.alicdn.com/imgextra/i2/O1CN01sWwoq21VPSHmzCqh7_!!6000000002645-2-tps-200-100.png' /img>
    <img alt='医百顺' height='40' src='https://img.alicdn.com/imgextra/i1/O1CN01obgBun1PjFiKUoWGr_!!6000000001876-2-tps-192-192.png' /img>
    <img alt='正泰中自控制' height='40' src='https://img.alicdn.com/imgextra/i2/O1CN01i8iiCk29QuAitxiJq_!!6000000008063-0-tps-378-123.jpg' /img>
    <img alt='中国电子科技网络' height='40' src='https://img.alicdn.com/imgextra/i2/O1CN01LBYXi6288krJ6Axq8_!!6000000007888-2-tps-1206-158.png' /img>
    <img alt='卓源软件' height='40' src='https://img.alicdn.com/imgextra/i2/O1CN01FN4K3I1Sq4SQVsDxo_!!6000000002297-2-tps-414-95.png' /img>
    <img alt='重庆直通物流有限公司' height='40' src='https://img.alicdn.com/imgextra/i2/O1CN0130Bp8H1STd65Fnxn0_!!6000000002248-2-tps-677-172.png' /img>
    <img alt='海澜集团' height='40' src='https://img.alicdn.com/imgextra/i1/O1CN0186ESVW1hhZO7Otx4X_!!6000000004309-2-tps-376-108.png' /img>
    <img alt='南宁微服信息技术有限公司' height='40' src='https://img.alicdn.com/imgextra/i2/O1CN011hLbRH1fTiAi6Lq5Z_!!6000000004008-0-tps-283-283.jpg' /img>
    <img alt='日事清' height='40' src='https://img.alicdn.com/imgextra/i3/O1CN01cJQsV91Fz9LeJEaL1_!!6000000000557-0-tps-339-189.jpg' /img>
    <img alt='小鹏汽车' height='40' src='https://img.alicdn.com/imgextra/i4/O1CN01KvsEOP21a3CUzDllu_!!6000000007000-2-tps-1920-750.png' /img>
    <img alt='平安人寿' height='40' src='https://img.alicdn.com/imgextra/i1/O1CN01Erdiwd1RrcDt2bqKl_!!6000000002165-0-tps-1080-1080.jpg' /img>
    <img alt='光大银行' height='40' src='https://img.alicdn.com/imgextra/i4/O1CN01Rc0vU61sSQ3jvR0rw_!!6000000005765-2-tps-1076-228.png' /img>
</div>


================================================
FILE: SECURITY.md
================================================
<!--
    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.
-->
# 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
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.

-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.apache.seata</groupId>
        <artifactId>seata-build</artifactId>
        <version>${revision}</version>
        <relativePath>../build/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>seata-all</artifactId>
    <name>Seata All-in-one ${project.version}</name>
    <description>Seata is an easy-to-use, high-performance, java based, open source distributed transaction solution.</description>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-dependencies</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- seata projects -->
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-config-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-config-custom</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-config-apollo</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-config-nacos</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-config-zk</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-config-consul</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-config-etcd3</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-config-spring-cloud</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-custom</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-consul</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-eureka</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-nacos</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-redis</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-sofa</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-raft</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-zk</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-etcd3</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-discovery-namingserver</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-brpc</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-http</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-http-jakarta</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-dubbo-alibaba</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-sofa-rpc</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-motan</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-rm</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-rm-datasource</artifactId>
            <version>${project.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>seata-compressor-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-rocketmq</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-sqlparser-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-sqlparser-antlr</artifactId>
            <version>${project.version}</version>
            <!-- Slimming down for 'seata-all.jar' -->
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-sqlparser-druid</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-spring</artifactId>
            <version>${project.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>seata-serializer-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-tcc</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-tm</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-serializer-seata</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-serializer-protobuf</artifactId>
            <version>${project.version}</version>
            <!-- Slimming down for 'seata-all.jar' -->
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-grpc</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-hsf</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-serializer-fory</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-serializer-kryo</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-serializer-hessian</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-serializer-fastjson2</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-compressor-gzip</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-compressor-bzip2</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-compressor-zip</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-compressor-lz4</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-compressor-deflater</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-compressor-zstd</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- saga -->
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-saga-processctrl</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-saga-statelang</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-saga-engine</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-saga-rm</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-saga-engine-store</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-saga-spring</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.seata</groupId>
            <artifactId>seata-saga-annotation</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-all</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- spring  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
        </dependency>
        <!-- the 3rd part -->
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
        </dependency>
        <dependency>
            <groupId>org.antlr</groupId>
            <artifactId>antlr4</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <dependency>
            <groupId>com.typesafe</groupId>
            <artifactId>config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo.extensions</groupId>
            <artifactId>dubbo-filter-seata</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.seata</groupId>
                    <artifactId>seata-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.edas</groupId>
            <artifactId>edas-sdk</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alipay.sofa</groupId>
            <artifactId>registry-client-all</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alipay.sofa</groupId>
            <artifactId>hessian</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.spring</groupId>
            <artifactId>spring-context-support</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.netflix.eureka</groupId>
            <artifactId>eureka-client</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.netflix.archaius</groupId>
            <artifactId>archaius-core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.ecwid.consul</groupId>
            <artifactId>consul-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>io.etcd</groupId>
            <artifactId>jetcd-core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>listenablefuture</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alipay.sofa</groupId>
            <artifactId>sofa-rpc-all</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.weibo</groupId>
            <artifactId>motan-core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.weibo</groupId>
            <artifactId>motan-transport-netty</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>io.protostuff</groupId>
            <artifactId>protostuff-core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>io.protostuff</groupId>
            <artifactId>protostuff-runtime</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-netty</artifactId>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-protobuf</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-stub</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.esotericsoftware</groupId>
            <artifactId>kryo</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.dameng</groupId>
            <artifactId>DmJdbcDriver18</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.caucho</groupId>
            <artifactId>hessian</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>de.javakaffee</groupId>
            <artifactId>kryo-serializers</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>at.yawk.lz4</groupId>
            <artifactId>lz4-java</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy</artifactId>
        </dependency>
    </dependencies>

    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>${os-maven-plugin.version}</version>
            </extension>
        </extensions>
        <resources>
            <resource>
                <directory>${user.dir}</directory>
                <includes>
                    <include>LICENSE</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <!-- Shade -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createSourcesJar>true</createSourcesJar>
                            <promoteTransitiveDependencies>false</promoteTransitiveDependencies>
                            <keepDependenciesWithProvidedScope>false</keepDependenciesWithProvidedScope>
                            <createDependencyReducedPom>true</createDependencyReducedPom>
                            <artifactSet>
                                <includes>
                                    <include>org.apache.seata:*</include>
                                    <include>io.seata:*</include>
                                </includes>
                            </artifactSet>
                            <transformers>
                                <!-- META-INF/services -->
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                                <!-- spring相关 -->
                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.handlers</resource>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.schemas</resource>
                                </transformer>
                            </transformers>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>file.conf</exclude>
                                        <exclude>registry.conf</exclude>
                                    </excludes>
                                </filter>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/maven/**</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- Easyj -->
            <plugin>
                <groupId>icu.easyj.maven.plugins</groupId>
                <artifactId>easyj-maven-plugin</artifactId>
                <executions>
                    <!-- Use this goal to recreate the '.flattened-pom.xml' after shade. -->
                    <execution>
                        <id>create-pom-file</id>
                        <phase>package</phase>
                        <goals>
                            <goal>create-pom-file</goal>
                        </goals>
                    </execution>
                </executions>
                <!-- the config of the 'simplify-pom' plugin -->
                <configuration>
                    <keepProvidedDependencies>true</keepProvidedDependencies>
                    <keepOptionalDependencies>true</keepOptionalDependencies>
                    <excludeDependencies>
                        <!-- Exclude dependencies that need to be shaded. -->
                        <dependency>io.seata:seata-all</dependency>
                        <dependency>org.apache.seata:*</dependency>
                    </excludeDependencies>
                </configuration>
            </plugin>
            <!-- Dependency -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <!-- Javadoc -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <configuration>
                            <charset>${project.build.sourceEncoding}</charset>
                            <failOnError>false</failOnError>
                            <encoding>${project.build.sourceEncoding}</encoding>
                            <detectOfflineLinks>true</detectOfflineLinks>
                            <breakiterator>true</breakiterator>
                            <author>false</author>
                            <keywords>true</keywords>
                            <quiet>true</quiet>
                            <includeDependencySources>true</includeDependencySources>
                            <dependencySourceIncludes>
                                <dependencySourceInclude>io.seata:seata-*</dependencySourceInclude>
                            </dependencySourceIncludes>
                            <additionalparam>-Xdoclint:none</additionalparam>
                        </configuration>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>


================================================
FILE: bom/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.

-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.apache.seata</groupId>
        <artifactId>seata-build</artifactId>
        <version>${revision}</version>
        <relativePath>../build/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>seata-bom</artifactId>
    <packaging>pom</packaging>

    <name>Seata bom ${project.version}</name>
    <description>Seata bom</description>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-all</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-config-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-config-custom</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-config-apollo</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-config-nacos</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-config-zk</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-config-all</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-config-etcd3</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-config-consul</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-config-spring-cloud</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-consul</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-custom</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-all</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-eureka</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-zk</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-namingserver</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-redis</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-nacos</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-etcd3</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-sofa</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-discovery-raft</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-brpc</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-dubbo</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-dubbo-alibaba</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-sofa-rpc</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-motan</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-grpc</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-hsf</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-http</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-rocketmq</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-rm</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-rm-datasource</artifactId>
                <version>${project.version}</version>
            </dependency>
            <!-- the 'seata-server' is an application, not a dependency
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-server</artifactId>
                <version>${project.version}</version>
            </dependency>
            -->
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-spring</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-tcc</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-tm</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-metrics-all</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-metrics-api</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-metrics-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-metrics-registry-compact</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-metrics-exporter-prometheus</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-serializer-all</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-serializer-protobuf</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-serializer-seata</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-serializer-kryo</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-serializer-hessian</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-spring-boot-starter</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-compressor-all</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-compressor-gzip</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-compressor-zip</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-compressor-bzip2</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-compressor-lz4</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-compressor-deflater</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-compressor-zstd</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-saga-processctrl</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-saga-statelang</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-saga-engine</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-saga-rm</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-saga-engine-store</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-saga-annotation</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-sqlparser-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-sqlparser-antlr</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>seata-sqlparser-druid</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.seata</groupId>
                <artifactId>apm-seata-skywalking-plugin</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>


================================================
FILE: build/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.

-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>19</version>
        <relativePath/>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.seata</groupId>
    <artifactId>seata-build</artifactId>
    <packaging>pom</packaging>
    <version>${revision}</version>

    <name>Seata Build ${project.version}</name>
    <description>plugin management for Seata built with Maven</description>
    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <organization>
        <name>Apache</name>
        <url>https://github.com/apache</url>
    </organization>

    <url>https://seata.apache.org</url>

    <developers>
        <developer>
            <id>Seata</id>
            <name>Seata</name>
            <url>https://seata.apache.org</url>
            <email>dev@seata.apache.org</email>
        </developer>
    </developers>

    <issueManagement>
        <system>github</system>
        <url>https://github.com/apache/incubator-seata/issues</url>
    </issueManagement>

    <scm>
        <url>git@github.com:apache/incubator-seata.git</url>
        <connection>scm:git@github.com:apache/incubator-seata.git</connection>
        <developerConnection>scm:git@github.com:apache/incubator-seata.git</developerConnection>
    </scm>

    <properties>
        <!-- seata version -->
        <revision>2.7.0-SNAPSHOT</revision>

        <!-- Compiler settings properties -->
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- The version of spring-boot for 'spring-boot-dependencies' and 'spring-boot-maven-plugin' -->
        <spring-boot.version>2.7.18</spring-boot.version>
        <spring-framework-bom.version>5.3.39</spring-framework-bom.version>

        <!--  server side dependency-->
        <kafka-appender.version>0.2.0-RC2</kafka-appender.version>
        <kafka-clients.version>3.6.1</kafka-clients.version>
        <snakeyaml.version>2.0</snakeyaml.version>
        <bucket4j.version>8.1.0</bucket4j.version>

        <!-- For test -->
        <junit-jupiter.version>5.8.2</junit-jupiter.version>
        <junit-platform.version>1.8.2</junit-platform.version>

        <!-- Maven plugin versions -->
        <!-- Build -->
        <easyj-maven-plugin.version>1.1.5</easyj-maven-plugin.version>
        <maven-clean-plugin.version>3.1.0</maven-clean-plugin.version>
        <!-- Compiler -->
        <maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version>
        <protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
        <kotlin-maven-plugin.version>2.2.20</kotlin-maven-plugin.version>
        <!-- Check -->
        <maven-pmd-plugin.version>3.8</maven-pmd-plugin.version>
        <p3c-pmd.version>1.3.6</p3c-pmd.version>
        <maven-javadoc-plugin.version>3.0.0</maven-javadoc-plugin.version>
        <license-maven-plugin.version>4.0</license-maven-plugin.version>
        <mojo-license-maven-plugin.version>1.20</mojo-license-maven-plugin.version>
        <maven-checkstyle-plugin.version>3.1.1</maven-checkstyle-plugin.version>
        <spotless-maven-plugin.version>2.44.3</spotless-maven-plugin.version>
        <palantirJavaFormat.version>2.38.0</palantirJavaFormat.version>
        <maven-enforcer-plugin.version>3.0.0-M3</maven-enforcer-plugin.version>
        <dependency-check-maven.version>12.1.0</dependency-check-maven.version>
        <!-- Test -->
        <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
        <jacoco-maven-plugin.version>0.8.14</jacoco-maven-plugin.version>
        <!-- Packaging -->
        <maven-source-plugin.version>2.2.1</maven-source-plugin.version>
        <maven-resources-plugin.version>3.2.0</maven-resources-plugin.version>
        <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
        <maven-shade-plugin.version>2.4.3</maven-shade-plugin.version>
        <maven-dependency-plugin.version>3.0.2</maven-dependency-plugin.version>
        <maven-assembly-plugin.version>3.0.0</maven-assembly-plugin.version>
        <jib-maven-plugin.version>3.5.1</jib-maven-plugin.version>
        <git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version>
        <frontend-maven-plugin.version>1.15.0</frontend-maven-plugin.version>
        <!-- Deploy && GPG -->
        <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
        <nexus-staging-maven-plugin.version>1.6.7</nexus-staging-maven-plugin.version>
        <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
        <!-- Other -->
        <maven-antrun-plugin.version>1.8</maven-antrun-plugin.version>
        <os-maven-plugin.version>1.5.0.Final</os-maven-plugin.version>

        <!-- Default values of the Maven plugins -->
        <checkstyle.skip>true</checkstyle.skip>
        <license.skip>true</license.skip>
        <pmd.skip>true</pmd.skip>
        <maven.test.skip>false</maven.test.skip>
        <maven.git-commit-id.skip>true</maven.git-commit-id.skip>

        <maven.surefire.argLine></maven.surefire.argLine>
        <maven.surefire.excludes></maven.surefire.excludes>

        <!-- For docker image-->
        <image.publish.skip>true</image.publish.skip>
        <image.name>${IMAGE_NAME}</image.name>
        <image.tags>latest</image.tags>

        <dependencies.copy.skip>true</dependencies.copy.skip>
        <mysql.copy.skip>true</mysql.copy.skip>
    </properties>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>${maven-deploy-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>${maven-shade-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>${maven-dependency-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${maven-checkstyle-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>com.diffplug.spotless</groupId>
                    <artifactId>spotless-maven-plugin</artifactId>
                    <version>${spotless-maven-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven-javadoc-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.xolstice.maven.plugins</groupId>
                    <artifactId>protobuf-maven-plugin</artifactId>
                    <version>${protobuf-maven-plugin.version}</version>
                    <configuration>
                        <!-- Solve the problem that protobuf compilation fails due to too long command line under the window operating system,
                        ref: https://www.xolstice.org/protobuf-maven-plugin/usage.html -->
                        <useArgumentFile>true</useArgumentFile>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.mycila</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>${license-maven-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>${mojo-license-maven-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>icu.easyj.maven.plugins</groupId>
                    <artifactId>easyj-maven-plugin</artifactId>
                    <version>${easyj-maven-plugin.version}</version>
                    <!-- This goal can replace flatten-maven-plugin to flatten the pom, and replace '${revision}' to the actual version. -->
                    <executions>
                        <execution>
                            <id>simplify-pom</id>
                            <goals>
                                <goal>simplify-pom</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <simplifiedPomFileName>.flattened-pom.xml</simplifiedPomFileName>
                        <useTabIndent>true</useTabIndent>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>pl.project13.maven</groupId>
                    <artifactId>git-commit-id-plugin</artifactId>
                    <version>${git-commit-id-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>get-the-git-infos</id>
                            <goals>
                                <goal>revision</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <skip>${maven.git-commit-id.skip}</skip>
                        <verbose>true</verbose>
                        <dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
                        <generateGitPropertiesFile>true</generateGitPropertiesFile>
                        <generateGitPropertiesFilename>${project.build.outputDirectory}/seata-git.properties</generateGitPropertiesFilename>
                        <includeOnlyProperties>
                            <includeOnlyProperty>git.commit.message.full</includeOnlyProperty>
                            <includeOnlyProperty>git.remote.origin.url</includeOnlyProperty>
                            <includeOnlyProperty>git.branch</includeOnlyProperty>
                            <includeOnlyProperty>^git.build.(time|version)$</includeOnlyProperty>
                            <includeOnlyProperty>^git.commit.(id|time)$</includeOnlyProperty>
                            <includeOnlyProperty>git.dirty</includeOnlyProperty>
                        </includeOnlyProperties>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.github.eirslett</groupId>
                    <artifactId>frontend-maven-plugin</artifactId>
                    <version>${frontend-maven-plugin.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <!-- Compiler -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <parameters>true</parameters>
                </configuration>
            </plugin>
            <!-- Resources -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>${maven-resources-plugin.version}</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <!-- Jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven-jar-plugin.version}</version>
                <configuration>
                    <archive>
                        <addMavenDescriptor>true</addMavenDescriptor>
                        <index>true</index>
                        <manifest>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        </manifest>
                        <manifestEntries>
                            <Implementation-Build>${maven.build.timestamp}</Implementation-Build>
                        </manifestEntries>
                    </archive>
                    <excludes>
                        <exclude>**/META-INF/additional-spring-configuration-metadata.json</exclude>
                        <exclude>protobuf/**</exclude>
                        <exclude>**/*.proto</exclude>
                        <exclude>static/console-fe/**</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <!-- Clean -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <version>${maven-clean-plugin.version}</version>
                <configuration>
                    <filesets>
                        <fileset>
                            <directory>./</directory>
                            <includes>
                                <include>*-pom.xml</include>
                                <include>**/db_store/**</include>
                                <include>**/sessionStore/**</include>
                                <include>**/root.data</include>
                            </includes>
                            <followSymlinks>false</followSymlinks>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>
            <!-- EasyJ -->
            <plugin>
                <groupId>icu.easyj.maven.plugins</groupId>
                <artifactId>easyj-maven-plugin</artifactId>
            </plugin>
            <!-- Enforcer -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>${maven-enforcer-plugin.version}</version>
                <executions>
                    <execution>
                        <id>enforce-maven</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>[3.6.0,)</version>
                                </requireMavenVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- Git commit id -->
            <plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <!-- profile: release -->
        <profile>
            <id>release</id>
            <properties>
                <maven.git-commit-id.skip>false</maven.git-commit-id.skip>
            </properties>
            <build>
                <plugins>
                    <!-- Javadoc -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <configuration>
                            <charset>${project.build.sourceEncoding}</charset>
                            <encoding>${project.build.sourceEncoding}</encoding>
                            <failOnError>false</failOnError>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- GPG -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${maven-gpg-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- profile: release-by-github-actions -->
        <profile>
            <id>release-by-github-actions</id>
            <properties>
                <gpg.arg1>--pinentry-mode</gpg.arg1>
                <gpg.arg2>loopback</gpg.arg2>
                <maven.git-commit-id.skip>false</maven.git-commit-id.skip>
            </properties>
        </profile>

        <!-- profile: args-for-test-by-jdk17-and-above -->
        <profile>
            <id>args-for-test-by-jdk17-and-above</id>
            <activation>
                <jdk>[17,)</jdk>
            </activation>
            <properties>
                <maven.surefire.argLine>
                    --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
                </maven.surefire.argLine>
            </properties>
        </profile>

        <!-- profile: args-for-client-test -->
        <profile>
            <id>args-for-client-test</id>
            <properties>
                <maven.surefire.excludes>org/apache/seata/server/**/*.java,org/apache/seata/console/**/*.java</maven.surefire.excludes>
            </properties>
        </profile>
    </profiles>
</project>


================================================
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
================================================
<!--
    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.
-->
### 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) 	

<details>	
  <summary><mark>Release notes</mark></summary>	


  ### 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	
  - [[#342
Download .txt
Showing preview only (339K chars total). Download the full file or copy to clipboard to get everything.
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
│   │ 
Copy disabled (too large) Download .json
Condensed preview — 3985 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,916K chars).
[
  {
    "path": ".asf.yaml",
    "chars": 1980,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".gitattributes",
    "chars": 871,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/BUG_REPORT.yml",
    "chars": 2555,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/FEATURE_REQUEST.yml",
    "chars": 2081,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 969,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1422,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 5168,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "chars": 1834,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/license-checker.yaml",
    "chars": 1921,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/publish-docker.yml",
    "chars": 4171,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/publish-ossrh.yml",
    "chars": 2307,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/rerun-build.yml",
    "chars": 2153,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/spotless-check.yml",
    "chars": 1319,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/test-druid.yml",
    "chars": 3319,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/test-ubuntu.yml",
    "chars": 6807,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 5960,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".gitignore",
    "chars": 1845,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".licenserc.yaml",
    "chars": 3073,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "chars": 1013,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".travis.yml",
    "chars": 1869,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE f"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 4170,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 10706,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "CONTRIBUTING_CN.md",
    "chars": 5692,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "DISCLAIMER",
    "chars": 550,
    "preview": "Apache Seata (incubating) is an effort undergoing incubation at the Apache\nSoftware Foundation (ASF), sponsored by the A"
  },
  {
    "path": "LICENSE",
    "chars": 14025,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "NOTICE",
    "chars": 643,
    "preview": "Apache Seata (Incubating)\nCopyright 2023-2025 The Apache Software Foundation\n\nThis product includes software developed a"
  },
  {
    "path": "README.md",
    "chars": 29877,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "SECURITY.md",
    "chars": 1206,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "all/pom.xml",
    "chars": 30656,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    "
  },
  {
    "path": "bom/pom.xml",
    "chars": 16251,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    "
  },
  {
    "path": "build/pom.xml",
    "chars": 20693,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    "
  },
  {
    "path": "changeVersion.sh",
    "chars": 997,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "changes/en-us/1.4.2.md",
    "chars": 13722,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/1.5.0.md",
    "chars": 28493,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/1.5.2.md",
    "chars": 5708,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/1.6.0.md",
    "chars": 11434,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/1.6.1.md",
    "chars": 2590,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/1.7.0.md",
    "chars": 10146,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/1.7.1.md",
    "chars": 3237,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/1.8.0.md",
    "chars": 3963,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/2.0.0.md",
    "chars": 20692,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/2.1.0.md",
    "chars": 20868,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/2.2.0.md",
    "chars": 14512,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/2.3.0.md",
    "chars": 9646,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/2.4.0.md",
    "chars": 12053,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/2.5.0.md",
    "chars": 12508,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/2.6.0.md",
    "chars": 22228,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/en-us/2.x.md",
    "chars": 4950,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/1.4.2.md",
    "chars": 10928,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/1.5.0.md",
    "chars": 22368,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/1.5.2.md",
    "chars": 4854,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/1.6.0.md",
    "chars": 9583,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/1.6.1.md",
    "chars": 2229,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/1.7.0.md",
    "chars": 7988,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/1.7.1.md",
    "chars": 2572,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/1.8.0.md",
    "chars": 3569,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/2.0.0.md",
    "chars": 16304,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/2.1.0.md",
    "chars": 17155,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/2.2.0.md",
    "chars": 12170,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/2.3.0.md",
    "chars": 8366,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/2.4.0.md",
    "chars": 9805,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/2.5.0.md",
    "chars": 10343,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/2.6.0.md",
    "chars": 17920,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "changes/zh-cn/2.x.md",
    "chars": 4059,
    "preview": "<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the"
  },
  {
    "path": "codecov.yml",
    "chars": 1479,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "common/pom.xml",
    "chars": 2251,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    "
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/ConfigurationKeys.java",
    "chars": 35536,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/Constants.java",
    "chars": 5790,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/DefaultValues.java",
    "chars": 17195,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/LockStrategyMode.java",
    "chars": 1192,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/NamingServerConstants.java",
    "chars": 1591,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/NamingServerLocalMarker.java",
    "chars": 880,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/XID.java",
    "chars": 2688,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/AbstractRemoteResourceBundle.java",
    "chars": 957,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/AuthenticationFailedException.java",
    "chars": 2423,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/DataAccessException.java",
    "chars": 1998,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/ErrorCode.java",
    "chars": 2596,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/EurekaRegistryException.java",
    "chars": 1528,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/ExceptionUtil.java",
    "chars": 1550,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/FrameworkErrorCode.java",
    "chars": 8706,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/FrameworkException.java",
    "chars": 4270,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/JsonParseException.java",
    "chars": 1167,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/NotSupportYetException.java",
    "chars": 1774,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/ParseEndpointException.java",
    "chars": 1436,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/RedisException.java",
    "chars": 2163,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/RepeatRegistrationException.java",
    "chars": 1613,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/ResourceBundleUtil.java",
    "chars": 6892,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/RetryableException.java",
    "chars": 2303,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/SeataRuntimeException.java",
    "chars": 2419,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/ShouldNeverHappenException.java",
    "chars": 1623,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/SkipCallbackWrapperException.java",
    "chars": 1250,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/exception/StoreException.java",
    "chars": 2155,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/executor/Callback.java",
    "chars": 1088,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/executor/Initialize.java",
    "chars": 970,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/holder/ObjectHolder.java",
    "chars": 2329,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/io/FileLoader.java",
    "chars": 2904,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/loader/EnhancedServiceLoader.java",
    "chars": 31615,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/loader/EnhancedServiceNotFoundException.java",
    "chars": 2514,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/loader/ExtensionDefinition.java",
    "chars": 2281,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/loader/LoadLevel.java",
    "chars": 1472,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/loader/Scope.java",
    "chars": 1081,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/lock/ResourceLock.java",
    "chars": 1875,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/metadata/Cluster.java",
    "chars": 1851,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/metadata/ClusterRole.java",
    "chars": 1351,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/metadata/ClusterWatchEvent.java",
    "chars": 2311,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/metadata/Instance.java",
    "chars": 5432,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/metadata/Metadata.java",
    "chars": 4543,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/metadata/MetadataResponse.java",
    "chars": 1395,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/metadata/Node.java",
    "chars": 7982,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/metadata/namingserver/MetaResponse.java",
    "chars": 2630,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/metadata/namingserver/NamingServerNode.java",
    "chars": 2554,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/metadata/namingserver/Unit.java",
    "chars": 1937,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/result/BaseParam.java",
    "chars": 1973,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/result/Code.java",
    "chars": 2196,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/result/PageResult.java",
    "chars": 4432,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/result/Result.java",
    "chars": 1766,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/result/SingleResult.java",
    "chars": 2082,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/rpc/RpcStatus.java",
    "chars": 2519,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/rpc/http/HttpContext.java",
    "chars": 2555,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/store/LockMode.java",
    "chars": 1867,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/store/SessionMode.java",
    "chars": 1885,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/store/StoreMode.java",
    "chars": 2016,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/thread/NamedThreadFactory.java",
    "chars": 3279,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/thread/PositiveAtomicCounter.java",
    "chars": 1436,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/thread/RejectedPolicies.java",
    "chars": 1708,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/ArrayUtils.java",
    "chars": 3154,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/BeanUtils.java",
    "chars": 6240,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/BlobUtils.java",
    "chars": 2722,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/BufferUtils.java",
    "chars": 2931,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/CollectionUtils.java",
    "chars": 10230,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/CompressUtil.java",
    "chars": 2979,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/ConfigTools.java",
    "chars": 6404,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/CycleDependencyHandler.java",
    "chars": 4062,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/DateUtil.java",
    "chars": 2500,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/DurationUtil.java",
    "chars": 3433,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/HttpClientUtil.java",
    "chars": 16480,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/IOUtil.java",
    "chars": 1711,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/IdWorker.java",
    "chars": 5736,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/LambdaUtils.java",
    "chars": 1538,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/LowerCaseLinkHashMap.java",
    "chars": 6086,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/MapUtil.java",
    "chars": 3737,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/NetAddressValidatorUtil.java",
    "chars": 6283,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/NetUtil.java",
    "chars": 14658,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/NumberUtils.java",
    "chars": 2072,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/PageUtil.java",
    "chars": 10603,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/ReflectionUtil.java",
    "chars": 29076,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/SeataHttpWatch.java",
    "chars": 7716,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/SizeUtil.java",
    "chars": 2257,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/StringFormatUtils.java",
    "chars": 2970,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/StringUtils.java",
    "chars": 13212,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/common/util/UUIDGenerator.java",
    "chars": 1688,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/core/constants/ServerTableColumnsName.java",
    "chars": 5392,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/core/model/GlobalStatus.java",
    "chars": 6617,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/server/console/entity/param/GlobalLockParam.java",
    "chars": 2806,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/server/console/entity/param/GlobalSessionParam.java",
    "chars": 2907,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/server/console/entity/vo/BranchSessionVO.java",
    "chars": 7500,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/java/org/apache/seata/server/console/entity/vo/GlobalSessionVO.java",
    "chars": 6816,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/main/resources/error/ErrorCode_en.properties",
    "chars": 997,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/BranchDO.java",
    "chars": 1891,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/ConstantsTest.java",
    "chars": 4417,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/LockStrategyModeTest.java",
    "chars": 1576,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/NamingServerConstantsTest.java",
    "chars": 1626,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/XIDTest.java",
    "chars": 2273,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/code/CodeTest.java",
    "chars": 2451,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/AbstractRemoteResourceBundleTest.java",
    "chars": 4353,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/AuthenticationFailedExceptionTest.java",
    "chars": 1709,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/DataAccessExceptionTest.java",
    "chars": 2419,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/EurekaRegistryExceptionTest.java",
    "chars": 2024,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/ExceptionUtilTest.java",
    "chars": 3231,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/FrameworkErrorCodeTest.java",
    "chars": 3040,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/FrameworkExceptionTest.java",
    "chars": 4674,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/JsonParseExceptionTest.java",
    "chars": 1470,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/Message.java",
    "chars": 2684,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/NotSupportYetExceptionTest.java",
    "chars": 2178,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/ParseEndpointExceptionTest.java",
    "chars": 3133,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/RedisExceptionTest.java",
    "chars": 1945,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/RepeatRegistrationExceptionTest.java",
    "chars": 1691,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/ResourceBundleUtilTest.java",
    "chars": 6934,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/RetryableExceptionTest.java",
    "chars": 1599,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/SeataRuntimeExceptionTest.java",
    "chars": 3414,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/ShouldNeverHappenExceptionTest.java",
    "chars": 2234,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/SkipCallbackWrapperExceptionTest.java",
    "chars": 1538,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/exception/StoreExceptionTest.java",
    "chars": 2530,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/holder/ObjectHolderTest.java",
    "chars": 1874,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/io/FileLoaderTest.java",
    "chars": 3040,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/ChineseHello.java",
    "chars": 1062,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/EnglishHello.java",
    "chars": 1045,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/EnhancedServiceLoaderTest.java",
    "chars": 8427,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/EnhancedServiceNotFoundExceptionTest.java",
    "chars": 3990,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/ExtensionDefinitionTest.java",
    "chars": 5897,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/FrenchHello.java",
    "chars": 1043,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/Hello.java",
    "chars": 991,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/Hello1.java",
    "chars": 934,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/Hello2.java",
    "chars": 870,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/JapaneseHello.java",
    "chars": 1055,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/LatinHello.java",
    "chars": 1059,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/LoadLevelTest.java",
    "chars": 3036,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/loader/ScopeTest.java",
    "chars": 1910,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/lock/ResourceLockTest.java",
    "chars": 5699,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/src/test/java/org/apache/seata/common/metadata/ClusterRoleTest.java",
    "chars": 2884,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  }
]

// ... and 3785 more files (download for full content)

About this extraction

This page contains the full source code of the apache/incubator-seata GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3985 files (21.3 MB), approximately 4.3M tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!