예외: Mongo::Error::OperationFailure

상속:
Mongo::Error
  • 객체
모두 표시
확장자:
전달 가능
다음을 포함합니다.
ReadWriteRetryable, SdamErrorDetection
다음에 정의됨:
빌드/ Ruby-driver-v2.19/lib/mongo/error/operation_failure.rb

개요

어떤 이유로든 작업이 실패할 때 발생합니다.

이후:

  • 2.0.0

상수 요약 접기

CHANGE_STREAM_RESUME_ERRORS =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

변경 스트림이 재개되지 않을 때 실패하는 getMore 명령을 유발하는 오류 코드 및 코드 이름입니다.

이후:

  • 2.0.0

[
  {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의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이러한 오류 메시지가 발생하면 변경 스트림 을 재개할 수 있습니다.

이후:

  • 2.6.0

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_밸류, 코드, CURSOR_NOT_FOUND, ERR, ERRMSG, ERROR, TRANSIENT_TRANSACTION_ERROR_LABEL, UNKNOWN_ERROR, UNKNOWN_TRANSACTION_COMMIT_RESULT_LABEL, WRITE_CONCERN_CONCERN_ERROR, WRITE_CONCERN_CONCERN_WRITE

인스턴스 속성 요약 접기

Notable에 포함된 속성

#connection_global_id, #generation, #service_id

인스턴스 메서드 요약 접기

ReadWriteRetryable에 포함된 메서드

#retryable?, #write_retryable?

SdamErrorDetection에 포함된 메서드

#node_recovering?, #node_shutting_down?, #not_master?

Mongo::Error에서 상속된 메서드

#write_concern_error_label?, #write_concern_error_labels

WriteRetryable에 포함된 메서드

#write_retryable?

Labelable에 포함된 메서드

#add_label, #label?, #labels

Notable에 포함된 메서드

#add_note, #add_notes, #notes, #to_s

생성자 세부 정보

#initialize(message = nil, 결과 = nil, options = {}) ⇒ OperationFailure

작업 실패를 만듭니다.

예시:

오류 객체 만들기

OperationFailure.new(message, result)

코드와 코드 이름을 사용하여 오류 객체 만들기

OperationFailure.new(message, result, :code => code, :code_name => code_name)

매개변수:

  • 메시지 (string) (기본값: nil)

    오류 메시지입니다.

  • 결과 (Operation::Result) (기본값: nil)

    결과 객체 입니다.

  • 옵션 (해시) (기본값: {})

    추가 매개변수.

옵션 해시(options):

  • :code (정수)

    오류 코드입니다.

  • :code_name (string)

    오류 코드 이름입니다.

  • :document (BSON::Document)

    서버에서 반환한 오류 문서.

  • server_message (string)

    응답에서 구문 분석된 서버 반환 오류 메시지입니다.

  • :write_concern_error_document (해시)

    서버에서 제공하는 쓰기 고려 (write concern) 오류 문서(있는 경우)입니다.

  • :write_concern_error_code (정수)

    쓰기 고려 (write concern) 오류에 대한 오류 코드(있는 경우)입니다.

  • :write_concern_error_code_name (string)

    쓰기 고려 오류에 대한 오류 코드 이름입니다(있는 경우).

  • :write_concern_error_labels (Array<String>)

    쓰기 고려 (write concern) 오류에 대한 오류 레이블입니다(있는 경우).

  • :labels (Array<String>)

    오류와 관련된 레이블 집합입니다.

  • :wtimeout (true | false)

    오류가 wtimeout인지 여부입니다.

이후:

  • 2.0.0



187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 187

def 초기화(메시지 = nil, 결과 = nil, 옵션 = {})
  @details = retrieve_details(옵션[:document])
  super(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 = 옵션[:document]
  @server_message = 옵션[:server_message]
end

인스턴스 속성 세부 정보

#코드정수 (읽기 전용)

반환값 문서 에서 구문 분석된 오류 코드를 반환합니다.

반환합니다:

  • (정수)

    문서에서 구문 분석된 오류 코드입니다.

이후:

  • 2.6.0



43
44
45
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 43

def 코드
  @code
end

#code_namestring (읽기 전용)

반환값 문서에서 구문 분석된 오류 코드 이름을 반환합니다.

반환합니다:

  • (string)

    문서에서 구문 분석된 오류 코드 이름입니다.

이후:

  • 2.6.0



48
49
50
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 48

def code_name
  @code_name
end

#세부 정보string | nil (읽기 전용)

오류의 세부 정보를 반환합니다. WriteConcernErrors의 경우 ' 문서['errInfo']'입니다. WriteErrors의 경우 `문서[0]`입니다. 다른 모든 오류의 경우 이 값은 nil입니다.

반환합니다:

  • (string | nil)

    오류의 세부 정보입니다. WriteConcernErrors의 경우 ' 문서['errInfo']'입니다. WriteErrors의 경우 `문서[0]`입니다. 다른 모든 오류의 경우 이 값은 nil입니다.

이후:

  • 2.0.0



151
152
153
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 151

def 세부 정보
  @details
end

#문서BSON::Document | nil (읽기 전용)

서버에서 반환한 오류 문서를 반환합니다.

반환합니다:

  • (BSON::Document | nil)

    서버에서 반환한 오류 문서.

이후:

  • 2.0.0



156
157
158
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 156

def 문서
  @document
end

#server_messagestring (읽기 전용)

응답에서 구문 분석된 서버 반환 오류 메시지를 반환합니다.

반환합니다:

  • (string)

    응답에서 구문 분석된 서버 반환 오류 메시지입니다.

이후:

  • 2.0.0



54
55
56
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 54

def server_message
  @server_message
end

#write_concern_error_code정수 | nil (읽기 전용)

쓰기 고려 오류가 있고 코드가 있는 경우 쓰기 고려 오류에 대한 오류 코드를 반환합니다.

반환합니다:

  • (정수 | nil)

    쓰기 고려 오류가 존재하고 코드가 있는 경우 쓰기 고려 오류에 대한 오류 코드입니다.

이후:

  • 2.10.0



139
140
141
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 139

def write_concern_error_code
  @write_concern_error_code
end

#write_concern_error_code_namestring | nil (읽기 전용)

쓰기 고려 오류가 있고 코드명이 있는 경우 쓰기 고려 오류에 대한 코드 이름을 반환합니다.

반환합니다:

  • (string | nil)

    쓰기 고려 (write concern) 쓰기 고려 (write concern) 의 코드 이름입니다.

이후:

  • 2.10.0



145
146
147
# 파일 'build/ruby-driver-v2.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 (읽기 전용)

서버에서 보고한 쓰기 고려 오류 문서(있는 경우)를 반환합니다.

반환합니다:

  • (Hash | nil)

    서버에 보고된 쓰기 고려 오류입니다.

이후:

  • 2.0.0



133
134
135
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 133

def write_concern_error_document
  @write_concern_error_document
end

인스턴스 메서드 세부 정보

#change_stream_resumable?true, false

이 오류를 트리거한 작업이 getMore인 경우 이 오류가 발생한 변경 스트림을 재개할 수 있나요?

예시:

변경 스트림에 대해 오류를 재개할 수 있나요?

error.change_stream_resumable?

반환합니다:

  • (true, false)

    오류가 재개 가능한지 여부입니다.

이후:

  • 2.6.0



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 96

def change_stream_resumable?
  만약 @result && @result.is_a?(mongo::작업::자세히 보기::결과)
    # 서버 예외는 항상 재개될 수 있습니다.
    # 커서 ID를 인식하지 못하므로 다음 여부를 확인할 수 없습니다.
    # 커서는 변경 스트림이므로 추가할 수 없습니다.
    # ResumableChangeStreamError 레이블.
    반환 true 만약 코드 == 43

    # 승인되지 않은 쓰기에 대해서는 연결 설명이 채워지지 않습니다.
    만약 connection_description.max_wire_version >= 9
      레이블?('ResumableChangeStreamError')
    other
      change_stream_resumable_code?
    end
  other
    거짓
  end
end

#connection_descriptionServer::Description

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 예외가 참조하는 작업이 수행된 서버에 대한 MongoDB Server 설명을 반환합니다.

반환합니다:

  • (Server::Description)

    이 예외가 참조하는 작업이 수행된 서버 에 대한 서버 설명입니다.



38
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 38

def_delegator :@result, :connection_description

#max_time_ms_expired?true | false

오류가 MaxTimeMSExpired인지 여부입니다.

반환합니다:

  • (true | false)

    오류가 MaxTimeMSExpired인지 여부입니다.

이후:

  • 2.10.0



218
219
220
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 218

def max_time_ms_expired?
  코드 == 50 # MaxTimeMSExpired
end

#unsupported_retryable_write?true | false

재시도 가능 쓰기를 지원 하지 않는 스토리지 엔진 에서 재시도 가능 쓰기 (write) 를 시도하여 오류가 발생했는지 여부입니다.

재시도 가능 쓰기 (write) 를 지원 하지 않는 스토리지 엔진 의 재시도 가능 쓰기입니다.

반환합니다:

  • (true | false)

    오류가 다음 시도로 인해 발생했는지 여부

이후:

  • 2.10.0



229
230
231
232
233
234
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 229

def unsupported_retryable_write?
  # 코드 20 은(는) 불법적인 운영입니다.
  # 문서는 BSON::Document여야 하므로
  # string 키를 사용하거나 무관심한 액세스 를 제공할 수 있습니다.
  코드 == 20 && server_message&.start_with?("트랜잭션 번호") || 거짓
end

#write_concern_error?true | false

반환값 실패에 쓰기 고려 (write concern) 오류가 포함되는지 여부를 반환합니다. 실패에는 최상위 오류와 쓰기 고려 (write concern) 오류 또는 둘 중 하나가 있을 수 있습니다.

반환합니다:

  • (true | false)

    실패에 쓰기 고려 (write concern) 오류가 포함되는지 여부입니다. 실패에는 최상위 오류와 쓰기 고려 (write concern) 오류 또는 둘 중 하나가 있을 수 있습니다.

이후:

  • 2.10.0



125
126
127
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 125

def write_concern_error?
  !!@write_concern_error_document
end

#wtimeout?true | false

오류가 쓰기 고려 (write concern) 시간 초과인지 여부입니다.

반환합니다:

  • (true | false)

    오류가 쓰기 고려 (write concern) 시간 초과인지 여부입니다.

이후:

  • 2.7.1



209
210
211
# 파일 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', 줄 209

def wtimeout?
  @wtimeout
end