123456789_123456789_123456789_123456789_123456789_

Module: Mongo::Monitoring::Publishable

Overview

Defines behavior for an object that can publish monitoring events.

Since:

  • 2.1.0

Constant Summary

::Mongo::Loggable - Included

PREFIX

Instance Attribute Summary

Instance Method Summary

Instance Attribute Details

#monitoringMonitoring (readonly)

Returns:

Since:

  • 2.1.0

[ GitHub ]

  
# File 'lib/mongo/monitoring/publishable.rb', line 28

attr_reader :monitoring

#monitoring?Boolean (readonly, private)

Since:

  • 2.1.0

[ GitHub ]

  
# File 'lib/mongo/monitoring/publishable.rb', line 121

def monitoring?
  options[:monitoring] != false
end

Instance Method Details

#command_completed(result, address, operation_id, payload, duration, started_event:, server_connection_id: nil, service_id: nil) (private)

Since:

  • 2.1.0

[ GitHub ]

  
# File 'lib/mongo/monitoring/publishable.rb', line 66

def command_completed(result, address, operation_id, payload, duration,
  started_event:, server_connection_id: nil, service_id: nil
)
  document = result ? (result.documents || []).first : nil
  if document && (document['ok'] && document['ok'] != 1 || document.key?('$err'))
    parser = Error::Parser.new(document)
    command_failed(document, address, operation_id,
      payload, parser.message, duration,
      started_event: started_event, server_connection_id: server_connection_id,
      service_id: service_id,
    )
  else
    command_succeeded(result, address, operation_id, payload, duration,
      started_event: started_event, server_connection_id: server_connection_id,
      service_id: service_id,
    )
  end
end

#command_failed(failure, address, operation_id, payload, message, duration, started_event:, server_connection_id: nil, service_id: nil) (private)

Since:

  • 2.1.0

[ GitHub ]

  
# File 'lib/mongo/monitoring/publishable.rb', line 103

def command_failed(failure, address, operation_id, payload, message, duration,
  started_event:, server_connection_id: nil, service_id: nil
)
  monitoring.failed(
    Monitoring::COMMAND,
    Event::CommandFailed.generate(address, operation_id, payload,
      message, failure, duration,
      started_event: started_event,
      server_connection_id: server_connection_id,
      service_id: service_id,
    )
  )
end

#command_started(address, operation_id, payload, socket_object_id: nil, connection_id: nil, connection_generation: nil, server_connection_id: nil, service_id: nil) (private)

Since:

  • 2.1.0

[ GitHub ]

  
# File 'lib/mongo/monitoring/publishable.rb', line 49

def command_started(address, operation_id, payload,
  socket_object_id: nil, connection_id: nil, connection_generation: nil,
  server_connection_id: nil, service_id: nil
)
  event = Event::CommandStarted.generate(address, operation_id, payload,
      socket_object_id: socket_object_id, connection_id: connection_id,
      connection_generation: connection_generation,
      server_connection_id: server_connection_id,
      service_id: service_id,
    )
  monitoring.started(
    Monitoring::COMMAND,
    event
  )
  event
end

#command_succeeded(result, address, operation_id, payload, duration, started_event:, server_connection_id: nil, service_id: nil) (private)

Since:

  • 2.1.0

[ GitHub ]

  
# File 'lib/mongo/monitoring/publishable.rb', line 85

def command_succeeded(result, address, operation_id, payload, duration,
  started_event:, server_connection_id: nil, service_id: nil
)
  monitoring.succeeded(
    Monitoring::COMMAND,
    Event::CommandSucceeded.generate(
      address,
      operation_id,
      payload,
      result ? result.payload : nil,
      duration,
      started_event: started_event,
      server_connection_id: server_connection_id,
      service_id: service_id,
    )
  )
end

#duration(start) (private)

Since:

  • 2.1.0

[ GitHub ]

  
# File 'lib/mongo/monitoring/publishable.rb', line 117

def duration(start)
  Time.now - start
end

#publish_cmap_event(event)

Since:

  • 2.1.0

[ GitHub ]

  
# File 'lib/mongo/monitoring/publishable.rb', line 41

def publish_cmap_event(event)
  return unless monitoring?

  monitoring.published(Monitoring::CONNECTION_POOL, event)
end

#publish_event(topic, event)

Deprecated.

Since:

  • 2.1.0

[ GitHub ]

  
# File 'lib/mongo/monitoring/publishable.rb', line 31

def publish_event(topic, event)
  monitoring.succeeded(topic, event)
end

#publish_sdam_event(topic, event)

Since:

  • 2.1.0

[ GitHub ]

  
# File 'lib/mongo/monitoring/publishable.rb', line 35

def publish_sdam_event(topic, event)
  return unless monitoring?

  monitoring.succeeded(topic, event)
end