Cobar AsynchronousCloseException

简介:

Cobar在测试的时候看到日志里会报很多如下的错误:

java.nio.channels.AsynchronousCloseException

atjava.nio.channels.spi.AbstractInterruptibleChannel.end

at sun.nio.ch.SocketChannelImpl.read

atcom.alibaba.cobar.net.AbstractConnection.read

at com.alibaba.cobar.net.NIOReactor$R.read

at com.alibaba.cobar.net.NIOReactor$R.run

at java.lang.Thread.run(Thread.java:722)

看一眼代码很容易看出WARNING的原因:Cobar的IO模型是reactor式的,采用Java的NIO

首先是Reader线程

Object att = key.attachment();

if (att != null&& key.isValid()) {

int readyOps = key.readyOps();

if((readyOps & SelectionKey.OP_READ) != 0) {

read((NIOConnection) att);

elseif((readyOps & SelectionKey.OP_WRITE) != 0) {

write((NIOConnection) att);

else{

key.cancel();

}

else {

key.cancel();

}

再看后端Channelclose

private void mysqlClose() {

try {

if (out != null){

out.write(QuitPacket.QUIT);

out.flush();

}

catch (IOException e) {

LOGGER.error(toString(), e);

finally {

try {

socket.close();

catch (Throwable e) {

LOGGER.error(toString(), e);

}

}

}

Reader线程在从Socket读取的时候不是同步的,因此后端Channel关闭的时候Reader可能正在读取,换句话说,Reader会有一定概率从一个已经关闭的socket读取数据,因此报出这个异常,不过并不会影响实际业务,因为这个数据并不会被处理到;并且在Reader加同步会严重影响到系统的吞吐量,因此这个WARNING是可以忽略的.



本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1300024,如需转载请自行联系原作者

相关文章
|
5天前
|
运维 关系型数据库 分布式数据库
技术选型思考:分库分表和分布式DB(TiDB/OceanBase) 的权衡与抉择
技术选型思考:分库分表和分布式DB(TiDB/OceanBase) 的权衡与抉择
|
2月前
|
中间件 关系型数据库 MySQL
【中间件】mycat读写分离分析
【中间件】mycat读写分离分析
20 0
|
9月前
|
存储 中间件 数据处理
05MyCat - 概念 - 数据库中间件
05MyCat - 概念 - 数据库中间件
44 0
|
9月前
|
SQL cobar 关系型数据库
02MyCat - Cobar与MyCat
02MyCat - Cobar与MyCat
87 0
|
关系型数据库 MySQL 中间件
Mycat中间件综合部署高可用-读写分离-分库分表(1.6)
Mycat中间件综合部署高可用-读写分离-分库分表(1.6)
104 0
|
存储 cobar NoSQL
开源数据库中间件-MyCat初探与分片实践
一个新颖的数据库中间件产品支持mysql集群,或者mariadb cluster,提供高可用性数据分片集群。
开源数据库中间件-MyCat初探与分片实践
|
关系型数据库 MySQL 分布式数据库
Mycat分布式数据库架构解决方案--Mycat实现读写分离
Mycat分布式数据库架构解决方案--Mycat实现读写分离
173 0
Mycat分布式数据库架构解决方案--Mycat实现读写分离
|
存储 容灾 中间件
Mycat分布式数据库架构解决方案--Mycat的介绍
Mycat分布式数据库架构解决方案--Mycat的介绍
168 0
Mycat分布式数据库架构解决方案--Mycat的介绍
|
SQL 关系型数据库 MySQL
MyCat - 架构剖析 - 核心技术之分布式事务的支持 | 学习笔记
快速学习 MyCat - 架构剖析 - 核心技术之分布式事务的支持
366 0
MyCat - 架构剖析 - 核心技术之分布式事务的支持 | 学习笔记
|
关系型数据库 MySQL 中间件
MyCat-高级-读写分离-双主双从架构 | 学习笔记
快速学习 MyCat-高级-读写分离-双主双从架构
81 0
MyCat-高级-读写分离-双主双从架构 | 学习笔记