클래스: Mongo::Cluster::Topology::Base

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음을 포함합니다.
로깅 가능, 모니터링::게시 가능
다음에 정의됨:
lib/ Mongo/ 클러스터/ 토폴로지/base.rb

개요

모든 토폴로지에 공통적인 동작을 정의합니다.

이후:

  • 2.7.0

직접 알려진 하위 클래스

LoadBalanced, ReplicaSetNoPrimary, Sharded, Single, Unknown

상수 요약

Loggable에서 포함된 상수

Loggable::prefix

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

Monitoring::Publishable에 포함된 메서드

#publish_cmap_event, #publish_event, #publish_s담_event

Loggable에 포함된 메서드

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

생성자 세부 정보

#initialize(options, monitoring, cluster) ⇒ Base

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

옵션을 사용하여 토폴로지 를 초기화합니다.

매개변수:

옵션 해시(options):

  • :replica_set (기호)

    연결할 복제본 세트의 이름입니다. 클러스터에서 이름을 검색하기 위해 비워 둘 수 있습니다(nil 또는 빈 string 허용). 주소가 다른 복제본 세트에 속한 경우 어떤 복제본 세트가 선택되었는지 보장되지 않습니다. 특히 드라이버는 다른 복제본 세트에 속하는 프라이머리보다 먼저 응답을 반환하는 경우 세컨더리의 복제본 세트 이름을 선택할 수 있습니다. 이 옵션은 복제본 세트 토폴로지를 인스턴스화할 때만 지정할 수 있습니다.

  • :max_election_id (BSON::ObjectId)

    SDAM 사양에 따른 최대 투표 ID입니다. 이 옵션은 복제본 세트 토폴로지 를 인스턴스화할 때만 지정할 수 있습니다.

  • :max_set_version (정수)

    SDAM 사양에 따른 최대 세트 버전입니다. 이 옵션은 복제본 세트 토폴로지를 인스턴스화할 때만 지정할 수 있습니다.

이후:

  • 2.7.0



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
87
88
89
90
91
92
93
94
95
96
97
98
99
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 54

def 초기화(옵션, 모니터링, cluster)
  옵션 = validate_options(옵션, cluster)

  @options = 옵션
  @monitoring = 모니터링
  @cluster = cluster
  # 서버 설명 목록은 다음 시점에 고정됩니다.
  # 토폴로지 생성. 나중에 서버 설명이 변경되면
  # 새 토폴로지 인스턴스 를 만들어야 합니다.
  @server_descriptions = {}
  cluster.server_list. do |서버|
    @server_descriptions[서버.주소.to_s] = 서버.description
  end

  만약 is_a?(로드 밸런싱)
    @compatible = true
  other
    시작
      server_descriptions. do |_address_str, desc|
        desc.기능.check_driver_support! 하지 않는 한 desc.알 수 없음?
      end
    구출 오류::지원되지 않는 기능 => e
      @compatible = 거짓
      @compatibility_error = e
    other
      @compatible = true
    end
  end

  @ Have_data_bearing_servers = 거짓
  @logical_session_timeout = server_descriptions.주입(nil) do |min, (_address_str, desc)|
    # LST는 데이터 보유 서버에서만 읽습니다.
    만약 desc.data_bearing?
      @ Have_data_bearing_servers = true
      휴식 하지 않는 한 타임아웃 = desc.logical_session_timeout

      [ 타임아웃, min || 타임아웃 ].min
    other
      min
    end
  end

  반환 하지 않는 한 mongo::Lint.활성화?

  동결
end

인스턴스 속성 세부 정보

#compatibility_error예외 (읽기 전용)

반환값 compatibility_error 토폴로지가 드라이버와 호환되지 않는 경우 비호환성에 관한 정보가 포함된 예외가 발생합니다. 토폴로지가 드라이버와 호환되는 경우 nil입니다.

반환합니다:

  • (Exception)

    compatibility_error 토폴로지가 드라이버와 호환되지 않는 경우 비호환성에 관한 정보가 포함된 예외입니다. 토폴로지가 드라이버와 호환되는 경우 nil입니다.

이후:

  • 2.7.0



148
149
150
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 148

def 호환성 오류
  @compatibility_error
end

#logical_session_timeoutInteger? (읽기 전용)

참고:

초 단위로 반환되는 운전자 의 다른 시간과 달리 값은 분 단위입니다.

논리적 세션 시간 초과 값(분)입니다.

반환합니다:

  • (정수, nil)

    논리적 세션 시간 초과입니다.

이후:

  • 2.7.0



158
159
160
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 158

def logical_session_timeout
  @logical_session_timeout
end

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

모니터링 모니터링을 반환합니다.

반환합니다:

이후:

  • 2.7.0



115
116
117
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 115

def 모니터링
  @monitoring
end

#options해시 (읽기 전용)

반환값 options options.

반환합니다:

  • (해시)

    options 옵션입니다.

이후:

  • 2.7.0



102
103
104
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 102

def 옵션
  @options
end

#server_descriptions해시 (읽기 전용)

서버 설명에 대한 주소 문자열 맵을 클러스터의 각 서버에 대해 하나씩 server_descriptions를 반환합니다.

반환합니다:

  • (해시)

    server_descriptions 클러스터의 각 서버에 하나씩 주소 문자열을 서버 설명에 매핑합니다.

이후:

  • 2.7.0



133
134
135
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 133

def server_descriptions
  @server_descriptions
end

인스턴스 메서드 세부 정보

주소 # 개 ⇒ Array<String>

주소를 반환합니다. 서버 주소입니다.

반환합니다:

  • (Array<String>)

    주소 MongoDB Server 주소.

이후:

  • 2.7.0



110
111
112
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 110

def 주소
  cluster.주소.map(&:seed)
end

#호환되나요?true|false

반환값 호환 가능 토폴로지가 드라이버와 호환되는지 여부를 반환합니다.

반환합니다:

  • (true|false)

    호환 가능한 토폴로지 가 운전자 와 호환되는지 여부입니다.

이후:

  • 2.7.0



139
140
141
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 139

def 호환되나요?
  @compatible
end

#data_bearing_servers?true | false

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

반환값 have_data_bearing_servers 논리적 세션 시간 초과 계산을 위해 토폴로지 에 데이터 보유 서버가 있는지 여부를 반환합니다.

반환합니다:

  • (true | false)

    have_data_bearing_servers 논리적 세션 시간 초과 계산을 위해 토폴로지 에 데이터 보유 서버가 있는지 여부입니다.

이후:

  • 2.7.0



165
166
167
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 165

def data_bearing_servers?
  @ Have_data_bearing_servers
end

#max_election_idBSON::ObjectId

프라이머리에서 보고한 것 중 가장 큰 ElectionId입니다. nil일 수 있습니다.

반환합니다:

  • (BSON::ObjectId)

    투표 ID입니다.

이후:

  • 2.7.0



175
176
177
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 175

def max_election_id
  옵션[:max_election_id]
end

#max_set_versionInteger

프라이머리가 보고한 것 중 가장 큰 setVersion입니다. nil일 수 있습니다.

반환합니다:

  • (정수)

    설정하다 버전입니다.

이후:

  • 2.7.0



185
186
187
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 185

def max_set_version
  옵션[:max_set_version]
end

#new_max_election_id(설명) ⇒ 객체

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

이후:

  • 2.7.0



190
191
192
193
194
195
196
197
198
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 190

def new_max_election_id(description)
  만약 description.Election_id &&
     (max_election_id.nil? ||
         description.Election_id > max_election_id)
    description.Election_id
  other
    max_election_id
  end
end

#new_max_set_version(설명) ⇒ 객체

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

이후:

  • 2.7.0



201
202
203
204
205
206
207
208
209
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 201

def new_max_set_version(description)
  만약 description.set_version &&
     (max_set_version.nil? ||
         description.set_version > max_set_version)
    description.set_version
  other
    max_set_version
  end
end

#replica_set_namestring

이 토폴로지에 대해 구성된 복제본 세트 이름을 가져옵니다.

예시:

복제본 세트 이름을 가져옵니다.

topology.replica_set_name

반환합니다:

  • (string)

    구성된 복제본 세트의 이름입니다.

이후:

  • 2.0.0



125
126
127
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 125

def replica_set_name
  옵션[:replica_set_name]
end

#server_hosts_match_any?(patterns) ⇒ true | false

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

각 서버 주소 패턴 목록과 비교합니다.

매개변수:

  • 패턴 (Array<String>)

    각 서버 비교할 URL 접미사.

반환합니다:

  • (true | false)

    주소 중 하나라도 패턴과 일치하는지 여부.

이후:

  • 2.7.0



220
221
222
223
224
225
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지/base.rb', 줄 220

def server_hosts_match_any?(패턴)
  server_descriptions.어떤? do |addr_spec, _desc|
    addr, _port = addr_spec.split(':')
    패턴.어떤? { |패턴| addr.end_with?(패턴) }
  end
end