`
stevezheng
  • 浏览: 80276 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sequoia raidb-0的奇怪现象

    博客分类:
  • bi
阅读更多

这几天在配置sequoia的单纯的raidb-0,基于2.10.9,配置很简单,并且select效果很不错,但是碰到insert的时候,出现了大问题,现象是:

<DatabaseBackend name="mysql1" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/mysql1" connectionTestStatement="select 1">
            <ConnectionManager vLogin="steve" rLogin="root" rPassword="123">
        		<SimpleConnectionManager />
      		</ConnectionManager>
</DatabaseBackend>

<DatabaseBackend name="mysql2" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/mysql2" connectionTestStatement="select 1">
            <ConnectionManager vLogin="steve" rLogin="root" rPassword="123">
        		<SimpleConnectionManager />
      		</ConnectionManager>
</DatabaseBackend>

 java代码:

Class.forName("org.continuent.sequoia.driver.Driver").newInstance();
String url = "jdbc:sequoia://" + args[0] + ":25322/" + args[1] + "?user=" + args[2] + "&password=" + args[3] + "&connectionPooling=false&debugLevel=debug";
conn = DriverManager.getConnection(url);
try {
	conn.setAutoCommit(false);
	pstmt = conn.createStatement();
	pstmt.execute("insert into table_1 (userid, nodeid, fullpath,groupid) values (1,1,'test_1',31)");
	//pstmt.execute("select 1 from table_2");


	conn.commit();
	conn.setAutoCommit(true);
} catch (Exception ex) {
	conn.rollback();
	ex.printStackTrace();
} finally {
	try {
		if (pstmt != null)
			pstmt.close();
		if (conn != null)
			conn.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
}

 

假定table_1在mysql1里面,上面的代码执行成功,但是在xml配置中,如果我把DatabaseBackend mysql2写在mysql1上面,则会出现错误transaction is closed.

 

看过源代码后,sequoia的源代码显示,当commit()的时候,会调用raidb-0下面每一个数据库的commit();然后stopTransaction()。错误就出现在stopTransaction的时候,如果insert或者update发生在mysql22,那么当调用mysql1.commit的时候,就会出现transaction is closed的错误(当然了,因为mysql1根本就没发生transaction);这就是原因。怪异吧!

 

有一个丑陋的解决方式:就是在transaction中访问全部的backend,这时候全部的backends都会有transaction了。举个例子说:尽管我们只想insert table_1,但是我们也要在commit以前调用一下select 1 from table_2以确保mysql2的transaction被打开了。也就是上面java代码的红色部分,丑陋吧!

 

还有别的方法解决吗?我算是服了他了。

1
1
分享到:
评论

相关推荐

    Sequoia-master.zip

    Sequoia是一个专注于蛋白质二级结构预测的开源软件项目,其源代码存放在名为"Sequoia-master.zip"的压缩包中。在生物信息学领域,理解蛋白质的二级结构对于揭示其功能、交互和动态特性至关重要。本篇文章将详细介绍...

    50-段佳昂-(2021 SoCC)Sequoia Enabling Quality-of-Service in Serverl

    【Sequoia:在无服务器计算中实现服务质量保证】 Sequoia是一个针对无服务器计算环境的创新框架,旨在解决当前云服务提供商在管理与调度中存在的一系列问题,以确保服务质量(Quality-of-Service,QoS)。无服务器...

    ST Sequoia FLI32626H-BG Digital Video Processor Datasheet

    【ST Sequoia FLI32626H-BG 数字视频处理器/双通道LCD电视控制器数据表】 STMicroelectronics的Sequoia FLI32626H-BG是一款高级数字视频处理器,同时也兼备双通道LCD电视控制器的功能。这款芯片专为高清视频处理和...

    Sequoia EFI1、修改了配置,驱动 intel 9260 网卡 wifi、蓝牙

    Sequoia EFI 1、修改了配置,驱动 intel 9260 网卡 wifi、蓝牙 2、机器:I7-8550U+UHD620+ intel AC-9260NGW

    macOS Sequoia 15.0(24A335) ISO版 虚拟机原版镜像

    期待已久的macOS Sequoia 15.0正式版终于在中秋佳节之时发布了,系统代号:24A335,小编通过 AppStore下载并制作了黑苹果原版镜像,有想安装macOS Sequoia15的童鞋可以下载尝尝鲜。 macOS Sequoia推出了一系列新功能,可...

    Sequoia Database Clustering-开源

    Sequoia是一种数据库集群中间件,可提供负载平衡和透明的故障转移。 数据库在多个节点上复制,并且Sequoia平衡了它们之间的查询。 红杉支持在线维护和恢复操作。

    Sequoia-source-code:待编译并在linux或Windows + cygwin下运行-windows source code

    现在可以在/ sequoia / Standalone下找到最新版本 红杉Fortran单机版 待编译并在linux或Windows + cygwin下运行 该Fortran脚本在功能上与R包中的脚本相同,但是具有部分可选的额外输出,对于调试很有用。 该代码已在...

    sequoia-rpms:用于Fedora的Sequoia PGP正在进行的RPM软件包

    用于Fedora的Sequoia PGP正在进行的RPM软件包 该存储库包含RPM规范文件和用于板条箱的补丁程序,用于的扩展名,以及尚未从Fedora官方存储库中获得的所有依赖项。 包裹审查票 包裹 票证链接 防锈帆布 防锈读卡器 不...

    西门子Sequoia512使用说明书

    西门子Sequoia 512是一款医疗超声诊断设备,属于西门子医疗解决方案的产品线之一。根据提供的信息,Sequoia 512可以分为不同型号,其中包括ACUSON Sequoia 512超声系统和ACUSON Sequoia C512超声心动描记系统。这类...

    lightdm-webkit-sequoia:一个简单而优雅的lightdm-webkit2-greeter

    Xfce或其他已安装的DE) 从config.js轻松配置登录失败通知如何安装AUR Linux 从AUR下载[ lightdm-webkit-theme-sequoia-git ]( )或使用yaourt: yaourt -S lightdm-webkit-theme-sequoia-git 现在,在/etc/lightdm...

    黑苹果 macos12、13、14、15 Sequoia,适配 EFI

    机器配置:华硕的 vivobook s14,I7-8550U+UHD620 1、在 MACOS12、13,安装时取消勾选IntelGraphicsFixup.kext,升级后要勾选上,否则声音没有输出;macos14 时不需要勾选。...2、Sequoia可升级安装,已测试 15.0

    sequoia

    文件名为"sequoia-master"通常表示这是一个Git仓库的主分支,可能包含了项目的源代码、构建脚本、测试文件和其他相关资源。在这样的仓库中,通常会有一个README文件,用于介绍项目的基本信息、安装指南和使用方法。...

    Sequoia

    Sequoia项目很可能是一个用于构建Web应用程序的工具,鉴于“Sequoia-master”这一文件名,我们可以推测这是项目的主要分支或源代码仓库的主目录。在开源软件开发中,“master”分支通常代表了项目的主线,是最稳定的...

    Sequoia-开源

    作为一个开源项目,Sequoia允许开发者和用户自由地使用、修改和分发其源代码,促进了社区协作和技术创新。 1. 多个收件箱功能:Sequoia的一大特色是支持多个收件箱,这使得用户能够更有效地组织和管理他们的电子...

    45-段佳昂-(2021 ASPLOS) Nightcore efficient and scalable serverless

    45-段佳昂-(2021 ASPLOS)Nightcore efficient and scalable serverless Nightcore 是一种高效、可扩展的服务器less 计算平台,旨在满足延迟敏感型交互微服务的严格延迟目标。当前的服务器less 平台存在毫秒级的...

    macOS_Sequoia_15.1.password(imacos.top).rdr.split.046

    macOS_Sequoia_15.1.password(imacos.top).rdr.split.046

    Sequoia Broadband 证明企业专用电视平台的巨大可扩展性

    为了确保该公司的软件平台能在 IBM 的主流服务器上良好地运行,Sequoia Media Manager 在马萨诸塞州 Waltham 的 IBM Solution Partnership Center(解决方案合作中心,SPC)接受了可移植性测试。该中心经验丰富的...

    红杉:使用容器进行可扩展的测试

    红杉 使用Docker进行可扩展的测试 安装Docker Mac- Ubuntu- CentOS- 安装Go(1.7+) Ubuntu- CentOS- ...go get github.com/couchbaselabs/sequoia cd $GOPATH /src/github.... ./sequoia -scope

    sequoia.nim:Nim的Sequoia PGP包装器

    **Sequoia PGP包装器在Nim中的应用** Sequoia PGP是现代、安全且高效的OpenPGP实现,而`sequoia.nim`则是一个专门针对Nim编程语言设计的Sequoia PGP包装器。这个包装器允许Nim开发者轻松地在他们的项目中集成PGP...

    Sequoia:A股自动选股程序,实现了海龟交易法则、缠中说禅牛市买点,以及其他若干种技术形态

    Sequoia选股系统 简介 本程序使用传统的,并非需要捐赠的,获取数据无限制; 另,由于TuShare的增量更新接口有bug(最近一个交易日的数据获取不到),所以每次计算前都是删除所有数据,全部重新获取。 本程序实现了...

Global site tag (gtag.js) - Google Analytics