马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 zzq 于 2025-7-24 12:02 编辑
分享一下 Gitlab 更新的一次经历:
事情是这样,今天早上一打开gitlab看到gitlab ee-18.2发布了,本着体验一下新版的想法,光速拉取了docker镜像然后开始走备份更新一条龙升级。更新完大体没有什么问题,刚开始全局搜索没法搜感觉也正常。毕竟刚刚升级。
顺便说一嘴,gitlab 18版本里面全局中文设置就跟被移除了一样,一看个人偏好设置中文翻译才到87%,后来去gitlab那个翻译平台看了一下,其实翻译已经97%了,只不过太久没有更新中文翻译,所以我想抱着新版能不能有可能能让首页设置全局中文的想法,就更新了这个所谓的18.2
但是直到下午的时候,我发现全局搜索的时候点“项目”,界面仍然还是直接500了,我还是以为elasticsearch的索引问题,所以我进了管理员面板然后点击了不停机构建索引。等到晚上的时候还是这样,我才意识到问题不对劲。所以整个晚上我开始尝试进gitlab 命令行删除索引、reindex重建索引,直到全部重建索引之后,我问GPT要不你给我写一个测试elasticsearch的curl的脚本吧,看看问题。
结果发现从gitlab容器里面调用curl搜索一切正常啊,我又用 docker 绑定的本机的端口测了一下,搜索全部都是好的。这下好了,我瞬间意识到可能是gitlab本身的问题。
查了一下日志发现:
- docker compose logs | grep 01K0F123AHQ96EA55NPN0BW2QJ
- gitlab | {"method":"GET","path":"/search","format":"html","controller":"SearchController","action":"show","status":500,"time":"2025-07-18T15:04:50.804Z","params":[{"key":"scope","value":"projects"},{"key":"search","value":"[FILTERED]"}],"correlation_id":"01K0F123AHQ96EA55NPN0BW2QJ","meta.caller_id":"SearchController#show","meta.feature_category":"global_search","meta.organization_id":1,"meta.remote_ip":"172.18.0.1","meta.user":"root","meta.user_id":1,"meta.client_id":"user/1","meta.search.group_id":null,"meta.search.project_id":null,"meta.search.scope":"projects","meta.search.page":"1","meta.search.filters.confidential":null,"meta.search.filters.state":null,"meta.search.force_search_results":null,"meta.search.filters.language":null,"meta.search.type":"advanced","meta.search.level":"global","meta.search.filters.source_branch":null,"meta.search.filters.not_source_branch":null,"meta.search.filters.target_branch":null,"meta.search.filters.not_target_branch":null,"meta.search.filters.author_username":null,"meta.search.filters.not_author_username":null,"remote_ip":"172.18.0.1","user_id":1,"username":"root","ua":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","queue_duration_s":0.005785,"request_urgency":"low","target_duration_s":5,"redis_calls":8,"redis_allowed_cross_slot_calls":1,"redis_duration_s":6.979999999999999e-4,"redis_read_bytes":396,"redis_write_bytes":957,"redis_db_load_balancing_calls":2,"redis_db_load_balancing_duration_s":0.000137,"redis_db_load_balancing_write_bytes":104,"redis_feature_flag_calls":1,"redis_feature_flag_duration_s":0.000082,"redis_feature_flag_read_bytes":115,"redis_feature_flag_write_bytes":68,"redis_rate_limiting_calls":2,"redis_rate_limiting_duration_s":0.000167,"redis_rate_limiting_read_bytes":2,"redis_rate_limiting_write_bytes":146,"redis_sessions_calls":3,"redis_sessions_allowed_cross_slot_calls":1,"redis_sessions_duration_s":0.000312,"redis_sessions_read_bytes":279,"redis_sessions_write_bytes":639,"elasticsearch_calls":1,"elasticsearch_duration_s":0.002981,"elasticsearch_timed_out_count":0,"db_count":4,"db_write_count":0,"db_cached_count":0,"db_txn_count":0,"db_replica_txn_count":0,"db_primary_txn_count":0,"db_replica_count":0,"db_primary_count":4,"db_replica_write_count":0,"db_primary_write_count":0,"db_replica_cached_count":0,"db_primary_cached_count":0,"db_replica_wal_count":0,"db_primary_wal_count":0,"db_replica_wal_cached_count":0,"db_primary_wal_cached_count":0,"db_replica_txn_max_duration_s":0.0,"db_primary_txn_max_duration_s":0.0,"db_replica_txn_duration_s":0.0,"db_primary_txn_duration_s":0.0,"db_replica_duration_s":0.0,"db_primary_duration_s":0.002,"db_main_txn_count":0,"db_ci_txn_count":0,"db_main_replica_txn_count":0,"db_ci_replica_txn_count":0,"db_main_count":4,"db_ci_count":0,"db_main_replica_count":0,"db_ci_replica_count":0,"db_main_write_count":0,"db_ci_write_count":0,"db_main_replica_write_count":0,"db_ci_replica_write_count":0,"db_main_cached_count":0,"db_ci_cached_count":0,"db_main_replica_cached_count":0,"db_ci_replica_cached_count":0,"db_main_wal_count":0,"db_ci_wal_count":0,"db_main_replica_wal_count":0,"db_ci_replica_wal_count":0,"db_main_wal_cached_count":0,"db_ci_wal_cached_count":0,"db_main_replica_wal_cached_count":0,"db_ci_replica_wal_cached_count":0,"db_main_txn_max_duration_s":0.0,"db_ci_txn_max_duration_s":0.0,"db_main_replica_txn_max_duration_s":0.0,"db_ci_replica_txn_max_duration_s":0.0,"db_main_txn_duration_s":0.0,"db_ci_txn_duration_s":0.0,"db_main_replica_txn_duration_s":0.0,"db_ci_replica_txn_duration_s":0.0,"db_main_duration_s":0.002,"db_ci_duration_s":0.0,"db_main_replica_duration_s":0.0,"db_ci_replica_duration_s":0.0,"path_traversal_check_duration_s":0.000217,"cpu_s":0.031397,"mem_objects":21029,"mem_bytes":3113440,"mem_mallocs":6024,"mem_total_bytes":3954600,"pid":754,"worker_id":"puma_2","rate_limiting_gates":["search_rate_limit"],"exception.class":"Elasticsearch::Transport::Transport::Errors::BadRequest","exception.message":"[400] {"error":{"root_cause":[{"type":"parsing_exception","reason":"[_na] query malformed, must start with start_object","line":1,"col":787}],"type":"x_content_parse_exception","reason":"[1:787] [bool] failed to parse field [filter]","caused_by":{"type":"x_content_parse_exception","reason":"[1:787] [bool] failed to parse field [should]","caused_by":{"type":"parsing_exception","reason":"[_na] query malformed, must start with start_object","line":1,"col":787}}},"status":400}","exception.backtrace":["elasticsearch-transport (7.17.11) lib/elasticsearch/transport/transport/base.rb:218:in `__raise_transport_error'","elasticsearch-transport (7.17.11) lib/elasticsearch/transport/transport/base.rb:341:in `perform_request'","elasticsearch-transport (7.17.11) lib/elasticsearch/transport/transport/http/faraday.rb:36:in `perform_request'","elasticsearch-transport (7.17.11) lib/elasticsearch/transport/client.rb:197:in `perform_request'","lib/gitlab/instrumentation/elasticsearch_transport.rb:12:in `perform_request'","elasticsearch (7.17.11) lib/elasticsearch.rb:41:in `method_missing'","elasticsearch-api (7.17.11) lib/elasticsearch/api/actions/search.rb:104:in `search'","ee/config/initializers/elastic_client_setup.rb:44:in `execute!'","elasticsearch-model (7.2.1) lib/elasticsearch/model/response.rb:46:in `response'","ee/lib/gem_extensions/elasticsearch/model/response/records.rb:10:in `ids'","ee/lib/gem_extensions/elasticsearch/model/adapter/active_record/records.rb:13:in `records'","elasticsearch-model (7.2.1) lib/elasticsearch/model/response/records.rb:77:in `method_missing'","ee/lib/gitlab/elastic/search_results.rb:321:in `eager_load'","ee/lib/gitlab/elastic/search_results.rb:137:in `objects'","app/services/search_service.rb:59:in `search_objects'","app/presenters/search_service_presenter.rb:25:in `search_objects'","app/controllers/search_controller.rb:160:in `block in haml_search_results'","benchmark (0.4.0) lib/benchmark.rb:323:in `realtime'","app/controllers/search_controller.rb:158:in `haml_search_results'","app/controllers/search_controller.rb:77:in `show'","actionpack (7.1.5.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'","actionpack (7.1.5.1) lib/abstract_controller/base.rb:224:in `process_action'","actionpack (7.1.5.1) lib/action_controller/metal/rendering.rb:165:in `process_action'","actionpack (7.1.5.1) lib/abstract_controller/callbacks.rb:259:in `block in process_action'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:121:in `block in run_callbacks'","app/controllers/application_controller.rb:541:in `block in allow_gitaly_ref_name_caching'","lib/gitlab/gitaly_client.rb:479:in `allow_ref_name_caching'","app/controllers/application_controller.rb:540:in `allow_gitaly_ref_name_caching'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'","app/controllers/application_controller.rb:492:in `set_current_admin'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'","lib/gitlab/session.rb:11:in `with_session'","app/controllers/application_controller.rb:483:in `set_session_storage'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'","lib/gitlab/i18n.rb:116:in `with_locale'","lib/gitlab/i18n.rb:122:in `with_user_locale'","app/controllers/application_controller.rb:474:in `set_locale'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'","app/controllers/application_controller.rb:463:in `set_current_context'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'","lib/gitlab/ip_address_state.rb:11:in `with'","app/controllers/application_controller.rb:469:in `set_current_ip_address'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'","marginalia (1.11.1) lib/marginalia.rb:109:in `record_query_comment'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'","sentry-rails (5.23.0) lib/sentry/rails/controller_transaction.rb:34:in `block in sentry_around_action'","sentry-ruby (5.23.0) lib/sentry/hub.rb:138:in `with_child_span'","sentry-ruby (5.23.0) lib/sentry-ruby.rb:515:in `with_child_span'","sentry-rails (5.23.0) lib/sentry/rails/controller_transaction.rb:18:in `sentry_around_action'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:141:in `run_callbacks'","actionpack (7.1.5.1) lib/abstract_controller/callbacks.rb:258:in `process_action'","actionpack (7.1.5.1) lib/action_controller/metal/rescue.rb:25:in `process_action'","actionpack (7.1.5.1) lib/action_controller/metal/instrumentation.rb:74:in `block in process_action'","activesupport (7.1.5.1) lib/active_support/notifications.rb:206:in `block in instrument'","activesupport (7.1.5.1) lib/active_support/notifications/instrumenter.rb:58:in `instrument'","activesupport (7.1.5.1) lib/active_support/notifications.rb:206:in `instrument'","actionpack (7.1.5.1) lib/action_controller/metal/instrumentation.rb:73:in `process_action'","actionpack (7.1.5.1) lib/action_controller/metal/params_wrapper.rb:261:in `process_action'","activerecord (7.1.5.1) lib/active_record/railties/controller_runtime.rb:32:in `process_action'","actionpack (7.1.5.1) lib/abstract_controller/base.rb:160:in `process'","actionview (7.1.5.1) lib/action_view/rendering.rb:40:in `process'","actionpack (7.1.5.1) lib/action_controller/metal.rb:227:in `dispatch'","actionpack (7.1.5.1) lib/action_controller/metal.rb:307:in `block in dispatch'","lib/gitlab/middleware/action_controller_static_context.rb:23:in `call'","actionpack (7.1.5.1) lib/action_controller/metal.rb:307:in `dispatch'","actionpack (7.1.5.1) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'","actionpack (7.1.5.1) lib/action_dispatch/routing/route_set.rb:32:in `serve'","actionpack (7.1.5.1) lib/action_dispatch/journey/router.rb:51:in `block in serve'","config/initializers/action_dispatch_journey_router.rb:52:in `block in find_routes'","config/initializers/action_dispatch_journey_router.rb:25:in `map!'","config/initializers/action_dispatch_journey_router.rb:25:in `find_routes'","actionpack (7.1.5.1) lib/action_dispatch/journey/router.rb:32:in `serve'","actionpack (7.1.5.1) lib/action_dispatch/routing/route_set.rb:882:in `call'","gitlab-experiment (0.9.1) lib/gitlab/experiment/middleware.rb:19:in `call'","flipper (0.28.3) lib/flipper/middleware/memoizer.rb:72:in `memoized_call'","flipper (0.28.3) lib/flipper/middleware/memoizer.rb:37:in `call'","lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'","lib/gitlab/middleware/sidekiq_shard_awareness_validation.rb:20:in `block in call'","lib/gitlab/sidekiq_sharding/validator.rb:42:in `enabled'","lib/gitlab/middleware/sidekiq_shard_awareness_validation.rb:20: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/etag_caching/middleware.rb:21: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/middleware/go.rb:21:in `call'","lib/gitlab/middleware/query_analyzer.rb:11:in `block in call'","lib/gitlab/database/query_analyzer.rb:83:in `within'","lib/gitlab/middleware/query_analyzer.rb:11:in `call'","lib/ci/job_token/middleware.rb:11:in `call'","batch-loader (2.0.5) lib/batch_loader/middleware.rb:11:in `call'","rack-attack (6.7.0) lib/rack/attack.rb:103:in `call'","apollo_upload_server (2.1.6) lib/apollo_upload_server/middleware.rb:19:in `call'","lib/gitlab/middleware/multipart.rb:173:in `call'","rack-attack (6.7.0) lib/rack/attack.rb:127:in `call'","warden (1.2.9) lib/warden/manager.rb:36:in `block in call'","warden (1.2.9) lib/warden/manager.rb:34:in `catch'","warden (1.2.9) lib/warden/manager.rb:34:in `call'","rack-cors (2.0.2) lib/rack/cors.rb:102:in `call'","rack (2.2.17) lib/rack/tempfile_reaper.rb:15:in `call'","rack (2.2.17) lib/rack/etag.rb:27:in `call'","rack (2.2.17) lib/rack/conditional_get.rb:27:in `call'","rack (2.2.17) lib/rack/head.rb:12:in `call'","actionpack (7.1.5.1) lib/action_dispatch/http/permissions_policy.rb:36:in `call'","actionpack (7.1.5.1) lib/action_dispatch/http/content_security_policy.rb:36:in `call'","lib/gitlab/middleware/read_only/controller.rb:50:in `call'","lib/gitlab/middleware/read_only.rb:18:in `call'","lib/gitlab/middleware/unauthenticated_session_expiry.rb:18:in `call'","rack (2.2.17) lib/rack/session/abstract/id.rb:266:in `context'","rack (2.2.17) lib/rack/session/abstract/id.rb:260:in `call'","lib/gitlab/middleware/secure_headers.rb:11:in `call'","actionpack (7.1.5.1) lib/action_dispatch/middleware/cookies.rb:689:in `call'","lib/gitlab/middleware/same_site_cookies.rb:27:in `call'","actionpack (7.1.5.1) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'","activesupport (7.1.5.1) lib/active_support/callbacks.rb:101:in `run_callbacks'","actionpack (7.1.5.1) lib/action_dispatch/middleware/callbacks.rb:28:in `call'","sentry-rails (5.23.0) lib/sentry/rails/rescued_exception_interceptor.rb:14:in `call'","actionpack (7.1.5.1) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'","lib/gitlab/middleware/path_traversal_check.rb:40:in `call'","lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'","sentry-ruby (5.23.0) lib/sentry/rack/capture_exceptions.rb:30:in `block (2 levels) in call'","sentry-ruby (5.23.0) lib/sentry/hub.rb:299:in `with_session_tracking'","sentry-ruby (5.23.0) lib/sentry-ruby.rb:428:in `with_session_tracking'","sentry-ruby (5.23.0) lib/sentry/rack/capture_exceptions.rb:21:in `block in call'","sentry-ruby (5.23.0) lib/sentry/hub.rb:89:in `with_scope'","sentry-ruby (5.23.0) lib/sentry-ruby.rb:408:in `with_scope'","sentry-ruby (5.23.0) lib/sentry/rack/capture_exceptions.rb:20:in `call'","actionpack (7.1.5.1) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'","lib/gitlab/middleware/basic_health_check.rb:25:in `call'","lograge (0.11.2) lib/lograge/rails_ext/rack/logger.rb:15:in `call_app'","railties (7.1.5.1) lib/rails/rack/logger.rb:24:in `block in call'","activesupport (7.1.5.1) lib/active_support/tagged_logging.rb:139:in `block in tagged'","activesupport (7.1.5.1) lib/active_support/tagged_logging.rb:39:in `tagged'","activesupport (7.1.5.1) lib/active_support/tagged_logging.rb:139:in `tagged'","activesupport (7.1.5.1) lib/active_support/broadcast_logger.rb:241:in `method_missing'","railties (7.1.5.1) lib/rails/rack/logger.rb:24:in `call'","actionpack (7.1.5.1) lib/action_dispatch/middleware/remote_ip.rb:92:in `call'","lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'","lib/gitlab/middleware/request_context.rb:15:in `call'","lib/gitlab/middleware/webhook_recursion_detection.rb:15:in `call'","request_store (1.7.0) lib/request_store/middleware.rb:19:in `call'","rack (2.2.17) lib/rack/method_override.rb:24:in `call'","rack (2.2.17) lib/rack/runtime.rb:22:in `call'","rack-timeout (0.7.0) lib/rack/timeout/core.rb:154:in `block in call'","rack-timeout (0.7.0) lib/rack/timeout/support/timeout.rb:19:in `timeout'","rack-timeout (0.7.0) lib/rack/timeout/core.rb:153:in `call'","config/initializers/fix_local_cache_middleware.rb:11:in `call'","lib/gitlab/middleware/compressed_json.rb:44:in `call'","actionpack (7.1.5.1) lib/action_dispatch/middleware/executor.rb:14:in `call'","lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call'","lib/gitlab/metrics/requests_rack_middleware.rb:83:in `call'","gitlab-labkit (0.39.0) lib/labkit/middleware/rack.rb:22:in `block in call'","gitlab-labkit (0.39.0) lib/labkit/context.rb:35:in `with_context'","gitlab-labkit (0.39.0) lib/labkit/middleware/rack.rb:21:in `call'","rack (2.2.17) lib/rack/sendfile.rb:110:in `call'","actionpack (7.1.5.1) lib/action_dispatch/middleware/request_id.rb:28:in `call'","lib/gitlab/middleware/sidekiq_web_static.rb:20:in `call'","railties (7.1.5.1) lib/rails/engine.rb:536:in `call'","railties (7.1.5.1) lib/rails/railtie.rb:226:in `public_send'","railties (7.1.5.1) lib/rails/railtie.rb:226:in `method_missing'","lib/gitlab/middleware/release_env.rb:12:in `call'","rack (2.2.17) lib/rack/urlmap.rb:74:in `block in call'","rack (2.2.17) lib/rack/urlmap.rb:58:in `each'","rack (2.2.17) lib/rack/urlmap.rb:58:in `call'","puma (6.6.0) lib/puma/configuration.rb:279:in `call'","puma (6.6.0) lib/puma/request.rb:99:in `block in handle_request'","puma (6.6.0) lib/puma/thread_pool.rb:390:in `with_force_shutdown'","puma (6.6.0) lib/puma/request.rb:98:in `handle_request'","puma (6.6.0) lib/puma/server.rb:472:in `process_client'","puma (6.6.0) lib/puma/server.rb:254:in `block in run'","puma (6.6.0) lib/puma/thread_pool.rb:167:in `block in spawn_thread'"],"db_duration_s":0.00091,"view_duration_s":0.0,"duration_s":0.02259}
- gitlab | {"backend_id":"rails","body_limit":104857600,"content_type":"text/html; charset=utf-8","correlation_id":"01K0F123AHQ96EA55NPN0BW2QJ","duration_ms":38,"host":"localhost:80","level":"info","method":"GET","msg":"access","proto":"HTTP/1.1","read_bytes":1442,"referrer":"","remote_addr":"127.0.0.1:0","remote_ip":"172.18.0.1","route":"","route_id":"default","status":500,"system":"http","time":"2025-07-18T15:04:50Z","ttfb_ms":38,"uri":"/search?scope=projects\u0026search=747","user_agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","written_bytes":1624}
复制代码 意思就是这个跟elasticsearch查询的语法不兼容,但是实际上我用的是docker.elastic.co/elasticsearch/elasticsearch:8.10.2也算很新的版本了。
顺便吐槽一下gitlab18的全局中文被删除了,想要更新的大伙慎重更新啊
|