lib/ddtrace/contrib/redis/quantize.rb in ddtrace-0.27.0 vs lib/ddtrace/contrib/redis/quantize.rb in ddtrace-0.28.0
- old
+ new
@@ -18,18 +18,30 @@
Datadog::Tracer.log.debug("non formattable Redis arg #{str}: #{e}")
PLACEHOLDER
end
def format_command_args(command_args)
+ command_args = resolve_command_args(command_args)
return 'AUTH ?' if auth_command?(command_args)
+
cmd = command_args.map { |x| format_arg(x) }.join(' ')
Utils.truncate(cmd, CMD_MAX_LEN, TOO_LONG_MARK)
end
def auth_command?(command_args)
return false unless command_args.is_a?(Array) && !command_args.empty?
command_args.first.to_sym == :auth
end
+
+ # Unwraps command array when Redis is called with the following syntax:
+ # redis.call([:cmd, 'arg1', ...])
+ def resolve_command_args(command_args)
+ return command_args.first if command_args.is_a?(Array) && command_args.first.is_a?(Array)
+
+ command_args
+ end
+
+ private_class_method :auth_command?, :resolve_command_args
end
end
end
end