모듈: Mongo::Error::ReadWriteRetryable

포함 항목:
Auth::Unauthorized, OperationFailure::Family
다음에 정의됨:
lib/ Mongo/error/read_write_retryable.rb

개요

참고:

이 모듈의 메서드는 공개 API의 일부이지만 이러한 메서드가 이 모듈에서 정의되고 이 모듈을 포함하는 클래스에서 정의되지 않는다는 사실은 공개 API의 일부가 아닙니다.

오류를 재시도할 수 있는지 여부를 나타내는 기능을 캡슐화하는 모듈입니다.

이후:

  • 2.0.0

상수 요약 접기

WRITE_RETRY_ERRORS =

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

쓰기 (write) 실패를 초래해야 하는 오류 코드 및 코드 이름입니다.

이후:

  • 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', 코드: 10_107 },
  { code_name: 'InterruptedAtShutdown', 코드: 11_600 },
  { code_name: 'InterruptedDueToReplStateChange', 코드: 11_602 },
  { code_name: 'NotPrimaryNoSecondaryOk', 코드: 13_435 },
  { code_name: 'NotMasterOrSecondary', 코드: 13_436 },
].동결
WRITE_RETRY_MESSAGES =

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

다음은 마스터 변경을 나타낼 수 있는 오류 메시지입니다.

이후:

  • 2.0.0

[
  'not master',
  '노드가 복구 중입니다. ',
].동결
RETRY_MESSAGES =

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

다음은 mongos 이면의 클러스터 재구성을 나타낼 수 있는 오류 메시지입니다.

이후:

  • 2.0.0

WRITE_RETRY_MESSAGES + [
  '전송 오류',
  '소켓 예외',
  "연결할 수 없습니다",
  '연결 실패',
  '쿼리 중',
  '마지막 오류를 가져올 수 없습니다.',
  '연결 시도 실패',
  '종료 시 중단됨',
  '알 수 없는 복제본 세트',
  '서버와 통신하는 동안 dbclient 오류가 발생했습니다. '
].동결

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#재시도 가능?true, false

더 이상 사용되지 않습니다.

레거시 읽기 재시도 로직에 따른 오류가 재시도 가능한 오류인지 여부입니다.

반환합니다:

  • (true, false)

이후:

  • 2.0.0



78
79
80
81
# 파일 'lib/ Mongo/error/read_write_retryable.rb', 줄 78

def 재시도 가능?
  write_retryable? ||
    (코드.nil? && RETRY_MESSAGES.어떤? { |m| 메시지.포함?(m) })
end

#write_retryable?true, false

최신 재시도 가능 읽기 및 재시도 가능 쓰기 사양에 따라 오류가 재시도 가능 오류인지 여부.

이 메서드는 레거시 재시도 가능 쓰기 (write) 로직에서도 오류가 재시도 가능한지 여부를 결정하는 데 사용됩니다.

반환합니다:

  • (true, false)

이후:

  • 2.0.0



90
91
92
93
# 파일 'lib/ Mongo/error/read_write_retryable.rb', 줄 90

def write_retryable?
  write_retryable_code? ||
    (코드.nil? && WRITE_RETRY_MESSAGES.어떤? { |m| 메시지.포함?(m) })
end