Classificação: Mongo::Servidor
- Herda:
-
Objeto
- Objeto
- Mongo::Servidor
- Estendido por:
- Encaminhável
- Inclui:
- Evento::editor, monitoramento::publicável
- Definido em:
- 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,
build/ruby-driver-v2.19/lib/mongo/server/app_metadata.rb,
build/ruby-driver-v2.19/lib/mongo/server/push_monitor.rb,
build/ruby-driver-v2.19/lib/mongo/server/connection_base.rb,
build/ruby-driver-v2.19/lib/mongo/server/connection_pool.rb,
build/ruby-driver-v2.19/lib/mongo/server/connection_common.rb,
build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb,
build/ruby-driver-v2.19/lib/mongo/server/pending_connection.rb,
build/ruby-driver-v2.19/lib/mongo/server/description/features.rb,
build/ruby-driver-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,
build/ruby-driver-v2.19/lib/mongo/server/push_monitor/connection.rb,
build/ruby-driver-v2.19/lib/mongo/server/app_metadata/environment.rb,
build/ruby-driver-v2.19/lib/mongo/server/round_trip_time_averager.rb,
build/ruby-driver-v2.19/lib/mongo/server/connection_pool/populator.rb,
build/ruby-driver-v2.19/lib/mongo/server/description/load_balancer.rb,
build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb
Visão geral
Representa um único servidor no lado do servidor que pode ser autônomo, parte de um conjunto de réplicas ou um mongos.
Definido sob namespace
Classes: AppMeted _ _ _ _ _ _ _ _ _
Colapsode resumo constante
- CONNECT_TIMEOUT =
O tempo padrão em segundos para atingir o tempo limite de uma tentativa de conexão.
10.congelar
Constantes incluídas do Loggable
Recolhimento do Resumo do atributo de instância
-
#endereço ➤ string
Somente leitura
O endereço configurado para o servidor.
-
#cluster ➤cluster
Somente leitura
Cluster O cluster de servidor .
-
#descrição ➤ Servidor::Descrição
Somente leitura
Descrição A descrição do servidor que o monitor atualiza.
-
#monitor ⇒ nil | Monitor
Somente leitura
Monitorar O monitor do servidor.
-
#monitoramento ➤ Monitoramento
Somente leitura
Monitoramento O monitoramento.
-
#opções ➤ Hash
Somente leitura
O hash de opções.
-
#round_tri
Somente leitura
privado
objeto médio de tempo de ida e volta.
-
#varredura_semafore ➤ Semafore
Somente leitura
privado
Semáforo para sinalizar a solicitação de uma verificação imediata desse servidor por seu monitor, se houver um em execução.
Atributos incluídos do Evento::editor
Recolhimento do Resumo do método de instância
-
#==(outro) ➤ verdadeiro, falso
Este servidor é igual a outro?
- #clear_connection_pool(service_id: nil, interrupt_in_use_connections: false) ➤ Objeto privado
-
#clear_description ➤ Objeto
privado
Limpe a descrição do servidor para que ele seja considerado desconhecido e possa ser desconectado com segurança.
- # objetopróximo ➤
- #compressor ➤ string | nada obsoleto Obsoleto.
-
#conectável? ➤ verdadeiro, falso
obsoleto
Obsoleto.
Não é mais necessário com a especificação de seleção de servidor MongoDB.
-
#conectado? ➤ true|false
privado
Se o servidor está conectado.
-
#desconectar! ➤ verdadeiro
Desconecte o driver deste servidor.
-
#force_load_balancer? ➤ verdadeiro | false
privado
Retorna se este servidor é forçado a ser um balancer de carga.
-
#handle_auth_failure! ➤ Objeto
Lidar com falha de autenticação.
-
#handle_handshake_failure! ➤ Objeto
privado
Lidar com falha de handshake.
- #heartbeat_frequency ➤ Object (também: # heartbeat_frequency_seconds) obsoleto Obsoleto.
-
.
construtor
privado
Crie uma instância de um novo objeto de servidor .
-
#inspecionar ➤ string
Obtenha uma inspeção de servidor bem impressa.
-
#last_scan ➤ Hora | nada
Last_scan A hora em que a última verificação do servidor foi concluída, ou nulo se o servidor ainda não tiver sido verificado.
-
#last_scan_monotime ➤ Flutuante | nada
privado
Last_scan_monotime A hora monotônica em que a última verificação do servidor foi concluída ou nulo se o servidor ainda não tiver sido verificado.
-
#matches_tag_set?(tag_set) ⇒ true, false
Determine se as tags fornecidas são um subconjunto das tags do servidor.
- #próximo_connection_id ➤ Objeto privado
-
#pool ➤ Mongo::Server::ConnectionPool
Obtenha o pool de conexões deste servidor.
-
#pool_internal ➤ Server::ConnectionPool | nada
privado
Método de driver interno para recuperar o pool de conexões deste servidor.
-
#publish_opening_event ➤ Objeto
privado
Publica o evento de abertura do servidor .
-
#reconectar! ➤ verdadeiro
Reinicie o monitor do servidor .
-
#retry_reads? ➤ Booleano
privado
Se o servidor permite novas tentativas de leitura moderna.
-
#retry_writes? ➤ verdadeiro, falso
As gravações enviadas a este servidor serão repetidas.
-
#start_monitoring ➤ Objeto
privado
Comece a monitorar o servidor.
-
#status ➤ string
privado
string representando o status do servidor (por exemplo PRIMARY).
- #resumo ➤ Objeto
-
#desconhecido!(opções = {}) ➤ Objeto
Marca o servidor como desconhecido e publica o evento SDAM associado (descrição do servidor alterada).
- #update_description(description) ➤ Objeto privado
- #update_last_scan ⇒ Object privado
-
#with_connection(connection_global_id: nil, &block) ➤ Objeto
Execute um bloco de código com uma conexão, que é check-out do pool do servidor e, em seguida, check-in novamente.
Métodos incluídos do Event::publisher
Métodos incluídos do monitoramento::publicável
#publish_cmap_event, #publish_event, #publish_sdam_event
Métodos incluídos no Loggable
#log_debug, #log_error, #log_fatal, #log_info, #log_WARN, #logger
Detalhes do construtor
. _
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
O servidor nunca deve ser instanciado diretamente fora de um cluster.
Crie uma instância de um novo objeto de servidor . Iniciará a atualização em segundo plano e assinará os eventos apropriados.
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 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 71 def inicializar(endereço, cluster, Monitoramento, event_listeners, = {}) @address = endereço @cluster = cluster @monitoring = Monitoramento = .dup _monitor = .excluir(:monitor) @opções = .congelar @event_listeners = event_listeners @connection_id_gen = classe.Novo fazer Incluir id end @scan_semafore = Semahora Distinto.Novo @round_trip_time_averager = OpenTripTimeAverager.Novo @description = Descrição.Novo(endereço, {}, load_balancer: !!@opções[:load_balancer], force_load_balancer: force_load_balancer?, ) @last_scan = nada @last_scan_monotime = nada a menos que [:monitoring_io] == false @monitor = Monitorar.Novo(auto, event_listeners, Monitoramento, .mesclar( app_metadata: cluster., push_monitor_app_metadata: cluster., heartbeat_interval: cluster.heartbeat_interval, )) a menos que _monitor == false start_monitoring end end @connected = true @pool_lock = Mutex.Novo end |
Detalhes do atributo da instância
#endereço ➤ string (somente leitura)
Retorna o endereço configurado para o servidor.
106 107 108 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 106 def endereço @address end |
#cluster ➤ Cluster (somente leitura)
Retorna cluster O cluster de servidor .
109 110 111 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 109 def cluster @cluster end |
#descrição ➤ Servidor::Descrição (somente leitura)
Retorna descrição A descrição do servidor que o monitor atualiza.
123 124 125 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 123 def Descrição @description end |
#monitor ➤ nulo | Monitor (somente leitura)
Monitor de retorno O monitor do servidor. nil se o serverr foi criado com monitoring_io: false opção.
113 114 115 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 113 def monitorar @monitor end |
#Monitoring ➤ Monitoramento (somente leitura)
Monitoramento de retornos O monitoramento.
119 120 121 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 119 def Monitoramento @monitoring end |
#opções ➤ Hash (somente leitura)
Retorna o hash de opções.
116 117 118 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 116 def @opções end |
#round_trip_time_averager ➤RoundTripTimeAverager (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o objeto médio de tempo de ida e volta.
233 234 235 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 233 def round_trip_time_averager @round_trip_time_averager end |
#varredura_semafor ➤ Semafor(somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o Semáforo para sinalizar a solicitação de uma verificação imediata deste servidor por seu monitor, se houver um em execução.
229 230 231 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 229 def varredura_semafore @scan_semafore end |
Detalhes do método de instância
#==(outro) ➤ true, false
Esse servidor é igual a outro?
245 246 247 248 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 245 def ==(Outro) Método false a menos que Outro.is_a?(Servidor) endereço == Outro.endereço end |
#clear_connection_pool(service_id: nil, interrupt_in_use_connections: false) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
667 668 669 670 671 672 673 674 675 676 677 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 667 def clear_connection_pool(service_id: nada, interrupt_in_use_connections: false) @pool_lock.sincronizar fazer # Um servidor sendo marcado como desconhecido após ser fechado é teoricamente # incorreto, mas não altera significativamente nenhum estado. # Porque historicamente o driver permitia que os servidores fossem marcados # desconhecido a qualquer momento, continue fazendo isso mesmo que o pool esteja fechado. se @pool && !@pool.fechado? @pool.desconecte-se!(service_id: service_id, interrupt_in_use_connections: interrupt_in_use_connections) end end end |
#clear_description ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Limpe a descrição do servidor para que ele seja considerado desconhecido e possa ser desconectado com segurança.
657 658 659 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 657 def clear_description @description = mongo::Servidor::Descrição.Novo(endereço, {}) end |
# objeto próximo ➤
294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 294 def Fechar se monitorar monitorar.pare! end @connected = false _pool = nada @pool_lock.sincronizar fazer _pool, @pool = @pool, nada end # TODO: altere isso para _pool.close em RUBY-3174. # Limpe o pool. Se o servidor não for desconhecido, o # pool ficará pronto. Pare o thread preenchedor de background. _pool&.Fechar(keep_ready: true) nada end |
#compressor ⇒ String | nil
A compressão é negociar para cada conexão separadamente.
O compressor negociar pelo monitor do servidor , se houver.
Este atributo é nulo se nenhuma verificação de servidor ainda não tiver sido concluída e se nenhuma compactação tiver sido negada.
181 182 183 184 185 186 187 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 181 def compressor, compressor se monitorar monitorar.compressor, compressor mais nada end end |
#conectável? ➤ true, false
Não é mais necessário com a especificação de seleção de servidor MongoDB.
Determine se uma conexão com o servidor pode ser estabelecida e se as mensagens podem ser enviadas para ele.
261 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 261 def conectável?; end |
#conectado? ➤ true|false
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Se o servidor está conectado.
320 321 322 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 320 def conectado? @connected end |
#desconectar! ➤ verdadeiro
Desconecte o driver deste servidor.
Desconecta todas as conexões ociosas para este servidor em seu pool de conexões, se houver. Interrompe o preenchimento do pool de conexões, se ele estiver em execução. Não fecha imediatamente as conexões que estão atualmente com check-out (ou seja, em uso) - essas conexões serão fechadas quando forem retornadas aos seus respectivos pools de conexões. Pare o monitor de background do servidor.
275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 275 def desconecte-se! se monitorar monitorar.pare! end @connected = false # A especificação atual do CMAP exige que um pool seja praticamente inutilizável # se o servidor for desconhecido (ou, portanto, desconectado). # No entanto, quaisquer operações pendentes devem continuar até a conclusão, # e suas conexões precisam ser verificadas no pool para serem # desmoronado. Devido a esse requisito de limpeza, não podemos apenas # feche o pool e defina-o como nulo aqui, para ser recriado na próxima # vez que o servidor é descoberto. pool_internal&.Limpar true end |
#force_load_balancer? ➤ verdadeiro | false
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna se este servidor é forçado a ser um balancer de carga.
130 131 132 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 130 def force_load_balancer? [:connect] == :load_balanced end |
#handle_auth_failure! ➤ Objeto
Lidar com falha de autenticação.
524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 524 def handle_auth_failure! rendimento salvar mongo::Erro::SocketTimeoutError # possivelmente o cluster está lento, não desista dele aumentar salvar mongo::Erro::Erro de soquete, auth::Não autorizado => e # erro de rede sem tempo limite ou erro de autenticação, limpe o pool e marque o # topologia como desconhecida desconhecido!( geração: e.geração, service_id: e.service_id, stop_push_monitor: true, ) aumentar end |
#handle_handshake_failure! ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Lidar com falha de handshake.
501 502 503 504 505 506 507 508 509 510 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 501 def handle_handshake_failure! rendimento salvar mongo::Erro::Erro de soquete, mongo::Erro::SocketTimeoutError => e desconhecido!( geração: e.geração, service_id: e.service_id, stop_push_monitor: true, ) aumentar end |
#heartbeat_frequency ➤ Object Também conhecido como: heartbeat_frequency_seconds
159 160 161 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 159 def heartbeat_frequency cluster.heartbeat_interval end |
#inspecionar ➤ string
Obtenha uma inspeção de servidor bem impressa.
355 356 357 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 355 def inspecionar "#<Mongo::Server:0x#{object_id} endereço=#{endereço.host}:#{endereço.porta} #{status}>" end |
#last_scan ➤ Hora | nada
Retorna last_scan A hora em que a última verificação do servidor foi concluída ou nulo se o servidor ainda não tiver sido verificado.
138 139 140 141 142 143 144 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 138 def last_scan se Descrição && !Descrição.config.vazio? Descrição.last_update_time mais @last_scan end end |
#last_scan_monotime ➤ Flutuante | nada
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna last_scan_monotime A hora monotônica em que a última verificação do servidor foi concluída ou nulo se o servidor ainda não tiver sido verificado.
149 150 151 152 153 154 155 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 149 def last_scan_monotime se Descrição && !Descrição.config.vazio? Descrição.last_update_monotime mais @last_scan_monotime end end |
#matches_tag_set?(tag_set) ➤ true, false
Determine se as tags fornecidas são um subconjunto das tags do servidor.
461 462 463 464 465 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 461 def matches_tag_set?(tag_set) tag_set.keys.todos? fazer |k| [k] && [k] == tag_set[k] end end |
#próximo_connection_id ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
680 681 682 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 680 def Next_connection_id @connection_id_gen.Next_id end |
#pool ➤ Mongo::Server::ConnectionPool
Obtenha o pool de conexões deste servidor.
424 425 426 427 428 429 430 431 432 433 434 435 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 424 def pool se desconhecido? aumentar Erro::ServerNotUsable, endereço end @pool_lock.sincronizar fazer opciona = conectado? ? : .mesclar(populator_io: false) @pool ||= Pool de Conexões.Novo(auto, opciona).toque fazer |pool| pool.pronto end end end |
#pool_internal ➤ Server::ConnectionPool | nada
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Método de driver interno para recuperar o pool de conexões deste servidor.
Ao contrário de pool
, pool_internal
não criará um pool se um ainda não existir.
445 446 447 448 449 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 445 def pool_internal @pool_lock.sincronizar fazer @pool end end |
#publish_opening_event ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Publica o evento de abertura do servidor .
340 341 342 343 344 345 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 340 def publish_opening_event publish_sdam_event( Monitoramento::SERVER_OPENING, Monitoramento::Evento::ServerOpening.Novo(endereço, cluster.topologia) ) end |
#reconectar! ➤ verdadeiro
Reinicie o monitor do servidor .
475 476 477 478 479 480 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 475 def reconecte-se! se [:monitoring_io] != false monitorar.reinicie! end @connected = true end |
#retry_reads? ➤ Booleano
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Se o servidor permite novas tentativas de leitura moderna.
543 544 545 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 543 def retry_reads? !!(características.sessões_enabled? && logical_session_timeout) end |
#retry_writes? ➤ true, false
As retryable writes só estão disponíveis nas versões de servidor 3.6+ e com clusters fragmentados ou conjuntos de réplicas.
Algumas das condições neste método retornam automaticamente falso para topologias com balanceamento de carga. As condições neste método devem ser sempre verdadeiras, pois as topologias com balanceamento de carga só estão disponíveis no MongoDB 5.0+, e não para topologias autônomas. Portanto, podemos presumir que as gravações repetidas estão ativadas.
As gravações enviadas a este servidor serão repetidas.
564 565 566 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 564 def retry_writes? !!(características.sessões_enabled? && logical_session_timeout && !autônomo?) || load_balancer? end |
#start_monitoring ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Comece a monitorar o servidor.
Usado internamente pelo driver para adicionar um servidor a um cluster enquanto atrasa o monitoramento até que o servidor esteja no cluster.
330 331 332 333 334 335 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 330 def start_monitoring publish_opening_event se [:monitoring_io] != false monitorar.corra! end end |
#status ⇒ String
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna uma string que representa o status do servidor (por exemplo, PRIMARY).
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 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 362 def Status caso quando load_balancer? 'LB' quando primário? 'PRIMARY' quando secundário? 'SECUNDÁRIO' quando autônomo? 'STANDALONE' quando árbitro? 'ARBITER' quando ghost? 'GHOST' quando outro? 'OTHER' quando mongos? 'MONGOS' quando desconhecido? 'UNKNOWN' mais # Como o método resumo é frequentemente usado para depuração, não crie # uma exceção caso nenhum dos tipos esperados corresponda nada end end |
#resumo ➤ Objeto
Este método é experimental e sujeito a alterações.
393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 393 def Resumo Status = auto.Status || '' se replica_set_name Status += " replica_set=#{replica_set_name}" end a menos que monitorar&.executando? Status += " NO-MONITORING" end se @pool Status += " pool=#{@pool.resume}" end endereço_bit = se endereço "#{endereço.host}:#{endereço.porta}" mais 'nil' end "#<Endereço do servidor=#{endereço_bit} #{status}>" end |
#desconhecido!(opções = {}) ➤ Objeto
Marca o servidor como desconhecido e publica o evento SDAM associado (descrição do servidor alterada).
Se a geração for passada em opções, o servidor só será marcado como desconhecido se a geração passada não for mais antiga do que a geração atual do pool de conexões do servidor.
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 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 592 def desconhecido!( = {}) pool = pool_internal se load_balancer? # Quando o cliente está em topologia com balanceamento de carga, servidores (o e # somente que pode ser) começa como balanceador de carga e permanece como # balanceador de carga indefinidamente. Como tal, não está marcado como desconhecido. # # No entanto, este método também limpa o pool de conexões do servidor # quando o último é marcado como desconhecido e essa parte precisa acontecer # quando o servidor é um balancer de carga. # # É possível que um servidor do balancer de carga não tenha um ID de serviço, #, por exemplo , se ainda não houve nenhuma conexão bem-sucedida para # este servidor, mas o servidor ainda pode ser marcado como desconhecido se um # dessas conexões falharam no meio do caminho para o estabelecimento. se service_id = [:service_id] pool&.desconecte-se!(service_id: service_id) end Método end se [:generação] && [:generação] < pool&.geração Método end se [:topology_version] && Descrição.topology_version && ![:topology_version].gt?(Descrição.topology_version) então Método end se [:stop_push_monitor] monitorar&.stop_push_monitor! end # O fluxo SDAM atualizará a descrição no servidor sem no local # mutações e invoque transições SDAM conforme necessário. config = {} se [:service_id] config['serviceId'] = [:service_id] end se [:topology_version] config['topologyVersion'] = [:topology_version] end new_description = Descrição.Novo(endereço, config, load_balancer: load_balancer?, force_load_balancer: [:connect] == :load_balanced, ) cluster.run_sdam_flow(Descrição, new_description, ) end |
#update_description(description) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
645 646 647 648 649 650 651 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 645 def update_description(Descrição) pool = pool_internal se pool && !Descrição.desconhecido? pool.pronto end @description = Descrição end |
#update_last_scan ⇒ Object
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
685 686 687 688 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 685 def update_last_scan @last_scan = Hora.agora @last_scan_monotime = Utilidades.monotonic_time end |
#with_connection(connection_global_id: nil, &block) ➤ Objeto
Execute um bloco de código com uma conexão, que é check-out do pool do servidor e, em seguida, check-in novamente.
493 494 495 |
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 493 def with_connection(connection_global_id: nada, &noum: bloco ; verb: bloquear) pool.with_connection(connection_global_id: connection_global_id, &noum: bloco ; verb: bloquear) end |