mongodb java驱动程序4.0+会重试dbcursor.next()吗?

thigvfpy  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(494)

我知道mongojava驱动程序会重试 collection.find() ,以及大多数其他读取操作。
但我在文档或驱动程序源代码中看不到任何地方-它会重试吗 DBCursor.next() 或者 DBCursor.hasNext() ?

tsm1rwdh

tsm1rwdh1#

collection.find() 将重试整个集合,很清楚。
现在,如果你用的是 while 操作,然后您可以使用 hasNext() 操作,以便在没有更多元素时中断操作。

while(cursor.hasNext()){
  system.out.println(cursor.next())
}
gwo2fgha

gwo2fgha2#

不,它不会重试基于游标的读取。
无法重试cursor.getmore(),因为客户端无法识别游标是否已高级。换句话说,由于驱动程序不知道最初的getmore()是否成功,因此驱动程序无法可靠地知道结果是否会被无意中跳过。
更多详情请点击这里-https://github.com/mongodb/specifications/blob/master/source/retryable-reads/retryable-reads.rst#implementing-可重试读取

相关问题