gpt4 book ai didi

java - 在 MongoDB Java Driver 中聚合管道执行中设置超时的行为是什么?

转载 作者:可可西里 更新时间:2023-11-01 10:02:33 24 4
gpt4 key购买 nike

我需要为聚合管道执行设置超时。我正在使用 MongoDB Java 驱动程序 3.2。我知道我必须使用的代码如下:

collection.aggregate(pipeline).maxTime(10, TimeUnit.SECONDS);

问题是一旦达到超时,我无法在任何地方找到程序的行为。它是否抛出异常?它会以静默方式终止并返回一个 null 结果吗?

官方 MongoDB 文档什么也没说(参见 cursor.maxTimeMS())。此外,Java API 不涉及任何特定行为(请参阅 maxTime)。

这怎么可能?!

最佳答案

好的,我知道了。如果聚合管道的执行超过通过方法 maxTime a com.mongodb.MongoExecutionTimeoutException 表示的时间被抛出。

异常的堆栈跟踪如下:

com.mongodb.MongoExecutionTimeoutException: operation exceeded time limit

at com.mongodb.connection.ProtocolHelper.createSpecialException(ProtocolHelper.java:157)
at com.mongodb.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:111)
at com.mongodb.connection.CommandProtocol.execute(CommandProtocol.java:114)
at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:159)
at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:286)
at com.mongodb.connection.DefaultServerConnection.command(DefaultServerConnection.java:173)
at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:215)
at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:206)
at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:112)
at com.mongodb.operation.AggregateOperation$1.call(AggregateOperation.java:227)
at com.mongodb.operation.AggregateOperation$1.call(AggregateOperation.java:223)
at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:239)
at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:212)
at com.mongodb.operation.AggregateOperation.execute(AggregateOperation.java:223)
at com.mongodb.operation.AggregateOperation.execute(AggregateOperation.java:65)
at com.mongodb.Mongo.execute(Mongo.java:772)
at com.mongodb.Mongo$2.execute(Mongo.java:759)

希望对您有所帮助。

关于java - 在 MongoDB Java Driver 中聚合管道执行中设置超时的行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44162307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com