EE load balancing code doesn't work with Rails 5
Upon deploying the first 10.6 RC to staging, Unicorn blew up with https://sentry.gitlab.net/gitlab/staginggitlabcom/issues/578213:
ArgumentError: wrong number of arguments (given 4, expected 1..3)
from gitlab/database/load_balancing/connection_proxy.rb:33:in `select_all'
from active_record/querying.rb:39:in `find_by_sql'
from active_record/relation.rb:706:in `exec_queries'
from active_record/relation.rb:583:in `load'
from active_record/relation.rb:260:in `records'
from active_record/relation.rb:256:in `to_a'
from active_record/relation/finder_methods.rb:563:in `find_nth_with_limit'
from active_record/relation/finder_methods.rb:592:in `find_nth_with_limit_and_offset'
from active_record/relation/finder_methods.rb:545:in `find_nth'
from active_record/relation/finder_methods.rb:122:in `first'
from active_record/relation/finder_methods.rb:154:in `last'
from active_record/querying.rb:3:in `last'
from license.rb:226:in `load_license'
from license.rb:211:in `block in current'
from request_store.rb:47:in `fetch'
from license.rb:211:in `current'
from license.rb:217:in `feature_available?'
from gitlab/auth/smartcard.rb:9:in `enabled?'
from ee/auth_helper.rb:45:in `smartcard_enabled?'
from ee/auth_helper.rb:35:in `form_based_providers'
The problem is select_all
added a preparable
argument (https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-select_all) that isn't handled in the code.