/*
* Copyright 2017-2021 Dromara.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dromara.hmily.repository.database.manager;
import com.google.common.base.Splitter;
import com.google.common.collect.Maps;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
import org.dromara.hmily.common.exception.HmilyRuntimeException;
import org.dromara.hmily.common.utils.CollectionUtils;
import org.dromara.hmily.config.api.ConfigEnv;
import org.dromara.hmily.config.api.entity.HmilyConfig;
import org.dromara.hmily.config.api.entity.HmilyDatabaseConfig;
import org.dromara.hmily.repository.spi.HmilyRepository;
import org.dromara.hmily.repository.spi.entity.HmilyDataSnapshot;
import org.dromara.hmily.repository.spi.entity.HmilyInvocation;
import org.dromara.hmily.repository.spi.entity.HmilyLock;
import org.dromara.hmily.repository.spi.entity.HmilyParticipant;
import org.dromara.hmily.repository.spi.entity.HmilyParticipantUndo;
import org.dromara.hmily.repository.spi.entity.HmilyTransaction;
import org.dromara.hmily.repository.spi.exception.HmilyRepositoryException;
import org.dromara.hmily.serializer.spi.HmilySerializer;
import org.dromara.hmily.serializer.spi.exception.HmilySerializerException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* The type Abstract hmily database.
*/
@Slf4j
public abstract class AbstractHmilyDatabase implements HmilyRepository {
/**
* The constant INSERT_HMILY_TRANSACTION.
*/
protected static final String INSERT_HMILY_TRANSACTION = "INSERT INTO hmily_transaction_global (trans_id, app_name, status, trans_type, "
+ "retry, version, create_time, update_time) VALUES(?, ?, ?, ?, ?, ?, ?, ?)";
/**
* The constant SELECT_HMILY_TRANSACTION_COMMON.
*/
protected static final String SELECT_HMILY_TRANSACTION_COMMON = "select trans_id, app_name, status, trans_type, retry, version from hmily_transaction_global ";
/**
* The constant SELECT_HMILY_TRANSACTION_DELAY.
*/
protected static final String SELECT_HMILY_TRANSACTION_DELAY = SELECT_HMILY_TRANSACTION_COMMON + " where update_time < ? and app_name = ?";
/**
* The constant SELECT_HMILY_TRANSACTION_WITH_TRANS_ID.
*/
protected static final String SELECT_HMILY_TRANSACTION_WITH_TRANS_ID = SELECT_HMILY_TRANSACTION_COMMON + " where trans_id = ?";
/**
* The constant UPDATE_HMILY_TRANSACTION_STATUS.
*/
protected static final String UPDATE_HMILY_TRANSACTION_STATUS = "update hmily_transaction_global set status=? where trans_id = ? ";
/**
* The constant UPDATE_HMILY_TRANSACTION_RETRY_LOCK.
*/
protected static final String UPDATE_HMILY_TRANSACTION_RETRY_LOCK = "update hmily_transaction_global set version =?, retry =? where trans_id = ? and version = ? ";
/**
* The constant UPDATE_HMILY_PARTICIPANT_LOCK.
*/
protected static final String UPDATE_HMILY_PARTICIPANT_LOCK = "update hmily_transaction_participant set version =?, retry =? where participant_id = ? and version = ? ";
/**
* The constant DELETE_HMILY_TRANSACTION.
*/
protected static final String DELETE_HMILY_TRANSACTION = "delete from hmily_transaction_global where trans_id = ? ";
/**
* The constant DELETE_HMILY_TRANSACTION_WITH_DATA.
*/
protected static final String DELETE_HMILY_TRANSACTION_WITH_DATA = "delete from hmily_transaction_global where update_time < ? and status = 4";
/**
* The constant INSERT_HMILY_PARTICIPANT.
*/
protected static final String INSERT_HMILY_PARTICIPANT = "INSERT INTO hmily_transaction_participant (participant_id, participant_ref_id, trans_id, trans_type, status, app_name,"
+ "role, retry, target_class, target_method, confirm_method, cancel_method, confirm_invocation, cancel_invocation, version, create_time, update_time)"
+ " VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? , ? , ?, ?)";
/**
* The constant SELECTOR_HMILY_PARTICIPANT_COMMON.
*/
protected static final String SELECTOR_HMILY_PARTICIPANT_COMMON = "select participant_id, participant_ref_id, trans_id, trans_type, status, app_name,"
+ "role, retry, target_class, target_method, confirm_method, cancel_method, confirm_invocation, cancel_invocation, version from hmily_transaction_participant ";
/**
* The constant SELECTOR_HMILY_PARTICIPANT_WITH_KEY.
*/
protected static final String SELECTOR_HMILY_PARTICIPANT_WITH_KEY = SELECTOR_HMILY_PARTICIPANT_COMMON + " where participant_id = ?";
/**
* The constant SELECTOR_HMILY_PARTICIPANT_WITH_PARTICIPANT_REF_ID.
*/
protected static final String SELECTOR_HMILY_PARTICIPANT_WITH_PARTICIPANT_REF_ID = SELECTOR_HMILY_PARTICIPANT_COMMON + " where participant_ref_id = ?";
/**
* The constant SELECTOR_HMILY_PARTICIPANT_WITH_TRANS_ID.
*/
protected static final String SELECTOR_HMILY_PARTICIPANT_WITH_TRANS_ID = SELECTOR_HMILY_PARTICIPANT_COMMON + " where trans_id = ?";
/**
* The constant EXIST_HMILY_PARTICIPANT_WITH_TRANS_ID.
*/
protected static final String EXIST_HMILY_PARTICIPANT_WITH_TRANS_ID = " select count(*) as count_total from hmily_transaction_participant where trans_id = ? ";
/**
* The constant SELECTOR_HMILY_PARTICIPANT_WITH_DELAY_AND_APP_NAME_TRANS_TYPE.
*/
protected static final String SELECTOR_HMILY_PARTICIPANT_WITH_DELAY_AND_APP_NAME_TRANS_TYPE = SELECTOR_HMILY_PARTICIPANT_COMMON
+ " where update_time < ? and app_name = ? and trans_type = ? and status not in (4, 8) ";
/**
* The constant UPDATE_HMILY_PARTICIPANT_STATUS.
*/
protected static final String UPDATE_HMILY_PARTICIPANT_STATUS = "update hmily_transaction_participant set status=? where participant_id = ? ";
/**
* The constant DELETE_HMILY_PARTICIPANT.
*/
protected static final String DELETE_HMILY_PARTICIPANT = "delete from hmily_transaction_participant where participant_id = ? ";
/**
* The constant DELETE_HMILY_PARTICIPANT_WITH_DATA.
*/
protected static final String DELETE_HMILY_PARTICIPANT_WITH_DATA = "delete from hmily_transaction_participant where update_time < ? and status = 4";
/**
* The constant INSERT_HMILY_PARTICIPANT_UNDO.
*/
protected static final String INSERT_HMILY_PARTICIPANT_UNDO = "INSERT INTO hmily_participant_undo"
+ "(undo_id, participant_id, trans_id, resource_id, data_snapshot, status, create_time, update_time) "
+ " VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
/**
* The constant SELECTOR_HMILY_PARTICIPANT_UNDO_WITH_PARTICIPANT_ID.
*/
protected static final String SELECTOR_HMILY_PARTICIPANT_UNDO_WITH_PARTICIPANT_ID = " select undo_id, participant_id, trans_id, resource_id, data_snapshot, status "
+ "from hmily_participant_undo where participant_id =? ";
/**
* The constant REMOVE_HMILY_PARTICIPANT_UNDO.
*/
没有合适的资源?快使用搜索试试~ 我知道了~
hmily-master.zip
共1070个文件
java:747个
xml:151个
yml:70个
0 下载量 52 浏览量
2022-12-27
11:16:13
上传
评论
收藏 1.56MB ZIP 举报
温馨提示
分布式服务/框架 功能 高可靠性 :支持分布式场景下,事务异常回滚,超时异常恢复,防止事务悬挂 易用性 :提供零侵入性式的 Spring-Boot, Spring-Namespace 快速与业务系统集成 高性能 :去中心化设计,与业务系统完全融合,天然支持集群部署 可观测性 :Metrics多项指标性能监控,以及admin管理后台UI展示 多种RPC : 支持 Dubbo, SpringCloud,Motan, Sofa-rpc, brpc, tars 等知名RPC框架 日志存储 : 支持 mysql, oracle, mongodb, redis, zookeeper 等方式 复杂场景 : 支持RPC嵌套调用事务
资源推荐
资源详情
资源评论
收起资源包目录
hmily-master.zip (1070个子文件)
org.dromara.hmily.core.field.AnnotationField 57B
org.dromara.hmily.core.field.AnnotationField 57B
org.dromara.hmily.core.field.AnnotationField 57B
org.dromara.hmily.core.field.AnnotationField 55B
TestInventory.InventoryApp.config.conf 2KB
HmilyAccount.AccountApp.config.conf 2KB
HmilyOrder.OrderApp.config.conf 2KB
org.dromara.hmily.config.api.Config 475B
org.dromara.hmily.config.api.Config 53B
org.dromara.hmily.config.api.Config 47B
org.dromara.hmily.config.api.Config 45B
org.dromara.hmily.config.api.Config 44B
org.dromara.hmily.config.api.Config 43B
org.dromara.hmily.config.api.Config 34B
org.dromara.hmily.config.loader.ConfigLoader 56B
org.dromara.hmily.config.loader.ConfigLoader 50B
org.dromara.hmily.config.loader.ConfigLoader 50B
org.dromara.hmily.config.loader.ConfigLoader 48B
org.dromara.hmily.config.loader.ConfigLoader 48B
org.dromara.hmily.config.loader.ConfigLoader 46B
org.dromara.hmily.tac.common.database.dialect.DatabaseMetaDataDialectHandler 584B
org.dromara.hmily.tac.common.database.type.DatabaseType 437B
spring.factories 209B
spring.factories 147B
spring.factories 118B
spring.factories 118B
com.alipay.sofa.rpc.filter.Filter 143B
com.alibaba.dubbo.rpc.Filter 81B
org.apache.dubbo.rpc.Filter 81B
com.weibo.api.motan.filter.Filter 58B
org.apache.dubbo.rpc.Filter 53B
.gitattributes 28B
.gitignore 621B
org.dromara.hmily.core.context.HmilyContext 123B
org.dromara.hmily.repository.spi.HmilyRepository 69B
org.dromara.hmily.repository.spi.HmilyRepository 67B
org.dromara.hmily.repository.spi.HmilyRepository 61B
org.dromara.hmily.repository.spi.HmilyRepository 59B
org.dromara.hmily.repository.spi.HmilyRepository 58B
org.dromara.hmily.repository.spi.HmilyRepository 54B
org.dromara.hmily.repository.spi.HmilyRepository 50B
org.dromara.hmily.repository.spi.HmilyRepository 48B
org.dromara.hmily.repository.spi.HmilyRepository 48B
org.dromara.hmily.serializer.spi.HmilySerializer 58B
org.dromara.hmily.serializer.spi.HmilySerializer 58B
org.dromara.hmily.serializer.spi.HmilySerializer 54B
org.dromara.hmily.serializer.spi.HmilySerializer 48B
org.dromara.hmily.serializer.spi.HmilySerializer 46B
org.dromara.hmily.tac.sqlparser.spi.HmilySqlParserEngine 76B
org.dromara.hmily.tac.sqlparser.spi.HmilySqlParserEngine 62B
org.dromara.hmily.tac.sqlrevert.spi.HmilySQLRevertEngine 59B
org.dromara.hmily.spi.fixture.HmilyTestSPI 93B
org.dromara.hmily.core.service.HmilyTransactionHandlerRegistry 69B
org.dromara.hmily.core.service.HmilyTransactionHandlerRegistry 64B
org.dromara.hmily.core.service.HmilyTransactionHandlerRegistry 60B
com.baidu.brpc.interceptor.Interceptor 66B
AbstractHmilyDatabase.java 29KB
FileRepository.java 29KB
ZookeeperRepository.java 26KB
RedisRepository.java 25KB
HashedWheelTimer.java 23KB
EtcdRepositoryTest.java 22KB
EtcdRepository.java 22KB
AccountRequest.java 20KB
InventoryResponse.java 18KB
InventoryRequest.java 18KB
HmilyTccTransactionExecutor.java 16KB
AccountResponse.java 15KB
ZookeeperRepositoryTest.java 14KB
SubCoordinator.java 13KB
ExtensionLoader.java 12KB
HmilyTransactionSelfRecoveryScheduled.java 12KB
JavaBeanBinder.java 12KB
FileRepositoryTest.java 12KB
HmilyXaPreparedStatement.java 12KB
HmilyXaConnection.java 12KB
PropertyName.java 11KB
MongodbRepository.java 11KB
TransactionImpl.java 10KB
MetaDataConnectionAdapter.java 10KB
YamlProcessor.java 10KB
CuratorZookeeperClient.java 9KB
HmilyXaStatement.java 9KB
OriginTrackedPropertiesLoader.java 9KB
HmilyXaTransactionManager.java 8KB
PaymentServiceImpl.java 8KB
PaymentServiceImpl.java 8KB
PaymentServiceImpl.java 8KB
Binder.java 8KB
CommonAssembler.java 8KB
MongoEntityConvert.java 8KB
ConfigLoader.java 8KB
PaymentServiceImpl.java 8KB
ShardingSphereSqlParserEngine.java 8KB
AccountServiceImpl.java 8KB
OrderController.java 8KB
PaymentServiceImpl.java 8KB
AccountServiceImpl.java 8KB
PaymentServiceImpl.java 8KB
Coordinator.java 8KB
共 1070 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11
资源评论
m0_72731342
- 粉丝: 2
- 资源: 1832
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功