module Mongo::Operation::Executable
Shared executable behavior of operations.
@since 2.5.2
Public Instance Methods
do_execute(server)
click to toggle source
# File lib/mongo/operation/shared/executable.rb, line 25 def do_execute(server) unpin_maybe(session) do add_error_labels do add_server_diagnostics(server) do get_result(server).tap do |result| process_result(result, server) end end end end end
execute(server)
click to toggle source
# File lib/mongo/operation/shared/executable.rb, line 37 def execute(server) do_execute(server).tap do |result| validate_result(result, server) end end
Private Instance Methods
build_message(server)
click to toggle source
# File lib/mongo/operation/shared/executable.rb, line 60 def build_message(server) message(server) end
dispatch_message(server)
click to toggle source
Returns a Protocol::Message
or nil
# File lib/mongo/operation/shared/executable.rb, line 54 def dispatch_message(server) server.with_connection do |connection| connection.dispatch([ build_message(server) ], operation_id) end end
get_result(server)
click to toggle source
# File lib/mongo/operation/shared/executable.rb, line 49 def get_result(server) result_class.new(dispatch_message(server)) end
process_result(result, server)
click to toggle source
# File lib/mongo/operation/shared/executable.rb, line 64 def process_result(result, server) server.update_cluster_time(result) if result.not_master? || result.node_recovering? if result.node_shutting_down? keep_pool = false else # Max wire version needs to be examined while the server is known keep_pool = server.description.server_version_gte?('4.2') end server.unknown!(keep_connection_pool: keep_pool) server.scan_semaphore.signal end session.process(result) if session result end
result_class()
click to toggle source
# File lib/mongo/operation/shared/executable.rb, line 45 def result_class Result end