【git】500 Whoops, something went wrong on our end(gitlab修改项目500错误)

问题描述

在对 gitlab 进行项目修改保存时候,出现了 500 错误,经查看日志,发现 OpenSSL::Cipher::CipherError 异常,如下图所示:

在这里插入图片描述

==> /var/log/gitlab/gitlab-rails/production.log <==
  
OpenSSL::Cipher::CipherError ():
  
lib/gitlab/crypto_helper.rb:28:in `aes256_gcm_decrypt'
app/models/concerns/token_authenticatable_strategies/encryption_helper.rb:18:in `decrypt_token'
app/models/concerns/token_authenticatable_strategies/encrypted.rb:78:in `get_encrypted_token'
app/models/concerns/token_authenticatable_strategies/encrypted.rb:113:in `token_set?'
app/models/concerns/token_authenticatable_strategies/base.rb:44:in `ensure_token'
app/models/concerns/token_authenticatable_strategies/encrypted.rb:38:in `ensure_token'
app/models/concerns/token_authenticatable.rb:49:in `block in add_authentication_token_field'
lib/gitlab/database/load_balancing/connection_proxy.rb:121:in `public_send'
lib/gitlab/database/load_balancing/connection_proxy.rb:121:in `block in write_using_load_balancer'
lib/gitlab/database/load_balancing/load_balancer.rb:127:in `block in read_write'
lib/gitlab/database/load_balancing/load_balancer.rb:198:in `retry_with_backoff'
lib/gitlab/database/load_balancing/load_balancer.rb:116:in `read_write'
lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `write_using_load_balancer'
lib/gitlab/database/load_balancing/connection_proxy.rb:72:in `transaction'
lib/gitlab/database/load_balancing/connection_proxy.rb:121:in `public_send'
lib/gitlab/database/load_balancing/connection_proxy.rb:121:in `block in write_using_load_balancer'
lib/gitlab/database/load_balancing/load_balancer.rb:127:in `block in read_write'
lib/gitlab/database/load_balancing/load_balancer.rb:198:in `retry_with_backoff'
lib/gitlab/database/load_balancing/load_balancer.rb:116:in `read_write'
lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `write_using_load_balancer'
lib/gitlab/database/load_balancing/connection_proxy.rb:72:in `transaction'
app/services/projects/update_service.rb:34:in `execute'
app/controllers/projects_controller.rb:112:in `update'
app/controllers/application_controller.rb:524:in `set_current_admin'
lib/gitlab/session.rb:11:in `with_session'
app/controllers/application_controller.rb:515:in `set_session_storage'
lib/gitlab/i18n.rb:107:in `with_locale'
lib/gitlab/i18n.rb:113:in `with_user_locale'
app/controllers/application_controller.rb:506:in `set_locale'
app/controllers/application_controller.rb:499:in `set_current_context'
lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'
lib/gitlab/middleware/memory_report.rb:13:in `call'
lib/gitlab/middleware/speedscope.rb:13:in `call'
lib/gitlab/database/load_balancing/rack_middleware.rb:23:in `call'
lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'
lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'
lib/gitlab/metrics/web_transaction.rb:46: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/query_analyzer.rb:11:in `block in call'
lib/gitlab/database/query_analyzer.rb:37:in `within'
lib/gitlab/middleware/query_analyzer.rb:11: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/basic_health_check.rb:25:in `call'
lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'
lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'
lib/gitlab/middleware/request_context.rb:21:in `call'
lib/gitlab/middleware/webhook_recursion_detection.rb:15:in `call'
config/initializers/fix_local_cache_middleware.rb:11:in `call'
lib/gitlab/middleware/compressed_json.rb:37: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:79:in `call'
lib/gitlab/middleware/release_env.rb:13:in `call'

解决方法

按照如下步骤重置Token

进入 gitlab-psql 命令行,使用 UPDATE projects SET runners_token = null, runners_token_encrypted = null; 语句重置 Token

root@326adcd27dab:/#
gitlab-psql -d gitlabhq_production
 
gitlabhq_production=# 
UPDATE projects SET runners_token = null, runners_token_encrypted = null;

然后回到浏览器操作,发现可以正常操作了,无需重启gitlab服务。


不同场景下GitLab出现500错误的解决办法不同: - **查看仓库详情(代码)报错**:若基于docker搭建的GitLab,docker ps查看运行状态正常且能访问页面,但查看仓库详情报错500,目前引用中未提及此场景下针对该特定错误信息及Request ID的解决办法,可进一步查看GitLab日志文件(如`gitlab-ctl tail`)来获取更详细的错误信息以定位问题 [^1]。 - **runner栏点击报错**:若在runner栏点击报500错误,可能是迁移时敏感数据的加密密钥发生变化或密钥丢失。可进入GitLab的容器(如`kubectl exec -it gitlab的pod的名字 -n 名称空间 bash`),输入`gitlab-ctl tail | grep aes256_gcm_decrypt`查询是否有该字段。若有,在容器里输入`gitlab-rails dbconsole`(需粘贴密码,如`gitlab_rails['db_password'] = "xxxxxx"`),验证成功后进行以下操作: - 删除变量: ```sql DELETE FROM ci_group_variables; DELETE FROM ci_variables; ``` - 清除token: ```sql -- 清除project tokens UPDATE projects SET runners_token = null, runners_token_encrypted = null; -- 清除group tokens UPDATE namespaces SET runners_token = null, runners_token_encrypted = null; -- 清除instance tokens UPDATE application_settings SET runners_registration_token_encrypted = null; -- 清除 key used for JWT authentication UPDATE application_settings SET encrypted_ci_jwt_signing_key = null; -- 清除 runner tokens UPDATE ci_runners SET token = null, token_encrypted = null; ``` 操作完成后,无需重新启动GitLab即可正常使用 [^2]。 - **Git登录不了报错**:若Git登录不了报500错误,可删除`postmaster.pid`文件,操作如下: ```bash sudo gitlab-ctl stop sudo rm -rf /var/opt/gitlab/postgresql/data/postmaster.pid sudo gitlab-ctl start ``` [^3]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值