클래스: Mongo::Server

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음을 포함합니다.
이벤트::게시자, 모니터링::게시 가능
다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/server.rb,
build/ruby-driver-v2.19/lib/mongo/server/monitor.rb,
build/ruby-driver-v2.19/lib/mongo/server/connection.rb,
build/ruby-driver-v2.19/lib/mongo/server/description.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/app_metadata.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/push_monitor.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/connection_base.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/connection_pool.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/connection_common.rb,
build/ Ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/pending_connection.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/description/features.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/monitor/app_metadata.rb,
build/ Ruby-driver-v2.19/lib/mongo/server/app_metadata/platform.rb,
build/ruby-driver-v2.19/lib/mongo/server/app_metadata/truncator.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/push_monitor/connection.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/app_metadata/environment.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/round_trip_time_averager.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/connection_pool/populator.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/description/load_balancer.rb,
빌드/루비 드라이버-v2.19/lib/mongo/server/connection_pool/generation_manager.rb

개요

독립형, 복제본 세트 의 일부 또는 mongos 일 수 있는 서버 측의 단일 서버 를 나타냅니다.

이후:

  • 2.0.0

네임스페이스 아래에 정의됨

클래스: AppMetadata, Connection, ConnectionBase, ConnectionCommon, ConnectionPool, 설명, 모니터, PendingConnection, PushMonitor, RoundTripTimeAverager

상수 요약 접기

CONNECT_TIMEOUT =

연결 시도 시간을 초과하는 기본값 시간(초)입니다.

이후:

  • 2.4.3

10.동결

Loggable에서 포함된 상수

Loggable::prefix

인스턴스 속성 요약 접기

Event::Publisher에 포함된 속성

#event_listeners

인스턴스 메서드 요약 접기

Event::Publisher에 포함된 메서드

#publish

Monitoring::Publishable에 포함된 메서드

#publish_cmap_event, #publish_event, #publish_s담_event

Loggable에 포함된 메서드

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

생성자 세부 정보

#initialize(address, cluster, monitoring, event_listeners, options = {}) ⇒ MongoDB Server

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

참고:

서버는 클러스터 외부에서 직접 인스턴스화해서는 안 됩니다.

새 서버 객체 를 인스턴스화합니다. 배경 새로 고침을 시작하고 적절한 이벤트를 구독 합니다.

예시:

서버 를 초기화합니다.

Mongo::Server.new('127.0.0.1:27017', cluster, monitoring, listeners)

매개변수:

  • 주소 (주소)

    호스팅하다: 연결할 포트 주소 입니다.

  • cluster (클러스터)

    서버 가 속한 클러스터 입니다.

  • 모니터링 (모니터링)

    모니터링.

  • event_listeners (Event::Listeners)

    이벤트 리스너.

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

    서버 옵션.

옵션 해시(options):

  • :monitor (부울)

    내부 운전자 전용: 인스턴스화 후 서버 를 모니터 할지 여부입니다.

  • :monitoring_io (true, false)

    내부 드라이버 전용입니다. 이 서버에서 SDAM 관련 I/O를 수행하지 않으려면 false로 설정합니다. 참고: 이 옵션을 false로 설정하면 서버가 작동하지 않습니다. SDAM 상태 전환을 수동으로 호출하는 테스트에 사용하기 위한 것입니다.

  • :populator_io (true, false)

    내부 운전자 전용입니다. 서버의 연결 풀 에서 채우기 스레드가 생성되고 시작되지 않도록 하려면 false로 설정합니다. 채우기 도구가 명시적으로 필요한 경우를 제외하고 monitoring_io도 끄는 테스트에 사용하기 위한 것입니다. monitoring_io가 꺼져 있지만populator_io가 켜져 있는 경우, 모니터링 이 없는 클러스터 는 연결되지 않은 것으로 간주되어 닫을 때 연결 풀 채우기 스레드를 정리하지 않으므로 테스트가 끝날 때 채우기를 수동으로 닫아야 합니다.

  • :load_balancer (true | false)

    이 서버 가 로드 밸런서 인지 여부입니다.

  • :connect (string)

    클라이언트 연결 모드.

이후:

  • 2.0.0



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 71

def 초기화(주소, cluster, 모니터링, event_listeners, 옵션 = {})
  @address = 주소
  @cluster = cluster
  @monitoring = 모니터링
  옵션 = 옵션.dup
  _monitor = 옵션.삭제(:monitor)
  @options = 옵션.동결
  @event_listeners = event_listeners
  @connection_id_gen = 클래스.신규 do
    포함 ID
  end
  @scan_semapher = DistingushingSemapher.신규
  @round_trip_time_averager = 왕복 시간 평균.신규
  @description = 설명.신규(주소, {},
    load_balancer: !!@options[:load_balancer],
    force_load_balancer: force_load_balancer?,
  )
  @last_scan = nil
  @last_scan_monotime = nil
  하지 않는 한 옵션[:monitoring_io] == 거짓
    모니터 = 모니터.신규(self, event_listeners, 모니터링,
      옵션.merge(
        app_metadata: cluster.,
        push_monitor_app_metadata: cluster.,
        heartbeat_interval: cluster.heartbeat_interval,
    ))
    하지 않는 한 _monitor == 거짓
      start_monitoring
    end
  end
  @connected = true
  @pool_lock = 뮤텍스.신규
end

인스턴스 속성 세부 정보

#주소string (읽기 전용)

서버 에 대해 구성된 주소 를 반환합니다.

반환합니다:

  • (string)

    서버 에 대해 구성된 주소 입니다.

이후:

  • 2.0.0



106
107
108
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 106

def 주소
  @address
end

#클러스터cluster (읽기 전용)

반환값 클러스터 서버 클러스터 입니다.

반환합니다:

  • (클러스터)

    클러스터 서버 클러스터 입니다.

이후:

  • 2.0.0



109
110
111
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 109

def cluster
  @cluster
end

#descriptionServer::Description (읽기 전용)

모니터 가 새로 고침되는 설명 서버 설명을 반환합니다.

반환합니다:

이후:

  • 2.0.0



123
124
125
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 123

def description
  @description
end

#모니터nil | 모니터 (읽기 전용)

모니터를 반환합니다. nil은 monitoring_io: false 옵션을 사용하여 서버를 생성한 경우입니다.

반환합니다:

  • (nil | 모니터)

    모니터 서버 모니터입니다. nil은 monitoring_io: false 옵션을 사용하여 서버를 생성한 경우입니다.

이후:

  • 2.0.0



113
114
115
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 113

def 모니터
  모니터
end

#모니터링모니터링 (읽기 전용)

모니터링을 반환합니다.

반환합니다:

이후:

  • 2.0.0



119
120
121
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 119

def 모니터링
  @monitoring
end

#options해시 (읽기 전용)

옵션 해시를 반환합니다.

반환합니다:

  • (해시)

    옵션 해시입니다.

이후:

  • 2.0.0



116
117
118
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 116

def 옵션
  @options
end

#round_trip_time_averagerRoundTripTimeAverager (읽기 전용)

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

왕복 시간 평균기 객체를 반환합니다.

반환합니다:

이후:

  • 2.0.0



233
234
235
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 233

def round_trip_time_averager
  @round_trip_time_averager
end

#스캔_ 세마포어 ⇒ 세마포어 (읽기 전용)

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

이 서버가 실행 경우 모니터 가 해당 서버 에 대한 즉각적인 스캔을 요청 하도록 신호를 보내는 세마포어를 반환합니다.

반환합니다:

  • (세마포어)

    모니터 가 실행 경우 해당 서버 에 대한 즉각적인 스캔을 요청 하도록 신호를 보내는 세마포어입니다.

이후:

  • 2.0.0



229
230
231
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 229

def scan_semapher
  @scan_semapher
end

인스턴스 메서드 세부 정보

#==(기타) ⇒ true, false

이 서버 가 다른 서버와 동일합니까?

예시:

서버 가 다른 서버와 동일합니까?

server == other

매개변수:

  • 기타 (객체)

    비교할 객체입니다.

반환합니다:

  • (true, false)

    서버가 동일한 경우.

이후:

  • 2.0.0



245
246
247
248
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 245

def ==(기타)
  반환 거짓 하지 않는 한 기타.is_a?(서버)
  주소 == 기타.주소
end

#clear_connection_pool(service_id: nil, interrupt_in_use_connections: false) ⇒ 객체

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

매개변수:

  • :service_id (객체)

    지정된 서비스 ID로만 연결을 닫습니다.

  • :interrupt_in_use_connections (true | false)

    지워진 연결도 중단해야 하는지 여부입니다.

이후:

  • 2.0.0



667
668
669
670
671
672
673
674
675
676
677
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 667

def clear_connection_pool(service_id: nil, interrupt_in_use_connections: 거짓)
  @pool_lock.동기화 do
    # 닫힌 후 알 수 없음으로 표시된 서버는 기술적으로
    # 올바르지 않지만 어떤 상태 도 의미 있게 변경하지는 않습니다.
    # 이전에는 드라이버가 서버를 다음과 같이 표시하도록 허용했기 때문입니다.
    언제든지 알 수 없음, 풀이 닫혀도 계속 이 작업을 수행합니다.
    만약 @pool && !@pool.닫힘?
      @pool.연결 해제!(service_id: service_id, interrupt_in_use_connections: interrupt_in_use_connections)
    end
  end
end

#clear_description객체

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

알 수 없는 것으로 간주되어 안전하게 연결이 끊어질 수 있도록 서버 설명을 지웁니다.

이후:

  • 2.0.0



657
658
659
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 657

def clear_description
  @description = mongo::서버::설명.신규(주소, {})
end

#닫기객체

이후:

  • 2.0.0



294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 294

def 닫기
  만약 모니터
    모니터.중지!
  end

  @connected = 거짓

  _pool = nil
  @pool_lock.동기화 do
    _pool, @pool = @pool, nil
  end

  # TODO: RUBY-3174 에서 _pool.close 로 변경합니다.
  # 풀을 비웁니다. 서버를 알 수 없는 경우
  # 풀은 준비된 상태로 유지됩니다. 배경 채우기 스레드를 중지합니다.
  _pool&.닫기(rest_ready: true)

  nil
end

#compressorString | nil

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

압축은 각 연결에 대해 별도로 협상됩니다.

서버 모니터 가 협상한 압축기(있는 경우)입니다.

아직 완료되지 않은 서버 검사가 없고 압축이 무효화되지 않은 경우 이 속성은 nil입니다.

반환합니다:

  • (string | nil)

    협상된 압축기.

이후:

  • 2.0.0



181
182
183
184
185
186
187
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 181

def 압축기
  만약 모니터
    모니터.압축기
  other
    nil
  end
end

#connectable?true, false

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

MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.

서버에 대한 연결을 설정할 수 있고 해당 서버로 메시지를 보낼 수 있는지 확인합니다.

예시:

서버를 연결할 수 있나요?

server.connectable?

반환합니다:

  • (true, false)

    서버 가 연결 가능한 경우.

이후:

  • 2.1.0



261
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 261

def 연결 가능?; end

#연결되었나요?true|false

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

서버 연결 여부입니다.

반환합니다:

  • (true|false)

    서버 연결 여부입니다.

이후:

  • 2.7.0



320
321
322
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 320

def 연결됨?
  @connected
end

#연결 해제!true

이 서버에서 드라이버 연결을 해제합니다.

연결 풀 에서 이 서버 에 대한 모든 유휴 연결(있는 경우)의 연결을 끊습니다. 연결 풀 의 채우기가 실행 경우 중지합니다. 현재 체크아웃된(즉, 사용 중인) 연결을 즉시 닫지 않습니다. 이러한 연결은 해당 연결 풀로 되돌아갈 때 닫힙니다. 서버의 배경 모니터 를 중지합니다.

반환합니다:

  • (true)

    항상 사실입니다.

이후:

  • 2.0.0



275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 275

def 연결 해제!
  만약 모니터
    모니터.중지!
  end

  @connected = 거짓

  # 현재 CMAP 사양은 풀이 대부분 사용할 수 없도록 요구합니다.
  # 서버를 알 수 없는 경우(또는 연결이 끊어진 경우).
  # 그러나 미해결 작업은 계속 완료되어야 합니다.
  # 그리고 해당 연결은 풀에 체크인되어야 합니다.
  # 분해되었습니다. 이 정리 요구 사항으로 인해 다음을 수행할 수 없습니다.
  # 풀을 닫고 여기에서 nil로 설정하다 하여 다음에 다시 생성합니다.
  # 서버가 검색된 시간입니다.
  pool_internal&.지우기

  true
end

#force_load_balancer?true | false

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

이 서버가 로드 밸런서를 강제로 사용할지 여부를 반환합니다.

반환합니다:

  • (true | false)

    이 서버를 로드 밸런서로 강제 설정할지 여부입니다.

이후:

  • 2.0.0



130
131
132
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 130

def force_load_balancer?
  옵션[:connect] == :load_balancing
end

#handle_auth_failure!객체

인증 실패를 처리합니다.

예시:

가능한 인증 실패를 처리합니다.

server.handle_auth_failure! do
  Auth.get(user).(self)
end

반환합니다:

  • (객체)

    차단 실행 결과입니다.

다음을 발생시킵니다.

이후:

  • 2.3.0



524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 524

def handle_auth_failure!
  yield
구출 mongo::오류::SocketTimeoutError
  # 클러스터 가 느릴 수 있으므로 포기하지 마세요.
  올리다
구출 mongo::오류::SocketError, 인증::승인되지 않음 => e
  # 시간 초과가 아닌 네트워크 오류 또는 인증 오류, 풀을 지우고
  # 토폴로지 를 알 수 없음으로 지정
  알 수 없음!(
    생성: e.생성,
    service_id: e.service_id,
    stop_push_monitor: true,
  )
  올리다
end

#handle_handShake_failure!객체

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

핸드셰이크 실패를 처리합니다.

이후:

  • 2.7.0



501
502
503
504
505
506
507
508
509
510
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 501

def handle_handShake_failure!
  yield
구출 mongo::오류::SocketError, mongo::오류::SocketTimeoutError => e
  알 수 없음!(
    생성: e.생성,
    service_id: e.service_id,
    stop_push_monitor: true,
  )
  올리다
end

#heartbeat_frequencyObject 다음과 같이 알려진 객체: heartbeat_ Frequency_seconds

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

이후:

  • 2.0.0



159
160
161
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 159

def 하트비트_빈도
  cluster.heartbeat_interval
end

#검사string

예쁜 인쇄된 서버 검사를 받으세요.

예시:

서버 검사를 받습니다.

server.inspect

반환합니다:

  • (string)

    좋은 검사 string 입니다.

이후:

  • 2.0.0



355
356
357
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 355

def 검사
  "#<Mongo::Server:0x#{object_id} 주소=#{주소.호스팅하다}:#{주소.포트} #{status}>"
end

#last_scan시간 | nil

last_scan 마지막 서버 스캔이 완료된 시간을 반환하고, 서버 가 아직 스캔되지 않은 경우 nil을 반환합니다.

반환합니다:

  • (시간 | nil)

    last_scan 마지막 서버 스캔이 완료된 시간이며, 서버 가 아직 스캔되지 않은 경우 nil입니다.

이후:

  • 2.4.0



138
139
140
141
142
143
144
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 138

def last_scan
  만약 description && !description.config.비어 있나요?
    description.last_update_time
  other
    @last_scan
  end
end

#last_scan_monotimeFloat | nil

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

last_scan_monotime 마지막 서버 스캔이 완료된 단조적 시간을 반환하고, 서버 가 아직 스캔되지 않은 경우 nil을 반환합니다.

반환합니다:

  • (Float | nil)

    last_scan_monotime 마지막 서버 스캔이 완료된 단조적 시간이거나, 서버가 아직 스캔되지 않은 경우 nil입니다.

이후:

  • 2.0.0



149
150
151
152
153
154
155
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 149

def last_scan_monotime
  만약 description && !description.config.비어 있나요?
    description.last_update_monotime
  other
    @last_scan_monotime
  end
end

#match_tag_set?(tag_set) ⇒ true, false

제공된 태그가 서버 태그의 하위 집합인지 확인합니다.

예시:

제공된 태그는 서버 태그의 하위 집합입니다.

server.matches_tag_set?({ 'rack' => 'a', 'dc' => 'nyc' })

매개변수:

  • tag_set (해시)

    서버의 태그와 비교할 태그 세트 입니다.

반환합니다:

  • (true, false)

    제공된 태그가 서버 태그의 하위 집합인 경우.

이후:

  • 2.0.0



461
462
463
464
465
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 461

def matches_tag_set?(tag_set)
  tag_set..모두? do |k|
    tags[k] && tags[k] == tag_set[k]
  end
end

#Next_connection_id객체

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

이후:

  • 2.0.0



680
681
682
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 680

def Next_connection_id
  @connection_id_gen.Next_id
end

#Mongo::Server::ConnectionPool

이 서버 의 연결 풀 을 가져옵니다.

예시:

서버의 연결 풀을 가져옵니다.

server.pool

반환합니다:

이후:

  • 2.0.0



424
425
426
427
428
429
430
431
432
433
434
435
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 424

def 
  만약 알 수 없음?
    올리다 오류::ServerNotUsable, 주소
  end

  @pool_lock.동기화 do
    opts = 연결됨? ? 옵션 : 옵션.merge(populator_io: 거짓)
    @pool ||= 연결 풀.신규(self, opts). do ||
      .준비됨
    end
  end
end

#Pool_internalServer::ConnectionPool | nil

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

이 서버의 연결 풀을 검색하는 내부 드라이버 메서드입니다.

과 달리 poolpool_internal 풀이 아직 존재하지 않는 경우 풀을 생성하지 않습니다.

반환합니다:

이후:

  • 2.0.0



445
446
447
448
449
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 445

def pool_internal
  @pool_lock.동기화 do
    @pool
  end
end

#publish_opening_event객체

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

서버 열기 이벤트 를 게시합니다.

이후:

  • 2.0.0



340
341
342
343
344
345
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 340

def publish_opening_event
  publish_sdam_event(
    모니터링::SERVER_OPENING,
    모니터링::이벤트::ServerOpening.신규(주소, cluster.토폴로지)
  )
end

#다시 연결하세요!true

서버 모니터 를 다시 시작합니다.

예시:

서버 모니터 를 다시 시작합니다.

server.reconnect!

반환합니다:

  • (true)

    항상 사실입니다.

이후:

  • 2.1.0



475
476
477
478
479
480
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 475

def 다시 연결합니다!
  만약 옵션[:monitoring_io] != 거짓
    모니터.다시 시작!
  end
  @connected = true
end

#retry_reads?부울

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

서버 가 최신 읽기 재시도를 지원하는지 여부.

반환합니다:

  • (부울)

이후:

  • 2.0.0



543
544
545
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 543

def retry_reads?
  !!(기능.세션_활성화? && logical_session_timeout)
end

#retry_writes?true, false

참고:

재시도 가능 쓰기는 서버 버전 3.6이상 및 샤드 클러스터 또는 복제본 세트에서만 사용할 수 있습니다.

참고:

이 메서드의 일부 조건은 로드 밸런싱된 토폴로지에 대해 자동으로 false를 반환합니다. 부하 분산 토폴로지는 MongoDB 5.0+에서만 사용할 수 있고 독립형 토폴로지에서는 사용할 수 없으므로 이 방법의 조건은 항상 참이어야 합니다. 따라서 재시도 쓰기가 활성화되어 있다고 가정할 수 있습니다.

이 서버 로 전송된 쓰기를 다시 시도합니다.

예시:

쓰기가 다시 시도됩니다.

server.retry_writes?

반환합니다:

  • (true, false)

    쓰기가 다시 시도되는 경우.

이후:

  • 2.5.0



564
565
566
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 564

def retry_writes?
  !!(기능.세션_활성화? && logical_session_timeout && !독립형?) || load_balancer?
end

#start_monitoring객체

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

서버 모니터링을 시작합니다.

운전자 에서 내부적으로 사용하여 서버 가 클러스터에 추가될 때까지 모니터링 을 지연하면서 클러스터 에 서버 를 추가 클러스터.

이후:

  • 2.0.0



330
331
332
333
334
335
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 330

def start_monitoring
  publish_opening_event
  만약 옵션[:monitoring_io] != 거짓
    모니터.실행!
  end
end

#statusString

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

서버 상태를 나타내는 string 을 반환합니다(예: PRIMARY).

반환합니다:

  • (string)

    서버 상태를 나타내는 string (예: PRIMARY).

이후:

  • 2.0.0



362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 362

def 상태
  case
  when load_balancer?
    'LB'
  when 프라이머리?
    'PRIMARY'
  when 세컨더리?
    'SECONDARY'
  when 독립형?
    'STANDALONE'
  when 중재자?
    'ARBITER'
  when ghost?
    'GHOST'
  when 기타?
    'OTHER'
  when mongos?
    'MONGOS'
  when 알 수 없음?
    '알 수 없음'
  other
    # 요약 메서드는 디버깅에 자주 사용되므로
    # 예상되는 유형 중 일치하는 유형이 없는 경우 예외
    nil
  end
end

#요약객체

참고:

이 방법은 실험적이며 변경될 수 있습니다.

이후:

  • 2.7.0



393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 393

def 요약
  상태 = self.상태 || ''
  만약 replica_set_name
    상태 += " replica_set=#{replica_set_name}"
  end

  하지 않는 한 모니터&.실행?
    상태 += " NO-MONITORING"
  end

  만약 @pool
    상태 += " 풀=#{@pool.요약}"
  end

  주소_비트 = 만약 주소
    "#{주소.호스팅하다}:#{주소.포트}"
  other
    'nil'
  end

  "#<서버 주소=#{주소_비트} #{status}>"
end

#알 수 없음!(options = {}) ⇒ 객체

서버 를 알 수 없음으로 표시하고 관련 SDAM 이벤트 를 게시합니다(서버 설명 변경됨).

옵션에서 세대를 전달하는 경우 전달된 세대가 서버 연결 풀 의 현재 세대보다 오래되지 않은 경우에만 서버 가 알 수 없음으로 표시됩니다.

매개변수:

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

    옵션.

옵션 해시(options):

  • :generation (정수)

    오류를 일으킨 작업에 사용된 연결의 연결 풀 생성입니다.

  • :keep_connection_pool (true | false)

    일반적으로 새 서버 설명을 알 수 없는 경우 해당 서버의 연결 풀이 지워집니다. 기존 연결 풀을 유지하려면 이 옵션을 true로 설정합니다( 4.2+ 서버에서 마스터가 아닌 오류를 처리할 때 필요).

  • :topology_version (TopologyVersion)

    서버 를 알 수 없음으로 표시하게 하는 오류 응답의 토폴로지 버전입니다.

  • :stop_push_monitor (true | false)

    서버 와 연결된 푸시모니터를 중지할지 여부입니다(있는 경우).

  • :service_id (객체)

    지정된 서비스 ID에 대해서만 상태 를 삭제합니다.

이후:

  • 2.4.0, SDAM 이벤트는 버전 2.7.0부터 전송됩니다.



592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 592

def 알 수 없음!(옵션 = {})
   = pool_internal

  만약 load_balancer?
    # 클라이언트 가 로드 밸런싱된 토폴로지 에 있는 경우, 서버(하나 및
    # 로드 밸런서로 시작하여 로드 밸런서 로 유지됩니다.
    # 로드 밸런서 무기한. 따라서 알 수 없음으로 표시되지 않습니다.
    #
    # 그러나 이 메서드는 서버 의 연결 풀 도 지웁니다.
    # 후자가 알 수 없음으로 표시되어 있고 이 부분이 수행되어야 하는 경우
    # 서버가 로드 밸런서인 경우.
    #
    # 로드 밸런서 서버에 서비스 ID가 없을 수 있습니다.
    # 예를 예시 아직 성공적인 연결이 없는 경우
    # 이 서버이지만 다음과 같은 경우 서버가 여전히 알 수 없음으로 표시될 수 있습니다.
    이러한 연결의 #가 설정 도중에 실패했습니다.
    만약 service_id = 옵션[:service_id]
      &.연결 해제!(service_id: service_id)
    end
    반환
  end

  만약 옵션[:generation] && 옵션[:generation] < &.생성
    반환
  end

  만약 옵션[:topology_version] && description.topology_version &&
    !옵션[:topology_version].gt?(description.topology_version)
  then
    반환
  end

  만약 옵션[:stop_push_monitor]
    모니터&.stop_push_monitor!
  end

  # SDAM 흐름은 제자리에서 없이 서버 의 설명을 업데이트 합니다.
  # 변형을 처리하고 필요에 따라 SDAM 전환을 호출합니다.
  config = {}
  만약 옵션[:service_id]
    config['serviceId'] = 옵션[:service_id]
  end
  만약 옵션[:topology_version]
    config['topologyVersion'] = 옵션[:topology_version]
  end
  new_description = 설명.신규(주소, config,
    load_balancer: load_balancer?,
    force_load_balancer: 옵션[:connect] == :load_balancing,
  )
  cluster.run_sdam_flow(description, new_description, 옵션)
end

#update_description(description) ⇒ 객체

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

이후:

  • 2.0.0



645
646
647
648
649
650
651
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 645

def update_description(description)
   = pool_internal
  만약  && !description.알 수 없음?
    .준비됨
  end
  @description = description
end

#update_last_scanObject

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

이후:

  • 2.0.0



685
686
687
688
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 685

def update_last_scan
  @last_scan = 시간.지금
  @last_scan_monotime = Utils.단조적 시간
end

#with_connection(connection_global_id: nil, &block) ⇒ 객체

연결을 통해 코드 블록을 실행하고, 서버의 풀에서 체크아웃했다가 다시 체크인합니다.

예시:

연결과 함께 메시지를 보냅니다.

server.with_connection do |connection|
  connection.dispatch([ command ])
end

반환합니다:

  • (객체)

    차단 실행 결과입니다.

이후:

  • 2.3.0



493
494
495
# 파일 'build/ruby-driver-v2.19/lib/mongo/server.rb', 줄 493

def with_connection(connection_global_id: nil, &차단)
  .with_connection(connection_global_id: connection_global_id, &차단)
end