diff options
Diffstat (limited to 'app/models/active_session.rb')
-rw-r--r-- | app/models/active_session.rb | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/app/models/active_session.rb b/app/models/active_session.rb index 7dbc95c251b..b16c4a2b353 100644 --- a/app/models/active_session.rb +++ b/app/models/active_session.rb @@ -83,24 +83,26 @@ class ActiveSession is_impersonated: request.session[:impersonator_id].present? ) - redis.pipelined do |pipeline| - pipeline.setex( - key_name(user.id, session_private_id), - expiry, - active_user_session.dump - ) - - # Deprecated legacy format - temporary to support mixed deployments - pipeline.setex( - key_name_v1(user.id, session_private_id), - expiry, - Marshal.dump(active_user_session) - ) - - pipeline.sadd( - lookup_key_name(user.id), - session_private_id - ) + Gitlab::Instrumentation::RedisClusterValidator.allow_cross_slot_commands do + redis.pipelined do |pipeline| + pipeline.setex( + key_name(user.id, session_private_id), + expiry, + active_user_session.dump + ) + + # Deprecated legacy format - temporary to support mixed deployments + pipeline.setex( + key_name_v1(user.id, session_private_id), + expiry, + Marshal.dump(active_user_session) + ) + + pipeline.sadd?( + lookup_key_name(user.id), + session_private_id + ) + end end end end @@ -298,7 +300,7 @@ class ActiveSession session_ids_and_entries.each do |session_id, entry| next if entry - pipeline.srem(lookup_key, session_id) + pipeline.srem?(lookup_key, session_id) removed << session_id end end |