summaryrefslogtreecommitdiff
path: root/app/models/active_session.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/active_session.rb')
-rw-r--r--app/models/active_session.rb40
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