MongoDB中db.currentOp()输出中的奇怪操作

MongoDB中db.currentOp()输出中的奇怪操作,mongodb,Mongodb,启动MongoDB服务器(独立实例,版本4.2.2)后,如果运行db.currentOp()我会看到以下操作: { "type" : "op", "host" : "menzo:27017", "desc" : "waitForMajority", "active" : true, "currentOpTime" : "2020-05-06T16:16:33.077+0200", "opid"

启动MongoDB服务器(独立实例,版本4.2.2)后,如果运行
db.currentOp()
我会看到以下操作:

    {
        "type" : "op",
        "host" : "menzo:27017",
        "desc" : "waitForMajority",
        "active" : true,
        "currentOpTime" : "2020-05-06T16:16:33.077+0200",
        "opid" : 2,
        "op" : "none",
        "ns" : "",
        "command" : {

        },
        "numYields" : 0,
        "waitingForLatch" : {
            "timestamp" : ISODate("2020-05-06T14:02:55.895Z"),
            "captureName" : "WaitForMaorityService::_mutex"
        },
        "locks" : {

        },
        "waitingForLock" : false,
        "lockStats" : {

        },
        "waitingForFlowControl" : false,
        "flowControlStats" : {

        }
    }
不管经过多长时间,这个操作似乎总是存在的。此外,在某些方面,这是一个奇怪的操作:

  • 它有一个非常好的日志
    opid
    编号(2)
  • 它的
    op
    “无”
  • 它没有通常的
    secs\u运行
    microsecs\u运行
    参数
  • 它在某些文字中提到“多数”,但我运行的不是副本集,而是独立实例
我想这应该是某种内部操作(可能是一种“等待线程”),但我还没有在文档中找到关于它的文档


是否有人知道该操作和/或可以指向描述该操作的文档?提前谢谢

已定义等待多数服务。查看此文件的历史记录,它似乎是作为工作的一部分添加的

阅读票据描述,似乎在启动期间,多个操作可能需要等待多数提交。以前,每个线程可能都创建了一个单独的线程等待;对于多数等待服务,只有一个线程正在等待最近的所需提交

因此:

它的op是“无”

线程未执行操作

它有一个非常好的日志opid号(2)

这是因为该线程是在服务器启动时启动的

它在某些文字中提到“多数”,但我运行的不是副本集,而是独立实例


可以指示
mongod
以副本集模式运行,并将其指向由独立节点创建的数据目录,反之亦然。在这些情况下,您可能希望流程保留数据库中已有的信息,例如挂起(或需要中止)的事务。因此,启动程序可能会执行不属于要求的操作模式的操作。

谢谢您的回答!浏览MongoDB源代码以找到解决方案超出了我的研究范围;)