Classificação: Mongo::Servidor

Herda:
Objeto
  • Objeto
mostrar tudo
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.

Desde:

  • 2.0.0

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.

Desde:

  • 2.4.3

10.congelar

Constantes incluídas do Loggable

Loggable::Prefix

Recolhimento do Resumo do atributo de instância

Atributos incluídos do Evento::editor

#event_listeners

Recolhimento do Resumo do método de instância

Métodos incluídos do Event::publisher

#publish

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.

Observação:

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.

Exemplos:

Inicialize o servidor.

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

Parâmetros:

  • endereço (Endereço)

    O endereço host:port ao qual se conectar.

  • cluster (Cluster)

    O cluster ao qual o servidor pertence.

  • Monitoramento (Monitoramento)

    O monitoramento.

  • event_listeners (Evento::Listeners)

    Os ouvintes do evento.

  • opções (Hash) (padrão para: {})

    As opções do servidor .

Hash de opções (opções):

  • :monitor (Booleano)

    Somente para uso interno do driver: se deve monitorar o servidor após instancia-lo.

  • :monitoring_io (verdadeiro, falso)

    Somente para uso interno do driver. Defina como falso para evitar que a E/S relacionada ao SDAM seja feita por este servidor. Observação: definir essa opção como falso tornará o servidor não funcional. Destina-se ao uso em testes que invocam manualmente transições de estado SDAM.

  • :populator_io (verdadeiro, falso)

    Somente para uso interno do driver. Defina como false para evitar que os threads de preenchimento sejam criados e iniciados no pool de conexões do servidor. Destina-se ao uso em testes que também desativam o monitoring_io, a menos que o populator seja explicitamente necessário. Se monitoring_io estiver desativado, mas o populator_io estiver ativado, o populator precisará ser fechado manualmente no final do teste, pois um cluster sem monitoramento é considerado não conectado e, portanto, não limpará os threads do populator do pool de conexões no fechamento.

  • :load_balancer (verdadeiro | falso)

    Se este servidor é um balanceador de carga .

  • :connect (string)

    O modo de conexão do cliente .

Desde:

  • 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
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 71

def inicializar(endereço, cluster, Monitoramento, event_listeners, opções = {})
  @address = endereço
  @cluster = cluster
  @monitoring = Monitoramento
  opções = opções.dup
  _monitor = opções.excluir(:monitor)
  @opções = 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 opções[:monitoring_io] == false
    @monitor = Monitorar.Novo(auto, event_listeners, Monitoramento,
      opções.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çostring (somente leitura)

Retorna o endereço configurado para o servidor.

Retorna:

  • (string)

    O endereço configurado para o servidor.

Desde:

  • 2.0.0



106
107
108
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 106

def endereço
  @address
end

#clusterCluster (somente leitura)

Retorna cluster O cluster de servidor .

Retorna:

  • (Cluster)

    cluster O cluster do servidor .

Desde:

  • 2.0.0



109
110
111
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 109

def cluster
  @cluster
end

#descriçãoServidor::Descrição (somente leitura)

Retorna descrição A descrição do servidor que o monitor atualiza.

Retorna:

Desde:

  • 2.0.0



123
124
125
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 123

def Descrição
  @description
end

#monitornulo | Monitor (somente leitura)

Monitor de retorno O monitor do servidor. nil se o serverr foi criado com monitoring_io: false opção.

Retorna:

  • (nil | Monitor)

    monitorar O monitor do servidor. nil se o serverr foi criado com monitoring_io: false opção.

Desde:

  • 2.0.0



113
114
115
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 113

def monitorar
  @monitor
end

#MonitoringMonitoramento (somente leitura)

Monitoramento de retornos O monitoramento.

Retorna:

Desde:

  • 2.0.0



119
120
121
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 119

def Monitoramento
  @monitoring
end

#opçõesHash (somente leitura)

Retorna o hash de opções.

Retorna:

  • (Hash)

    O hash de opções.

Desde:

  • 2.0.0



116
117
118
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 116

def opções
  @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.

Retorna:

Desde:

  • 2.0.0



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.

Retorna:

  • (Semáforo)

    Semáforo para sinalizar a solicitação de uma verificação imediata desse servidor por seu monitor, se houver um em execução.

Desde:

  • 2.0.0



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?

Exemplos:

O servidor é igual ao outro?

server == other

Parâmetros:

  • Outro (Objeto)

    O objeto com o qual comparar.

Retorna:

  • (verdadeiro, falso)

    Se os servidores forem iguais.

Desde:

  • 2.0.0



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.

Parâmetros:

  • :service_id (Objeto)

    Feche conexões apenas com a ID de serviço especificada.

  • :interrupt_in_use_connections (verdadeiro | falso)

    Se as conexões limpas também devem ou não ser interrompidas.

Desde:

  • 2.0.0



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.

Desde:

  • 2.0.0



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 ➤

Desde:

  • 2.0.0



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

#compressorString | nil

Obsoleto.
Observação:

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.

Retorna:

  • (string | nil)

    O compressor negociável.

Desde:

  • 2.0.0



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

Obsoleto.

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.

Exemplos:

O servidor é conectável?

server.connectable?

Retorna:

  • (verdadeiro, falso)

    Se o servidor estiver conectável.

Desde:

  • 2.1.0



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.

Retorna:

  • (true|false)

    Se o servidor está conectado.

Desde:

  • 2.7.0



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.

Retorna:

  • (verdadeiro)

    Sempre verdadeiro.

Desde:

  • 2.0.0



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.

Retorna:

  • (verdadeiro | falso)

    Se este servidor é forçado a ser um balancer de carga.

Desde:

  • 2.0.0



130
131
132
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 130

def force_load_balancer?
  opções[:connect] == :load_balanced
end

#handle_auth_failure!Objeto

Lidar com falha de autenticação.

Exemplos:

Lidar com possível falha de autenticação.

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

Retorna:

  • (Objeto)

    O resultado da execução do bloco.

Aumenta:

Desde:

  • 2.3.0



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.

Desde:

  • 2.7.0



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_frequencyObject Também conhecido como: heartbeat_frequency_seconds

Obsoleto.

Desde:

  • 2.0.0



159
160
161
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 159

def heartbeat_frequency
  cluster.heartbeat_interval
end

#inspecionarstring

Obtenha uma inspeção de servidor bem impressa.

Exemplos:

Obtenha a inspeção do servidor .

server.inspect

Retorna:

  • (string)

    A string de inspeção legal.

Desde:

  • 2.0.0



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.

Retorna:

  • (Tempo | nulo)

    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.

Desde:

  • 2.4.0



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.

Retorna:

  • (Flutuante | nulo)

    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.

Desde:

  • 2.0.0



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.

Exemplos:

As tags fornecidas são um subconjunto das tags do servidor.

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

Parâmetros:

  • tag_set (Hash)

    O conjunto de tags para comparar com as tags do servidor.

Retorna:

  • (verdadeiro, falso)

    Se as tags fornecidas forem um subconjunto das tags do servidor.

Desde:

  • 2.0.0



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|
    tags[k] && tags[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.

Desde:

  • 2.0.0



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

#poolMongo::Server::ConnectionPool

Obtenha o pool de conexões deste servidor.

Exemplos:

Obtenha o pool de conexões do servidor.

server.pool

Retorna:

Desde:

  • 2.0.0



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? ? opções : opções.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.

Retorna:

Desde:

  • 2.0.0



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 .

Desde:

  • 2.0.0



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 .

Exemplos:

Reinicie o monitor do servidor .

server.reconnect!

Retorna:

  • (verdadeiro)

    Sempre verdadeiro.

Desde:

  • 2.1.0



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

def reconecte-se!
  se opções[: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.

Retorna:

  • (Booleano)

Desde:

  • 2.0.0



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

Observação:

As retryable writes só estão disponíveis nas versões de servidor 3.6+ e com clusters fragmentados ou conjuntos de réplicas.

Observação:

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.

Exemplos:

As gravações serão repetidas.

server.retry_writes?

Retorna:

  • (verdadeiro, falso)

    As gravações serão repetidas.

Desde:

  • 2.5.0



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.

Desde:

  • 2.0.0



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 opções[:monitoring_io] != false
    monitorar.corra!
  end
end

#statusString

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).

Retorna:

  • (string)

    string representando o status do servidor (por exemplo PRIMARY).

Desde:

  • 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
# 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

#resumoObjeto

Observação:

Este método é experimental e sujeito a alterações.

Desde:

  • 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
# 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.

Parâmetros:

  • opções (Hash) (padrão para: {})

    Opções.

Hash de opções (opções):

  • :generação (Inteiro)

    Geração do pool de conexões da conexão que foi usada para a operação que produz o erro.

  • :keeper_connection_pool (verdadeiro | falso)

    Normalmente, quando a nova descrição do servidor é desconhecida, o pool de conexões no respectivo servidor é limpo. Defina esta opção como verdadeiro para manter o pool de conexões existente (necessário ao lidar com erros não mestres em 4.2+ servidores).

  • :topology_version (TopologyVersion)

    Versão de topologia da resposta de erro que está fazendo com que o servidor seja marcado como desconhecido.

  • :stop_push_monitor (verdadeiro | falso)

    Se deve parar o PushMonitor associado ao servidor, se houver.

  • :service_id (Objeto)

    Descartar o estado apenas para a ID de serviço especificada.

Desde:

  • 2.4.0, Os eventos SDAM são enviados a partir da versão 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
# File 'build/ruby-driver-v2.19/lib/mongo/server.rb', linha 592

def desconhecido!(opções = {})
  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 = opções[:service_id]
      pool&.desconecte-se!(service_id: service_id)
    end
    Método
  end

  se opções[:generação] && opções[:generação] < pool&.geração
    Método
  end

  se opções[:topology_version] && Descrição.topology_version &&
    !opções[:topology_version].gt?(Descrição.topology_version)
  então
    Método
  end

  se opções[: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 opções[:service_id]
    config['serviceId'] = opções[:service_id]
  end
  se opções[:topology_version]
    config['topologyVersion'] = opções[:topology_version]
  end
  new_description = Descrição.Novo(endereço, config,
    load_balancer: load_balancer?,
    force_load_balancer: opções[:connect] == :load_balanced,
  )
  cluster.run_sdam_flow(Descrição, new_description, opções)
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.

Desde:

  • 2.0.0



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_scanObject

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.

Desde:

  • 2.0.0



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.

Exemplos:

Envie uma mensagem com a conexão.

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

Retorna:

  • (Objeto)

    O resultado da execução do bloco.

Desde:

  • 2.3.0



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