minor style and doc fixes. warning about logging performance issues.

This commit is contained in:
Kyle Banker 2011-01-31 15:51:39 -05:00
parent 8a7296599b
commit 9c83ca6b3e
3 changed files with 17 additions and 9 deletions

View File

@ -321,7 +321,7 @@ module Mongo
message.put_int(0)
message.put_binary(BSON::BSON_CODER.serialize(selector, false, true).to_s)
@connection.instrument( :remove, :database => @db.name, :collection => @name, :selector => selector ) do
@connection.instrument(:remove, :database => @db.name, :collection => @name, :selector => selector) do
if safe
@connection.send_message_with_safe_check(Mongo::Constants::OP_DELETE, message, @db.name, nil, safe)
else
@ -368,7 +368,7 @@ module Mongo
message.put_binary(BSON::BSON_CODER.serialize(selector, false, true).to_s)
message.put_binary(BSON::BSON_CODER.serialize(document, false, true).to_s)
@connection.instrument( :update, :database => @db.name, :collection => @name, :selector => selector, :document => document ) do
@connection.instrument(:update, :database => @db.name, :collection => @name, :selector => selector, :document => document) do
if safe
@connection.send_message_with_safe_check(Mongo::Constants::OP_UPDATE, message, @db.name, nil, safe)
else
@ -840,7 +840,7 @@ module Mongo
end
raise InvalidOperation, "Exceded maximum insert size of 16,000,000 bytes" if message.size > 16_000_000
@connection.instrument( :insert, :database => @db.name, :collection => collection_name, :documents => documents ) do
@connection.instrument(:insert, :database => @db.name, :collection => collection_name, :documents => documents) do
if safe
@connection.send_message_with_safe_check(Mongo::Constants::OP_INSERT, message, @db.name, nil, safe)
else

View File

@ -61,7 +61,8 @@ module Mongo
# on initialization.
# @option opts [Boolean] :slave_ok (false) Must be set to +true+ when connecting
# to a single, slave node.
# @option opts [Logger, #debug] :logger (nil) Logger instance to receive driver operation log.
# @option opts [Logger, #debug] :logger (nil) A Logger instance for debugging driver ops. Note that
# logging negatively impacts performance; therefore, it should not be used for high-performance apps.
# @option opts [Integer] :pool_size (1) The maximum number of socket connections allowed per
# connection pool. Note: this setting is relevant only for multi-threaded applications.
# @option opts [Float] :timeout (5.0) When all of the connections a pool are checked out,
@ -534,8 +535,10 @@ module Mongo
end
end
# execute the block and log the operation as described by name/payload
def instrument( name, payload = {}, &blk )
# Execute the block and log the operation described by name
# and payload.
# TODO: Not sure if this should take a block.
def instrument(name, payload = {}, &blk)
res = yield
log_operation(name, payload)
res
@ -572,7 +575,12 @@ module Mongo
@primary = nil
@primary_pool = nil
@logger = opts[:logger] || nil
@logger = opts[:logger] || nil
if @logger
@logger.debug("MongoDB logging. Please note that logging negatively impacts performance " +
"and should be disabled for high-performance production apps.")
end
should_connect = opts.fetch(:connect, true)
connect if should_connect
@ -596,7 +604,7 @@ module Mongo
## Logging methods
def log_operation( name, payload )
def log_operation(name, payload)
return unless @logger
msg = "#{payload[:database]}['#{payload[:collection]}'].#{name}("
msg += payload.values_at(:selector, :document, :documents, :fields ).compact.map(&:inspect).join(', ') + ")"

View File

@ -378,7 +378,7 @@ module Mongo
false
else
message = construct_query_message
@connection.instrument( :find, instrument_payload ) do
@connection.instrument(:find, instrument_payload) do
results, @n_received, @cursor_id = @connection.receive_message(
Mongo::Constants::OP_QUERY, message, nil, @socket, @command)
@returned += @n_received