클래스: Mongo::Server

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음을 포함합니다.
이벤트::게시자, 모니터링::게시 가능
다음에 정의됨:
lib/ Mongo/ 서버.rb




,
lib/
Mongo/ 서버/
모니터.rb,

lib/ Mongo/ 서버/connection.rb, lib/
Mongo/ 서버/description.rb, lib/ Mongo/ 서버/app_metadata.rb, lib/ Mongo/ 서버/push_monitor.rb, lib/ Mongo/ 서버/connection_base.rb, lib/ Mongo/ 서버/connection_pool.rb, lib/ Mongo/ 서버/connection_common.rb, lib/
Mongo/ 서버/ 모니터/connection.rb, lib/ Mongo/ 서버/pending_connection.rb,
lib/ Mongo/ 서버/description/features.rb,
lib/ Mongo/ 서버/ 모니터/app_metadata.rb, lib/
Mongo/ 서버/app_metadata/platform.rb, lib/
Mongo/ 서버/app_metadata/truncator.rb, lib/ Mongo/ 서버/push_mongo/connection.rb,
lib/ Mongo/ 서버/app_metadata/environment.rb,
lib/ Mongo/ 서버/connection_pool/populator.rb, lib/ Mongo/ 서버/ description/load_balancer.rb,
lib/ Mongo/ 서버/round_trip_time_calculator.rb,
lib/ Mongo/ 서버/connection_pool/generation_manager.rb

개요

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

이후:

  • 2.0.0

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

클래스: AppMetadata, Connection, ConnectionBase, ConnectionCommon, ConnectionPool, description, Monitor, PendingConnection, PushMonitor, RoundTripTimeCalculator

상수 요약 접기

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



69
70
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
# 파일 'lib/ Mongo/ 서버.rb', 69줄

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_calculator = 왕복 시간 계산기.신규
  @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
                           ))
    start_monitoring 하지 않는 한 _monitor == 거짓
  end
  @connected = true
  @pool_lock = 뮤텍스.신규
end

인스턴스 속성 세부 정보

#주소string (읽기 전용)

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

반환합니다:

  • (string)

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

이후:

  • 2.0.0



101
102
103
# 파일 'lib/ Mongo/ 서버.rb', 101줄

def 주소
  @address
end

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

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

반환합니다:

  • (클러스터)

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

이후:

  • 2.0.0



104
105
106
# 파일 'lib/ Mongo/ 서버.rb', 104줄

def cluster
  @cluster
end

#descriptionServer::Description (읽기 전용)

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

반환합니다:

이후:

  • 2.0.0



118
119
120
# 파일 'lib/ Mongo/ 서버.rb', 118줄

def description
  @description
end

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

모니터 서버 모니터 반환합니다. nil은 서버 monitoring_io: false 옵션으로 생성된 경우입니다.

반환합니다:

  • (nil | 모니터)

    모니터 서버 모니터. nil은 서버 monitoring_io: false 옵션으로 생성된 경우입니다.

이후:

  • 2.0.0



108
109
110
# 파일 'lib/ Mongo/ 서버.rb', 108줄

def 모니터
  모니터
end

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

모니터링을 반환합니다.

반환합니다:

이후:

  • 2.0.0



114
115
116
# 파일 'lib/ Mongo/ 서버.rb', 114줄

def 모니터링
  @monitoring
end

#options해시 (읽기 전용)

옵션 해시를 반환합니다.

반환합니다:

  • (해시)

    옵션 해시입니다.

이후:

  • 2.0.0



111
112
113
# 파일 'lib/ Mongo/ 서버.rb', 111줄

def 옵션
  @options
end

#round_trip_time_calculatorRoundTripTimeCalculator (읽기 전용)

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

반환값 왕복 시간 계산기 객체.

반환합니다:

이후:

  • 2.0.0



227
228
229
# 파일 'lib/ Mongo/ 서버.rb', 227줄

def round_trip_time_calculator
  @round_trip_time_calculator
end

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

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

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

반환합니다:

  • (세마포어)

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

이후:

  • 2.0.0



223
224
225
# 파일 'lib/ Mongo/ 서버.rb', 223줄

def scan_semapher
  @scan_semapher
end

인스턴스 메서드 세부 정보

#==(기타) ⇒ true, false

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

예시:

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

server == other

매개변수:

  • 기타 (객체)

    비교할 객체입니다.

반환합니다:

  • (true, false)

    서버가 동일한 경우.

이후:

  • 2.0.0



239
240
241
242
243
# 파일 'lib/ Mongo/ 서버.rb', 239줄

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



642
643
644
645
646
647
648
649
650
651
652
# 파일 'lib/ Mongo/ 서버.rb', 642줄

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



632
633
634
# 파일 'lib/ Mongo/ 서버.rb', 632줄

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

#닫기객체

이후:

  • 2.0.0



287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
# 파일 'lib/ Mongo/ 서버.rb', 287줄

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

  @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



175
176
177
178
179
# 파일 'lib/ Mongo/ 서버.rb', 175줄

def 압축기
  반환 하지 않는 한 모니터

  모니터.압축기
end

#connectable?true, false

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

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

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

예시:

서버를 연결할 수 있나요?

server.connectable?

반환합니다:

  • (true, false)

    서버 가 연결 가능한 경우.

이후:

  • 2.1.0



256
# 파일 'lib/ Mongo/ 서버.rb', 256줄

def 연결 가능?; end

#연결되었나요?true|false

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

서버 연결 여부입니다.

반환합니다:

  • (true|false)

    서버 연결 여부입니다.

이후:

  • 2.7.0



311
312
313
# 파일 'lib/ Mongo/ 서버.rb', 311줄

def 연결됨?
  @connected
end

#연결 해제!true

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

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

반환합니다:

  • (true)

    항상 사실입니다.

이후:

  • 2.0.0



270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
# 파일 'lib/ Mongo/ 서버.rb', 270줄

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

  @connected = 거짓

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

  true
end

#force_load_balancer?true | false

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

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

반환합니다:

  • (true | false)

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

이후:

  • 2.0.0



125
126
127
# 파일 'lib/ Mongo/ 서버.rb', 125줄

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

#handle_auth_failure!객체

인증 실패를 처리합니다.

예시:

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

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

반환합니다:

  • (객체)

    차단 실행 결과입니다.

다음을 발생시킵니다.

이후:

  • 2.3.0



510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
# 파일 'lib/ Mongo/ 서버.rb', 510줄

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



485
486
487
488
489
490
491
492
493
494
495
496
# 파일 'lib/ Mongo/ 서버.rb', 485줄

def handle_handShake_failure!
  yield
구출 mongo::오류::SocketError, mongo::오류::SocketTimeoutError => e
  하지 않는 한 e.레이블?('SystemOverloadedError')
    알 수 없음!(
      생성: e.생성,
      service_id: e.service_id,
      stop_push_monitor: true
    )
  end
  올리다
end

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

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

이후:

  • 2.0.0



153
154
155
# 파일 'lib/ Mongo/ 서버.rb', 153줄

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

#검사string

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

예시:

서버 검사를 받습니다.

server.inspect

반환합니다:

  • (string)

    좋은 검사 string 입니다.

이후:

  • 2.0.0



346
347
348
# 파일 'lib/ Mongo/ 서버.rb', 346줄

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

#last_scan시간 | nil

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

반환합니다:

  • (시간 | nil)

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

이후:

  • 2.4.0



133
134
135
136
137
138
139
# 파일 'lib/ Mongo/ 서버.rb', 133줄

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



144
145
146
147
148
149
150
# 파일 'lib/ Mongo/ 서버.rb', 144줄

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



443
444
445
446
447
# 파일 'lib/ Mongo/ 서버.rb', 443줄

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



655
656
657
# 파일 'lib/ Mongo/ 서버.rb', 655줄

def Next_connection_id
  @connection_id_gen.Next_id
end

#Mongo::Server::ConnectionPool

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

예시:

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

server.pool

반환합니다:

다음을 발생시킵니다.

이후:

  • 2.0.0



408
409
410
411
412
413
414
415
416
417
# 파일 'lib/ Mongo/ 서버.rb', 408줄

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

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

#Pool_internalServer::ConnectionPool | nil

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

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

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

반환합니다:

이후:

  • 2.0.0



427
428
429
430
431
# 파일 'lib/ Mongo/ 서버.rb', 427줄

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

#publish_opening_event객체

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

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

이후:

  • 2.0.0



331
332
333
334
335
336
# 파일 'lib/ Mongo/ 서버.rb', 331줄

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

#다시 연결하세요!true

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

예시:

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

server.reconnect!

반환합니다:

  • (true)

    항상 사실입니다.

이후:

  • 2.1.0



457
458
459
460
# 파일 'lib/ Mongo/ 서버.rb', 457줄

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

#retry_reads?부울

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

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

반환합니다:

  • (부울)

이후:

  • 2.0.0



529
530
531
# 파일 'lib/ Mongo/ 서버.rb', 529줄

def retry_reads?
  !!logical_session_timeout
end

#retry_writes?true, false

참고:

재시도 가능 쓰기는 샤딩된 클러스터 또는 복제본 세트에서만 사용할 수 있습니다.

참고:

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

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

예시:

쓰기가 다시 시도됩니다.

server.retry_writes?

반환합니다:

  • (true, false)

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

이후:

  • 2.5.0



549
550
551
# 파일 'lib/ Mongo/ 서버.rb', 549줄

def retry_writes?
  !!((logical_session_timeout && !독립형?) || load_balancer?)
end

#start_monitoring객체

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

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

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

이후:

  • 2.0.0



321
322
323
324
325
326
# 파일 'lib/ Mongo/ 서버.rb', 321줄

def start_monitoring
  publish_opening_event
  반환 하지 않는 한 옵션[:monitoring_io] != 거짓

  모니터.실행!
end

#statusString

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

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

반환합니다:

  • (string)

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

이후:

  • 2.0.0



353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
# 파일 'lib/ Mongo/ 서버.rb', 353줄

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

#요약객체

참고:

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

이후:

  • 2.7.0



383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
# 파일 'lib/ Mongo/ 서버.rb', 383줄

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

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

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

  주소_비트 = 만약 주소
                  "#{주소.호스팅하다}:#{주소.포트}"
                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부터 전송됩니다.



577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
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
# 파일 'lib/ Mongo/ 서버.rb', 577줄

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

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

  # 참고: 풀이 nil이면 종료되므로 여기서는 세이프 탐색을 사용할 수 없습니다.
  # up이 Integer < nil을 평가하려고 시도하는 것은 유효하지 않습니다.
  반환 만약 옵션[:generation] &&  && 옵션[:generation] < .생성

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

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

  # SDAM 흐름은 제자리에서 없이 서버 의 설명을 업데이트 합니다.
  # 변형을 처리하고 필요에 따라 SDAM 전환을 호출합니다.
  config = {}
  config['serviceId'] = 옵션[:service_id] 만약 옵션[:service_id]
  config['topologyVersion'] = 옵션[:topology_version] 만약 옵션[:topology_version]
  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



622
623
624
625
626
# 파일 'lib/ Mongo/ 서버.rb', 622줄

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

#update_last_scanObject

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

이후:

  • 2.0.0



660
661
662
663
# 파일 'lib/ Mongo/ 서버.rb', 660줄

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

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

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

예시:

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

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

반환합니다:

  • (객체)

    차단 실행 결과입니다.

이후:

  • 2.3.0



473
474
475
476
477
478
479
# 파일 'lib/ Mongo/ 서버.rb', 473줄

def with_connection(connection_global_id: nil, 컨텍스트: nil, &차단)
  .with_connection(
    connection_global_id: connection_global_id,
    컨텍스트: 컨텍스트,
    &차단
  )
end