diff --git a/lib/distributed_cache.rb b/lib/distributed_cache.rb index c1c37a7a8ce..44cd2744ff7 100644 --- a/lib/distributed_cache.rb +++ b/lib/distributed_cache.rb @@ -24,7 +24,7 @@ class DistributedCache begin current = @subscribers[i] - next if payload["origin"] == current.object_id + next if payload["origin"] == current.identity next if current.key != payload["hash_key"] hash = current.hash(message.site_id) @@ -61,7 +61,7 @@ class DistributedCache end def self.publish(hash, message) - message[:origin] = hash.object_id + message[:origin] = hash.identity message[:hash_key] = hash.key DiscourseBus.publish(channel_name, message, { user_ids: [-1] }) end @@ -92,6 +92,11 @@ class DistributedCache @data = {} end + def identity + # fork resilient / multi machine identity + (@seed_id ||= SecureRandom.hex) + "#{Process.pid}" + end + def []=(k,v) k = k.to_s if Symbol === k DistributedCache.set(self, k, v)