【问题详细描述】
如下存在一段报错的日志信息:
--------------------------------------------------------------------------------------------------------------------
2016-11-28-07.18.18.746011 Level:ERROR
PID:17252 TID:13059
Function:_onOPMsg Line:552
File:SequoiaDB/engine/cls/clsShardSession.cpp
Message:
Session[Type:Shard,NetID:5,R-TID:12021,R-IP:10.30.26.196,R-Port:11810] process OP[type:2010] failed[rc:-253]
--------------------------------------------------------------------------------------------------------------------
问题:
1、日志文件中的type:2010是指什么意思?
2、如,cs.cl1表建立在打开事务的group1上,cs.cl2表建立在没有打开事务的group2上,此时执行如下操作:
> db.transBegin()
> db.cs.cl1.insert({name:"test",id:123})
> db.cs.cl2.insert({name:"test2", id:456})
这种情况,数据库是否会报上面日志信息中-253错误?
【解决办法】
1、type=2010 表示开启事务的消息,源码:MSG_BS_TRANS_BEGIN_REQ =2010;
2、rc=-253 (Transaction is disabled)表示事务不可用,可能是对应操作所在的组未开启事务功能;
3、问题2因为db有开启事务,但是cs.cl2所在组(group2)未开启事务,所以在事务中对cs.cl2做数据操作时会报“-253 事务不可用”。
【参考链接】
错误码
常见错误处理指南