본문 바로가기
Docker

gitlab 관리자 사용 시 504 발생으로 설정이 안될 때, (nginx,gitlab timeout 해도 안될 때)

by 모닝위즈 2025. 7. 16.
반응형

 

 

나의 경우는 일단 import source 설정임..

 

일단 docker에 gitlab이 올라가 있음.

 

먼저 서버 커맨드라인에서 

docker exec -it gitlab bash

 

docker 내부 진입 후 

root@git:/# gitlab-rails console

 

대략 2~3분 기다렸다..

 

그러면 갑자기 내부로 진입하면서 

irb(main):043:0>

 

이런 커맨드라인이 나타단다.

 

이제 아래 내용을 입력했다.

 

settings = ApplicationSetting.current
settings.import_sources = ["gitlab_project", "gitea", "github"]
settings.save!

 

 

! 아래 에러 발생 시 raise_validation_error': Validation failed: Help page documentation base url is blocked: execution expired, Diagramsnet url is blocked: execution expired, Public runner releases url is blocked: execution expired (ActiveRecord::RecordInvalid)

 

settings = ApplicationSetting.current
settings.import_sources = ["gitlab_project", "gitea"]
settings.help_page_documentation_base_url = nil
settings.diagramsnet_url = nil
settings.public_runner_releases_url = nil
settings.save!

 

 

! 위 내용대로 했는데 또 아래 에러로 이어질 시 

raise_validation_error': Validation failed: Diagramsnet url can't be blank, Diagramsnet url must be a valid URL, Public runner releases url must be a valid URL, Public runner releases url can't be blank (ActiveRecord::RecordInvalid)

 

settings = ApplicationSetting.current
settings.import_sources = ["gitlab_project", "gitea"]
settings.help_page_documentation_base_url = "https://docs.gitlab.com"
settings.diagramsnet_url = "https://www.diagrams.net/"
settings.public_runner_releases_url = "https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html"
settings.save!

 

 

! 위 내용대로 했는데 또또 아래 에러로 이어질 시 

PG::ConnectionBad: PQconsumeInput() FATAL:  terminating connection due to idle-in-transaction timeout (ActiveRecord::StatementInvalid)
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
/opt/gitlab/embedded/lib/ruby/gems/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql/database_statements.rb:48:in exec': PQconsumeInput() FATAL:  terminating connection due to idle-in-transaction timeout (PG::ConnectionBad)
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
/opt/gitlab/embedded/lib/ruby/gems/3.1.0/gems/activerecord-7.0.8/lib/active_record/validations.rb:80:in raise_validation_error': Validation failed: Help page documentation base url is blocked: execution expired, Diagramsnet url is blocked: execution expired, Public runner releases url is blocked: execution expired (ActiveRecord::RecordInvalid)

즉, (PostgreSQL이 트랜잭션 중 연결을 강제 종료)

 

settings = ApplicationSetting.current
settings.update_column(:import_sources, ["gitlab_project", "gitea"])

 

강제 업데이트를 했다.. 부작용은 모르겠다..

 

irb(main):043:0> Gitlab::CurrentSettings.import_sources

 

이제 성공했는지 내용을 확인했는데, []로 나온다..

 

DB에는 값을 넣었지만, Rails 인스턴스 메모리에서는 아직 반영되지 않은 상태...

즉, Gitlab::CurrentSettings는 내부적으로 캐시된 설정을 참조

그래서 DB에 바로 반영되었더라도, 캐시가 갱신되지 않으면 반영되지 않은 것처럼 보임.

 

 

GitLab 설정 캐시 수동 초기화

 

ApplicationSetting.reset_current_application_settings
Gitlab::CurrentSettings.import_sources

 

 

! 이렇게 했는데 캐시 수동 초기화 문제가 생기면?

method_missing': undefined method reset_current_application_settings' for ApplicationSetting:Class (NoMethodError)
Did you mean?  reset_open_transactions_baseline

 

settings = ApplicationSetting.current
settings.update_column(:import_sources, ["gitlab_project", "gitea"])

Gitlab::CurrentSettings.clear_memoization(:current_application_settings)
Gitlab::CurrentSettings.import_sources
# => ["gitlab_project", "gitea"]

 

 

해결!

이제 관리자에 가면 체크가 되어 있음.

 

 

 

아 2시간을 삽질했네..

댓글