mongoDB, warning: ClientCursor::yield can't unlock b/c of recursive lock ns:

某库的日志里报一堆这样的警告, 

warning: ClientCursor::yield can't unlock b/c of recursive lock ns:

加索引解决

源码里有一段相关的代码如下 : 

 void ClientCursor::staticYield( int micros , const StringData& ns , Record * rec ) {
        killCurrentOp.checkForInterrupt( false );
        {
            auto_ptr<RWLockRecursive::Shared> lk;
            if ( rec )
                lk.reset( new RWLockRecursive::Shared( MongoFile::mmmutex) );

            dbtempreleasecond unlock;
            if ( unlock.unlocked() ) {
                if ( micros == -1 )
                    micros = Client::recommendedYieldMicros();
                if ( micros > 0 )
                    sleepmicros( micros );
            }
            else {
                CurOp * c = cc().curop();
                while ( c->parent() )
                    c = c->parent();
                warning() << "ClientCursor::yield can't unlock b/c of recursive lock"
                          << " ns: " << ns
                          << " top: " << c->info()
                          << endl;
            }

            if ( rec )
                rec->touch();

            lk.reset(0); // need to release this before dbtempreleasecond
        }
    }

【参考】

mongodb_src/db/clientcursor.cpp

时间: 2024-09-20 09:21:47

mongoDB, warning: ClientCursor::yield can't unlock b/c of recursive lock ns:的相关文章

MySQL中lock tables和unlock tables浅析

MySQL中lock tables和unlock tables浅析   在MySQL中提供了锁定表(lock tables)和解锁表(unlock tables)的语法功能,ORACLE与SQL Server数据库当中没有这种语法.相信刚接触MySQL的人,都想详细.深入的了解一下这个功能.下面就尽量全面的解析.总结一下MySQL中lock tables与unlock tables的功能,如有不足或不正确的地方,欢迎指点一二.     锁定表的语法:   LOCK TABLES tbl_name

在CENTOS6上安装MONGODB

为接下来的工作热一下手.. 以前看过一本书,了解了,但好像有三四年,又忘了..:( 参考URL: http://www.centoscn.com/image-text/install/2014/1124/4171.html   环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Centos-6.5-x86_64 *** Centos编译安装mongodb 2.6 系统最好是64位的,才能更好发挥mongodb的性能 安装步骤: 0.系统环境 [root@c

Java多线程知识小抄集(一)

本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为"小抄集".本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆. 1. interrupted与isInterrupted的区别 interrupted():测试当前线程是否已经是中断状态,执行后具有状态标志清除为false的功能. isInterrupted():测试线程Thread对象是否已经是中断状态,但不清除状态标志. 方法: public static boo

Java并发编程之性能、扩展性和响应_java

本文讨论的重点在于多线程应用程序的性能问题.我们会先给性能和扩展性下一个定义,然后再仔细学习一下Amdahl法则.下面的内容我们会考察一下如何用不同的技术方法来减少锁竞争,以及如何用代码来实现. 1.性能 我们都知道,多线程可以用来提高程序的性能,背后的原因在于我们有多核的CPU或多个CPU.每个CPU的内核都可以自己完成任务,因此把一个大的任务分解成一系列的可彼此独立运行的小任务就可以提高程序的整体性能了.可以举个例子,比如有个程序用来将硬盘上某个文件夹下的所有图片的尺寸进行修改,应用多线程技

asp.net文本记数器(C#)

asp.net|asp.net global.asa必须放在网站根目录里global.asa----------------------------------------------------------------------<script language="c#" runat="server">void Session_OnStart(){ Application.Lock(); Application["whoson"]=

显示目前站点在线人数

显示|在线|在线人数|站点 大家好我是成龙,很高兴又跟大家见面了,上次记得有人在论坛里问过在线人数问题的解决方案,现在我把我的一段代码贴出来供大家参考 应用程序用到了global.asp这个非常重要的文件,以及文件中的两个对象:application和sessionglobal.asa<script language="vascript" runat="server" sub  application_onstart     session.timeout=3

为Asp.net应用程序设置构建Web服务

asp.net|web|web服务|程序 一.什么是应用程序设置 应用程序设置通常是指与应用程序密切相关的一系列参数.在基于窗体的Windows应用程序中,应用程序设置主要包括影响应用程序布局的位置.尺寸等参数:影响应用程序外观的颜色.形状等参数:此外,还包括应用程序的语言.文化等设置以及数据源和连接字符串等等.这些参数设置在程序开发中应用广泛,有的被用来保持应用程序的一致性.连续性,比如保存应用程序结束时的窗体大小.位置及背景颜色,下次执行应用程序时恢复这些设置:另一些参数则使程序代码更加简洁

FREEBSD的一些使用技巧

1.在 unix-like 中档案结构是满重要的,那么要如何去看相关档案目录结构的说明呢? 难道是 cd 到每个目录下吗?其实有更好的方法.. 那就是用好男人 man 来看: # man hier 2.在 console 下操作时,由于屏幕显示有限,有时需看前面显示的资料,这时你可: .按一下 Pause or Scroll Lock键后,则可利用 PageUp PageDown Up Down Home End 等键来看前后显示的资料 .再按一下 Pause or Scroll Lock则可回

Ajax应用研究-注册应用

最近发现Ajax在用户注册表单和用户登录表单方面应用,最能体现Ajax的交互特点,因此又是写了一个习作! 演示效果如下图: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>ajax注册应用</title> &l