1、如下图,gitlab从12版本升级到14版本后,使用gitlab管理员在设置目录中修改任何配置都会报错
2、使用gitlab-ctl tail命令检查,后台日志报:
如果后台日志报错有关键字:aes256_gcm_decrypt,则按这个链接的方法解决:gitlab迁移时备份恢复后报错aes256_gcm_decrypt_风云琪文的博客-CSDN博客
如果报OpenSSL::Cipher::CipherError 但没有出现aes256_gcm_decrypt,如下:
OpenSSL::Cipher::CipherError ():
lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `block in write_using_load_balancer'
lib/gitlab/database/load_balancing/load_balancer.rb:110:in `block in read_write'
lib/gitlab/database/load_balancing/load_balancer.rb:170:in `retry_with_backoff'
lib/gitlab/database/load_balancing/load_balancer.rb:108:in `read_write'
lib/gitlab/database/load_balancing/connection_proxy.rb:118:in `write_using_load_balancer'
lib/gitlab/database/load_balancing/connection_proxy.rb:70:in `transaction'
app/services/application_settings/update_service.rb:50:in `update_settings'
app/services/application_settings/update_service.rb:12:in `execute'
app/controllers/admin/application_settings_controller.rb:261:in `perform_update'
app/controllers/admin/application_settings_controller.rb:46:in `block (2 levels) in <class:ApplicationSettingsController>'
app/controllers/application_controller.rb:503:in `set_current_admin'
lib/gitlab/session.rb:11:in `with_session'
app/controllers/application_controller.rb:494:in `set_session_storage'
lib/gitlab/i18n.rb:105:in `with_locale'
lib/gitlab/i18n.rb:111:in `with_user_locale'
app/controllers/application_controller.rb:488:in `set_locale'
app/controllers/application_controller.rb:482:in `set_current_context'
lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'
lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'
lib/gitlab/middleware/speedscope.rb:13:in `call'
lib/gitlab/request_profiler/middleware.rb:17:in `call'
lib/gitlab/database/load_balancing/rack_middleware.rb:23:in `call'
lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'
lib/gitlab/metrics/web_transaction.rb:21:in `run'
lib/gitlab/metrics/rack_middleware.rb:16:in `call'
lib/gitlab/jira/middleware.rb:19:in `call'
lib/gitlab/middleware/go.rb:20:in `call'
lib/gitlab/etag_caching/middleware.rb:21:in `call'
lib/gitlab/middleware/multipart.rb:173:in `call'
lib/gitlab/middleware/read_only/controller.rb:50:in `call'
lib/gitlab/middleware/read_only.rb:18:in `call'
lib/gitlab/middleware/same_site_cookies.rb:27:in `call'
lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'
lib/gitlab/middleware/basic_health_check.rb:25:in `call'
lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'
lib/gitlab/middleware/request_context.rb:21:in `call'
config/initializers/fix_local_cache_middleware.rb:11:in `call'
lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call'
lib/gitlab/middleware/sidekiq_web_static.rb:20:in `call'
lib/gitlab/metrics/requests_rack_middleware.rb:75:in `call'
lib/gitlab/middleware/release_env.rb:12:in `call'
3、经过分析,是因为gitlab的配置数据的出现数据加密问题,对应的数据库表是:application_settings
4、解决方案:
在gitlab使用以下指令登录数据库
sudo gitlab-rails dbconsole --database main
然后执行以下sql语句清理application_settings的加密字段的数据
UPDATE application_settings SET encrypted_customers_dot_jwt_signing_key = null;
UPDATE application_settings SET encrypted_customers_dot_jwt_signing_key_iv = null;
UPDATE application_settings SET runners_registration_token = null;
UPDATE application_settings SET runners_registration_token_encrypted = null;
无需重启gitlab和数据库即可正常了。