class Redis::ImpendingCrossSlotError

Captures the details from a potential CROSSSLOT error as identified by Redis::KeyHash.all_in_one_slot!.

Generally, this indicates we were about to risk a Redis operation which is likely to produce a Redis error result like:

(error) CROSSSLOT Keys in request don't hash to the same slot

TODO: rdoc

Redis::ImpendingCrossSlotError is a Redis::CommandError because the intention is to use Redis::KeyHash.all_in_one_slot! as a filter in front of Redis#eval, which will raise a Redis::CommandError when redis-server returns a CROSSSLOT error.

Attributes

keys[RW]
namespace[RW]
namespaced_keys[RW]
problems[RW]

Public Class Methods

new(namespace,keys,namespaced_keys,problems) click to toggle source
Calls superclass method
# File lib/redis/impending_cross_slot_error.rb, line 35
def initialize(namespace,keys,namespaced_keys,problems)
  err  = "CROSSSLOT"
  err += " namespace=#{namespace.inspect}"
  err += " keys=#{keys.inspect}"
  err += " namespaced_keys=#{namespaced_keys.inspect}"
  err += " problems=#{problems.inspect}"
  super(err)
  @namespace       = namespace ? namespace.dup.freeze : nil
  @keys            = keys.dup.freeze
  @namespaced_keys = namespaced_keys.dup.freeze
  @problems        = problems.dup.freeze
end