모듈: Mongo::Operation::Executable Private

다음을 포함합니다.
ResponseHandling
포함 항목:
OpMsgBase
다음에 정의됨:
lib/ Mongo/operation/shared/executable.rb

개요

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

작업의 실행 가능한 동작을 공유합니다.

이후:

  • 2.5.2

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

인스턴스 속성 세부 정보

#contextOperation::Context | nil

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

이 작업을 실행하는 데 사용되는 작업 컨텍스트를 반환합니다.

반환합니다:

  • (Operation::Context | nil)

    이 작업을 실행하는 데 사용되는 작업 컨텍스트입니다.

이후:

  • 2.5.2



33
34
35
# 파일 'lib/ Mongo/operation/shared/executable.rb', 줄 33

def 컨텍스트
  @context
end

인스턴스 메서드 세부 정보

#do_execute(connection, context, options = {}) ⇒ 객체

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

이후:

  • 2.5.2



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# 파일 'lib/ Mongo/operation/shared/executable.rb', 줄 35

def do_execute(연결, 컨텍스트, 옵션 = {})
  # 인스턴스 에 컨텍스트를 저장하여
  # 매개변수를 모든 단일 메서드에 추가합니다. 다음과 같은 많은 레거시 메서드가 있습니다.
  # 여전히 매개 변수로 허용하며, 지금은 그대로 둡니다.
  # 이 변경의 영향 최소화합니다. 앞으로는
  # 리팩터링하기에 합리적이므로 저장된 이 참조가 대신 사용됩니다.
  @context = 컨텍스트

  Session&.Materialize_if_needed
  unpin_maybe(Session, 연결) do
    add_error_labels(연결, 컨텍스트) do
      check_for_network_error do
        add_server_diagnostics(연결) do
          get_result(연결, 컨텍스트, 옵션). do |결과|
            만약 Session
              만약 Session.in_transaction? &&
                연결.description.load_balancer?
              then
                만약 Session.pinned_connection_global_id
                  하지 않는 한 Session.pinned_connection_global_id == 연결.global_id
                    올리다(
                      오류::Internal DriverError,
                      "작업이 #{session.pinned_connection_global_id}연결을 사용해야 하지만 #{connection.global_id}연결을 사용했습니다. "
                    )
                  end
                other
                  Session.pin_to_connection(연결.global_id)
                  연결.
                end
              end

              만약 Session.스냅샷? && !Session.snapshot_timestamp
                Session.snapshot_timestamp = 결과.snapshot_timestamp
              end
            end

            만약 결과.has_cursor_id? &&
              연결.description.load_balancer?
            then
              만약 결과.cursor_id == 0
                연결.고정 해제
              other
                연결.
              end
            end
            process_result(결과, 연결)
          end
        end
      end
    end
  end
end

#execution(connection, context:, options: {}) ⇒ 객체

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

이후:

  • 2.5.2



88
89
90
91
92
93
94
95
96
97
98
# 파일 'lib/ Mongo/operation/shared/executable.rb', 줄 88

def 실행(연결, 컨텍스트:, 옵션: {})
  만약 Lint.활성화?
    하지 않는 한 연결.is_a?(mongo::서버::연결)
      올리다 오류::LintError, "연결 인수의 유형이 잘못되었습니다: #{연결}"
    end
  end

  do_execute(연결, 컨텍스트, 옵션). do |결과|
    validate_result(결과, 연결, 컨텍스트)
  end
end