统一Canal 依赖的Spring 版本,升级ibatis 至mybatis (#3182)

* fix issue:#561 增加一个外部参数控制,允许位点不存在时自动重置到当前位点

* Add MariaDB GTID support

* 1. fix maven central repository url access error.(Update to https)
2. upgrade spring version to 5.0.5.RELEASE
3. upgrade ibatis to mybatis

* fix unit test run error
This commit is contained in:
文哥
2020-11-20 09:24:56 +08:00
committed by GitHub
parent a5c09c521e
commit 20add85ff6
27 changed files with 207 additions and 176 deletions

View File

@@ -15,22 +15,22 @@
<bean id="instance" class="com.alibaba.otter.canal.instance.spring.CanalInstanceWithSpring">
<property name="destination" value="${canal.instance.destination}" />
<property name="eventParser">
<ref local="eventParser" />
<ref bean="eventParser" />
</property>
<property name="eventSink">
<ref local="eventSink" />
<ref bean="eventSink" />
</property>
<property name="eventStore">
<ref local="eventStore" />
<ref bean="eventStore" />
</property>
<property name="metaManager">
<ref local="metaManager" />
<ref bean="metaManager" />
</property>
<property name="alarmHandler">
<ref local="alarmHandler" />
<ref bean="alarmHandler" />
</property>
<property name="mqConfig">
<ref local="mqConfig" />
<ref bean="mqConfig" />
</property>
</bean>

View File

@@ -15,22 +15,22 @@
<bean id="instance" class="com.alibaba.otter.canal.instance.spring.CanalInstanceWithSpring">
<property name="destination" value="${canal.instance.destination}" />
<property name="eventParser">
<ref local="eventParser" />
<ref bean="eventParser" />
</property>
<property name="eventSink">
<ref local="eventSink" />
<ref bean="eventSink" />
</property>
<property name="eventStore">
<ref local="eventStore" />
<ref bean="eventStore" />
</property>
<property name="metaManager">
<ref local="metaManager" />
<ref bean="metaManager" />
</property>
<property name="alarmHandler">
<ref local="alarmHandler" />
<ref bean="alarmHandler" />
</property>
<property name="mqConfig">
<ref local="mqConfig" />
<ref bean="mqConfig" />
</property>
</bean>

View File

@@ -15,22 +15,22 @@
<bean id="instance" class="com.alibaba.otter.canal.instance.spring.CanalInstanceWithSpring">
<property name="destination" value="${canal.instance.destination}" />
<property name="eventParser">
<ref local="eventParser" />
<ref bean="eventParser" />
</property>
<property name="eventSink">
<ref local="eventSink" />
<ref bean="eventSink" />
</property>
<property name="eventStore">
<ref local="eventStore" />
<ref bean="eventStore" />
</property>
<property name="metaManager">
<ref local="metaManager" />
<ref bean="metaManager" />
</property>
<property name="alarmHandler">
<ref local="alarmHandler" />
<ref bean="alarmHandler" />
</property>
<property name="mqConfig">
<ref local="mqConfig" />
<ref bean="mqConfig" />
</property>
</bean>

View File

@@ -15,22 +15,22 @@
<bean id="instance" class="com.alibaba.otter.canal.instance.spring.CanalInstanceWithSpring">
<property name="destination" value="${canal.instance.destination}" />
<property name="eventParser">
<ref local="eventParser" />
<ref bean="eventParser" />
</property>
<property name="eventSink">
<ref local="eventSink" />
<ref bean="eventSink" />
</property>
<property name="eventStore">
<ref local="eventStore" />
<ref bean="eventStore" />
</property>
<property name="metaManager">
<ref local="metaManager" />
<ref bean="metaManager" />
</property>
<property name="alarmHandler">
<ref local="alarmHandler" />
<ref bean="alarmHandler" />
</property>
<property name="mqConfig">
<ref local="mqConfig" />
<ref bean="mqConfig" />
</property>
</bean>

View File

@@ -46,16 +46,16 @@
<property name="validationQuery" value="SELECT 1" />
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:spring/tsdb/sql-map/sqlmap-config.xml"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:spring/tsdb/sql-map/sqlmap-config.xml"/>
</bean>
<bean id="metaHistoryDAO" class="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaHistoryDAO">
<property name="sqlMapClient" ref="sqlMapClient"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<bean id="metaSnapshotDAO" class="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaSnapshotDAO">
<property name="sqlMapClient" ref="sqlMapClient"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
</beans>

View File

@@ -48,16 +48,16 @@
<property name="useUnfairLock" value="true" />
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:spring/tsdb/sql-map/sqlmap-config.xml"/>
</bean>
<bean id="metaHistoryDAO" class="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaHistoryDAO">
<property name="sqlMapClient" ref="sqlMapClient"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<bean id="metaSnapshotDAO" class="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaSnapshotDAO">
<property name="sqlMapClient" ref="sqlMapClient"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
</beans>

View File

@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true"/>
<sqlMap resource="spring/tsdb/sql-map/sqlmap_history.xml"/>
<sqlMap resource="spring/tsdb/sql-map/sqlmap_snapshot.xml"/>
</sqlMapConfig>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="metaHistoryDO" type="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaHistoryDO"/>
<typeAlias alias="metaSnapshotDO" type="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaSnapshotDO"/>
</typeAliases>
<mappers>
<mapper resource="spring/tsdb/sql-map/sqlmap_history.xml"/>
<mapper resource="spring/tsdb/sql-map/sqlmap_snapshot.xml"/>
</mappers>
</configuration>

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="meta_history">
<typeAlias alias="metaHistoryDO" type="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaHistoryDO"/>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaHistoryMapper">
<sql id="allColumns">
<![CDATA[
gmt_create,gmt_modified,destination,binlog_file,binlog_offest,binlog_master_id,binlog_timestamp,use_schema,sql_schema,sql_table,sql_text,sql_type,extra
@@ -15,31 +14,31 @@
]]>
</sql>
<select id="findByTimestamp" parameterClass="java.util.Map" resultClass="metaHistoryDO">
<select id="findByTimestamp" parameterType="java.util.Map" resultType="metaHistoryDO">
select
<include refid="allVOColumns"/>
from meta_history a
<![CDATA[
where destination = #destination# and binlog_timestamp >= #snapshotTimestamp# and binlog_timestamp <= #timestamp#
where destination = #{destination} and binlog_timestamp >= #{snapshotTimestamp} and binlog_timestamp <= #{timestamp}
order by binlog_timestamp asc,id asc
]]>
</select>
<insert id="insert" parameterClass="metaHistoryDO">
<insert id="insert" parameterType="metaHistoryDO">
insert into meta_history (<include refid="allColumns"/>)
values(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,#destination#,#binlogFile#,#binlogOffest#,#binlogMasterId#,#binlogTimestamp#,#useSchema#,#sqlSchema#,#sqlTable#,#sqlText#,#sqlType#,#extra#)
values(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,#{destination},#{binlogFile},#{binlogOffest},#{binlogMasterId},#{binlogTimestamp},#{useSchema},#{sqlSchema},#{sqlTable},#{sqlText},#{sqlType},#{extra})
</insert>
<delete id="deleteByName" parameterClass="java.util.Map">
<delete id="deleteByName" parameterType="java.util.Map">
delete from meta_history
where destination=#destination#
where destination=#{destination}
</delete>
<delete id="deleteByTimestamp" parameterClass="java.util.Map">
<delete id="deleteByTimestamp" parameterType="java.util.Map">
<![CDATA[
delete from meta_history
where destination=#destination# and binlog_timestamp < #timestamp#
where destination=#{destination} and binlog_timestamp < #{timestamp}
]]>
</delete>
</sqlMap>
</mapper>

View File

@@ -1,9 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="meta_snapshot">
<typeAlias alias="metaSnapshotDO" type="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaSnapshotDO"/>
<typeAlias alias="tableMetaSnapshotDO"
type="com.alibaba.middleware.jingwei.biz.dataobject.CanalTableMetaSnapshotDO"/>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaSnapshotMapper">
<sql id="allColumns">
<![CDATA[
gmt_create,gmt_modified,destination,binlog_file,binlog_offest,binlog_master_id,binlog_timestamp,data,extra
@@ -16,36 +13,36 @@
]]>
</sql>
<select id="findByTimestamp" parameterClass="java.util.Map" resultClass="metaSnapshotDO">
<select id="findByTimestamp" parameterType="java.util.Map" resultType="metaSnapshotDO">
select <include refid="allVOColumns"/>
<![CDATA[
<![CDATA[
from meta_snapshot a
where destination = #destination# and binlog_timestamp < #timestamp#
where destination = #{destination} and binlog_timestamp < #{timestamp}
order by binlog_timestamp desc,id desc
limit 1
]]>
</select>
<insert id="insert" parameterClass="metaSnapshotDO">
<insert id="insert" parameterType="metaSnapshotDO">
insert into meta_snapshot (<include refid="allColumns"/>)
values(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,#destination#,#binlogFile#,#binlogOffest#,#binlogMasterId#,#binlogTimestamp#,#data#,#extra#)
values(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,#{destination},#{binlogFile},#{binlogOffest},#{binlogMasterId},#{binlogTimestamp},#{data},#{extra})
</insert>
<update id="update" parameterClass="metaSnapshotDO">
<update id="update" parameterType="metaSnapshotDO">
update meta_snapshot set gmt_modified=now(),
binlog_file=#binlogFile#,binlog_offest=#binlogOffest#,binlog_master_id=#binlogMasterId#,binlog_timestamp=#binlogTimestamp#,data=#data#,extra=#extra#
where destination=#destination# and binlog_timestamp=0
binlog_file=#{binlogFile},binlog_offest=#{binlogOffest},binlog_master_id=#{binlogMasterId},binlog_timestamp=#{binlogTimestamp},data=#{data},extra=#{extra}
where destination=#{destination} and binlog_timestamp=0
</update>
<delete id="deleteByName" parameterClass="java.util.Map">
delete from meta_snapshot
where destination=#destination#
<delete id="deleteByName" parameterType="java.util.Map">
delete from meta_snapshot
where destination=#{destination}
</delete>
<delete id="deleteByTimestamp" parameterClass="java.util.Map">
<delete id="deleteByTimestamp" parameterType="java.util.Map">
<![CDATA[
delete from meta_snapshot
where destination=#destination# and binlog_timestamp < #timestamp# and binlog_timestamp > 0
where destination=#{destination} and binlog_timestamp < #{timestamp} and binlog_timestamp > 0
]]>
</delete>
</sqlMap>
</mapper>