异常:Mongo::Error::OperationFailure
- 继承:
-
Mongo::Error
- 对象
- StandardError
- Mongo::Error
- Mongo::Error::OperationFailure
- 扩展方式:
- 可转发
- 定义于:
- 构建/ruby-driver-v2.19/lib/ mongo /error/operation_failure.rb
Overview
当操作由于某种原因失败时触发。
常量摘要折叠
- CHANGE_STREAM_RESUME_ERRORS =
此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。
错误代码和代码名称,应导致变更流上的 getMore 命令失败而无法恢复。
[ {code_name: 'HostUnreachable', 代码: 6}, {code_name: ' HostNotFound ', 代码: 7}, {code_name: ' NetworkTimeout ', 代码: 89}, {code_name: ' ShutdownInProgress ', 代码: 91}, {code_name: ' PrimarySteppedDown ', 代码: 189}, {code_name: 'ExceededTimeLimit', 代码: 262}, {code_name: ' SocketException ', 代码: 9001}, {code_name: ' NotMaster ', 代码: 10107}, {code_name: ' InterruptedAtShutdown ', 代码: 11600}, {code_name: ' InterruptedDueToReplStateChange ', 代码: 11602}, {code_name: ' NotPrimaryNoSecondaryOk ', 代码: 13435}, {code_name: ' NotMasterOrSecondary ', 代码: 13436}, {code_name: ' StaleShardVersion ', 代码: 63}, {code_name: ' FailedToSatisfyReadPreference ', 代码: 133}, {code_name: 'StaleEpoch', 代码: 150}, {code_name: ' RetryChangeStream ', 代码: 234}, {code_name: ' StaleConfig ', 代码: 13388}, ].冻结
- CHANGE_STREAM_RESUME_MESSAGES =
此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。
遇到这些错误消息时,可以恢复变更流。
ReadWriteRetryable::WRITE_RETRY_MESSAGES
ReadWriteRetryable中包含的常量
ReadWriteRetryable::RETRY_MESSAGES 、 ReadWriteRetryable::WRITE_RETRY_ERRORS 、 ReadWriteRetryable::WRITE_RETRY_MESSAGES
SdamErrorDetection 中包含的常量
SdamErrorDetection::NODE_RECOVERING_CodeS 、 SdamErrorDetection::NODE_SHUTTING_down_CodeS 、 SdamErrorDetection::NOT_MASTER_CodeS
从Mongo::Error继承的常量
BAD_VALUE 、 Code 、 CURSOR_NOT_FOUND 、 ERR 、 ERRMSG 、 ERROR 、 TRANSIENT_TRANSACTION_ERROR_LABEL 、 UNKNOWN_ERROR 、 UNKNOWN_TRANSACTION_COMMIT_RESULT_LABEL 、 WRITE_CONCERN_ERROR 、 WRITE_CONCERN_ERRORS 、 WRITE_ERRORS
实例属性摘要折叠
-
# code ⇒ 整数
只读
从文档中解析的错误代码。
-
# code_name ⇒ string
只读
从文档中解析的错误代码名称。
-
#详细信息⇒ string | nil
只读
错误的详细信息。
-
#document ⇒ BSON::Document | nil
只读
服务器返回的错误文档。
-
# server_message ⇒ string
只读
从响应中解析出服务器返回的错误消息。
-
# write_concern_error_code ⇒ 整数 | nil
只读
写关注错误的错误代码(如果存在写关注错误并具有代码)。
-
# write_concern_error_code_name ⇒ string | nil
只读
如果写关注(write concern)错误存在且具有代码名称,则为写关注(write concern)关注错误的代码名称。
-
# write_concern_error_document ⇒ 哈希 | nil
只读
返回服务器报告的写关注错误文档(如果有)。
包含在Notable中的属性
#connection_global_id 、 #Generation 、 #service_id
实例方法摘要折叠
-
# change_stream_resumable? ⇒ true, false
如果触发此错误的操作是 getMore,则发生此错误的变更流能否恢复?
-
# connection_description ⇒ Server::Description
private
在该服务器上执行此异常所指操作的服务器描述。
-
#initialize (message = nil, result = nil, options = {}) ="OperationFailure"
构造函数
创建操作失败。
-
# max_time_ms_expired? ⇒ true | false
错误是否为 MaxTimeMSExpired。
-
# unsupported_retryable_write? ⇒ true | false
该错误是否是由于在不支持可重试写入的存储引擎上尝试进行可重试写入而导致的。
-
# write_concern_error? ⇒ true | false
故障是否包括写关注错误。
-
# wtimeout? ⇒ true | false
错误是否为写关注(write concern)超时。
ReadWriteRetryable中包含的方法
#retryable? , #write_retryable?
SdamErrorDetection 中包含的方法
#node_recovering? , #node_shutting_down? , #not_master?
从Mongo::Error继承的方法
#write_concern_error_label? , #write_concern_error_labels
WriteRetryable 中包含的方法
Labelable 中包含的方法
#add_label , #label? , #labels
Notable中包含的方法
#add_note 、 #add_notes 、 #notes 、 #to_s
构造函数详情
#initialize (message = nil, result = nil, options = {}) = "OperationFailure"
创建操作失败。
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第187行 def 初始化( = nil, 结果 = nil, = {}) @details = retrieve_details([:文档]) 超(append_details(, @details)) @result = 结果 @code = [:code] @code_name = [:code_name] @write_concern_error_document = [:write_concern_error_document] @write_concern_error_code = [:write_concern_error_code] @write_concern_error_code_name = [:write_concern_error_code_name] @write_concern_error_labels = [:write_concern_error_labels] || [] @labels = [:labels] || [] @wtimeout = !![:wtimeout] @document = [:文档] @server_message = [:server_message] end |
实例属性详细信息
# code ⇒整数(只读)
返回值 从文档中解析出的错误代码。
43 44 45 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第43行 def 代码 @code end |
# code_name ⇒ string (只读)
返回值 从文档中解析出的错误代码名称。
48 49 50 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第48行 def code_name @code_name end |
#详细信息⇒ string | nil (只读)
151 152 153 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第151行 def 详情 @details end |
# 文档 =" BSON::Document | nil (只读)
返回值 服务器返回的错误文档。
156 157 158 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第156行 def 文档 @document end |
# server_message ⇒ string (只读)
返回值 从响应中解析出的服务器返回的错误消息。
54 55 56 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第54行 def @server_message end |
# write_concern_error_code ⇒整数 | nil (只读)
如果存在写关注错误并具有代码,则返回该写关注错误的错误代码。
139 140 141 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第139行 def write_concern_error_code @write_concern_error_code end |
# write_concern_error_code_name ⇒ string | nil (只读)
返回 如果写关注错误存在且具有代码名称,则为写关注错误的代码名称。
145 146 147 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第145行 def write_concern_error_code_name @write_concern_error_code_name end |
# write_concern_error_document ⇒哈希 | nil (只读)
返回服务器报告的写关注错误文档(如果有)。
133 134 135 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第133行 def write_concern_error_document @write_concern_error_document end |
实例方法详细信息
# change_stream_resumable? ⇒ true , false
如果触发此错误的操作是 getMore,是否可以恢复发生此错误的变更流?
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第96行 def change_stream_resumable? if @result && @result.is_a?(mongo::操作::getMore::结果) # CursorNotFound 异常始终是可恢复的,因为服务器 # 不知道游标 ID,因此无法确定是否 # 游标是变更流,无法添加 # ResumableChangeStreamError 标签。 return true if 代码 == 43 # 对于未确认的写入,不会填充连接描述。 if connection_description.max_wire_version >= 9 标签?('ResumableChangeStreamError') else change_stream_resumable_code? end else false end end |
# connection_description ⇒ Server::Description
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回执行此异常所指操作的服务器的MongoDB Server描述。
38 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第38行 def_delegator :@result, :connection_description |
# max_time_ms_expired? ⇒ true | false
错误是否为 MaxTimeMSExpired。
218 219 220 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第218行 def max_time_ms_expired? 代码 == 50 # MaxTimeMSExpired end |
# unsupported_retryable_write? ⇒ true | false
该错误是否是由于在不支持可重试写入的存储引擎上尝试进行可重试写入而导致的。
在不支持可重试写入的存储引擎上执行可重试写入。
229 230 231 232 233 234 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第229行 def unsupported_retryable_write? # 代码20是IllegalOperation。 # 请注意,该文档应为 BSON::Document,因此 # 要么有string键,要么提供无关的访问权限。 代码 == 20 && &。start_with?(" Transaction Numbers ") || false end |
# write_concern_error? ⇒ true | false
返回此故障是否包括写关注(write concern)错误。 故障可能具有顶级错误和写关注(write concern)错误,或两者之一。
125 126 127 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第125行 def write_concern_error? !!@write_concern_error_document end |
# wtimeout? ⇒ true | false
错误是否为写关注(write concern)超时。
209 210 211 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/error/operation_failure.rb', 第209行 def wtimeout? @wtimeout end |