클래스: Mongo::Retryable::ReadWorker Private
- 상속:
-
Base Worker
- 객체
- Base Worker
- Mongo::Retryable::ReadWorker
- 다음에 정의됨:
- 빌드/ Ruby-driver-v2.19/lib/mongo/retryable/read_Worker.rb
개요
이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
읽기 작업 재시도와 관련된 로직을 구현합니다.
인스턴스 속성 요약
BaseWorker에서 상속된 속성
인스턴스 메서드 요약 접기
-
#read_with_one_retry(options = nil) { ... } ⇒ 결과
비공개
네트워크 오류 시 한 번 재시도하여 읽기 작업을 실행합니다.
-
#read_with_retry(session = nil, server_selector = nil, &block) ⇒ 결과
비공개
읽기 작업을 실행하고 재시도합니다.
-
#read_with_retry_cursor(session, server_selector, view, &block) ⇒ 커서
비공개
읽기 작업을 실행하여 커서 를 반환하고 다시 시도합니다.
BaseWorker에서 상속된 메서드
생성자 세부 정보
이 클래스는 Mongo::Retryable::BaseWorker에서 생성자를 상속합니다.
인스턴스 메서드 세부 정보
#read_with_one_retry(options = nil) { ... } ⇒ 결과
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
소켓 오류 시 읽기 작업만 재시도합니다.
네트워크 오류 시 한 번 재시도하여 읽기 작업을 실행합니다.
이 메서드는 운전자 에서 일부 내부 하우스키핑 작업에 사용됩니다. 애플리케이션에서 요청한 읽기는 이 메서드 대신 read_with_retry를 사용해야 합니다.
149 150 151 152 153 154 155 156 157 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/retryable/read_Worker.rb', 줄 149 def read_with_one_retry( = nil) yield 구출 *retryable_exceptions, 오류::풀 오류 => e 올리다 e 하지 않는 한 e.write_retryable? = && [:retry_message] log_retry(e, 메시지: ) yield end |
#read_with_retry(session = nil, server_selector = nil, &block) ⇒ 결과
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
읽기 작업을 실행하고 재시도합니다.
이 메서드는 지정된 서버 선택기에 대해 서버 선택을 수행하고 초기 쿼리 작업을 실행하고 결과를 반환해야 하는 제공된 차단 을 양보합니다. 차단 은 작업을 위해 선택한 서버 를 전달합니다. 차단 에서 예외가 발생하고 이 예외가 읽기 재시도 가능 오류에 해당하고 클라이언트 에 대해 읽기 재시도가 활성화된 경우 이 메서드는 서버 선택을 다시 수행하고 잠재적으로 다른 서버 를 사용하여 다시 차단 을 양보합니다. 차단 이 성공적으로 반환되면 차단 결과가 반환됩니다.
최신 읽기 재시도가 켜져 있는 경우( 기본값), 초기 읽기 작업이 한 번 재시도됩니다. 레거시 읽기 재시도가 켜져 있는 경우, 초기 읽기 작업은 :max_read_retries 클라이언트 설정에 따라 0회 이상 재시도되며, 기본값 은 1 입니다. 읽기 재시도를 비활성화하려면 클라이언트 에서 retry_reads: false를 설정하다 하고 :max_read_retries를 0 로 설정하여 최신 읽기 재시도를 해제합니다.
113 114 115 116 117 118 119 120 121 122 123 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/retryable/read_Worker.rb', 줄 113 def read_with_retry(Session = nil, server_selector = nil, &차단) 만약 Session.nil? && server_selector.nil? deprecated_legacy_read_with_retry(&차단) elsif Session&.retry_reads? Modern_read_with_retry(Session, server_selector, &차단) elsif 고객.max_read_retries > 0 legacy_read_with_retry(Session, server_selector, &차단) other read_without_retry(Session, server_selector, &차단) end end |
#read_with_retry_cursor(session, server_selector, view, &block) ⇒ 커서
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
읽기 작업을 실행하여 커서 를 반환하고 다시 시도합니다.
이 메서드는 지정된 서버 선택기에 대해 서버 선택을 수행하고 초기 쿼리 작업을 실행하고 결과를 반환해야 하는 제공된 차단 을 양보합니다. 차단 은 작업을 위해 선택한 서버 를 전달합니다. 차단 에서 예외가 발생하고 이 예외가 읽기 재시도 가능 오류에 해당하고 클라이언트 에 대해 읽기 재시도가 활성화된 경우 이 메서드는 서버 선택을 다시 수행하고 잠재적으로 다른 서버 를 사용하여 다시 차단 을 양보합니다. 차단 이 성공적으로 반환되면 차단 결과(Mongo::Operation::Result여야 함)를 사용하여 결과 설정하다 에 대한 Mongo::Cursor 객체 를 생성합니다. 그러면 커서 가 반환됩니다.
최신 읽기 재시도가 켜져 있는 경우( 기본값), 초기 읽기 작업이 한 번 재시도됩니다. 레거시 읽기 재시도가 켜져 있는 경우, 초기 읽기 작업은 :max_read_retries 클라이언트 설정에 따라 0회 이상 재시도되며, 기본값 은 1 입니다. 읽기 재시도를 비활성화하려면 클라이언트 에서 retry_reads: false를 설정하다 하고 :max_read_retries를 0 로 설정하여 최신 읽기 재시도를 해제합니다.
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/retryable/read_Worker.rb', 줄 66 def read_with_retry_cursor(Session, server_selector, 보기, &차단) read_with_retry(Session, server_selector) do |서버| 결과 = yield 서버 # RUBY-2367: 쿼리 캐시 를 허용하도록 업데이트됩니다. 멀티 배치 결과가 포함된 캐시 커서 # 만약 쿼리 캐시.활성화? && !보기.컬렉션.system_collection? 캐싱 커서.신규(보기, 결과, 서버, 세션: Session) other 커서.신규(보기, 결과, 서버, 세션: Session) end end end |