모듈: 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', :code => 6},
  {:code_name => 'HostNotFound', :code => 7},
  {:code_name => 'NetworkTimeout', :code => 89},
  {:code_name => 'ShutdownInProgress', :code => 91},
  {:code_name => 'PrimarySteppedDown', :code => 189},
  {:code_name => 'ExceededTimeLimit', :code => 262},
  {:code_name => 'SocketException', :code => 9001},
  {:code_name => 'NotMaster', :code => 10107},
  {:code_name => 'InterruptedAtShutdown', :code => 11600},
  {:code_name => 'InterruptedDueToReplStateChange', :code => 11602},
  {:code_name => 'NotPrimaryNoSecondaryOk', :code => 13435},
  {:code_name => 'NotMasterOrSecondary', :code => 13436},
].동결
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



81
82
83
84
# 파일 'lib/ Mongo/error/read_write_retryable.rb', 줄 81

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

#write_retryable?true, false

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

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

반환합니다:

  • (true, false)

이후:

  • 2.0.0



93
94
95
96
# 파일 'lib/ Mongo/error/read_write_retryable.rb', 줄 93

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