diff options
Diffstat (limited to 'lib/gitlab/database/load_balancing/rack_middleware.rb')
-rw-r--r-- | lib/gitlab/database/load_balancing/rack_middleware.rb | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/gitlab/database/load_balancing/rack_middleware.rb b/lib/gitlab/database/load_balancing/rack_middleware.rb index 99b1c31b04b..554205c8dcc 100644 --- a/lib/gitlab/database/load_balancing/rack_middleware.rb +++ b/lib/gitlab/database/load_balancing/rack_middleware.rb @@ -18,7 +18,7 @@ module Gitlab # doesn't linger around. clear - unstick_or_continue_sticking(env) + find_caught_up_replica(env) result = @app.call(env) @@ -35,20 +35,22 @@ module Gitlab # # Typically this code will only be reachable for Rails requests as # Grape data is not yet available at this point. - def unstick_or_continue_sticking(env) + def find_caught_up_replica(env) namespaces_and_ids = sticking_namespaces(env) namespaces_and_ids.each do |(sticking, namespace, id)| - sticking.unstick_or_continue_sticking(namespace, id) + sticking.find_caught_up_replica(namespace, id) end end # Determine if we need to stick after handling a request. def stick_if_necessary(env) + return unless ::Gitlab::Database::LoadBalancing::Session.current.performed_write? + namespaces_and_ids = sticking_namespaces(env) namespaces_and_ids.each do |sticking, namespace, id| - sticking.stick_if_necessary(namespace, id) + sticking.stick(namespace, id) end end |