ES /docs

job 10455 job_stopped_callback error - /var/app/current/vendor/bundle/ruby/3.3.0/gems/logger-1.6.6/l

Summary: Cupix::Event logger open failure — Phase 1 defense (event.log 폐지 로드맵 1/3)

결과#

사용자가 재선택한 fix option "권장 조치 — event.log 폐지 (사용자 승인 방향)" 의 3-phase 실행 계획 중 Phase 1 (즉시 방어) 을 이 PR 로 구현했다. Cupix::Event#initialize 의 파일 open 실패는 IO::NULL fallback 으로 격리되고, Eventable::Events::Base#create_event 의 legacy 파일 로거 호출은 inner rescue 로 강등되어 primary 발행 (Kinesis Cupix::EventService) 과 state machine 전이가 legacy 로거 실패로 인해 롤백되지 않는다. blind validator subagent 로부터 APPROVED 를 받았다.

이 클러스터에 대한 이전 승인된 fix option (cron staggering, TSLA-13526, PR 88742 이전의 PR 88737) 은 이미 병합되어 있으며, 본 실행은 RCA revision 1 이후의 새 방향에 대한 별개의 후속 PR 이다.

Pull Requests#

Repo PR Branch
tesla https://dev.azure.com/cupix/tesla/_git/tesla/pullrequest/88742 feature/TSLA-13529

변경 내용#

tesla (lib/cupix/event.rb)Cupix::Event#initializerescue SystemCallError 를 추가해 Errno::* 발생 시 Cupix::Logger.warn 을 남기고 super(IO::NULL) 로 fallback logger 를 재-초기화. formatter/level 를 rescue 블록 내에서도 재-적용하여 Singleton 이 항상 사용 가능한 logger 를 반환한다.

tesla (app/models/concerns/eventable/events/base.rb)create_event 내부의 Cupix::Event.publish(...) 호출만을 개별 begin/rescue StandardError => legacy_publish_err 로 감싸 Cupix::Logger.warn 으로 강등. Cupix::EventService.publish_event([event]) 는 outer rescue 아래에 그대로 두어 primary 발행 실패는 여전히 트랜잭션 롤백을 유도한다.

diff: 2 files changed, 20 insertions(+), 1 deletion(-).

범위 외 (선택된 fix option에서 의도적으로 다음 phase로 분리)#

  • Phase 2 — 이중 발행 검증: Kinesis(EventService) 커버리지 확인 (Cupix::EventService.publish_event 성공 로그 vs Event 레코드 카운트), filebeat 다운스트림(cls-tesla.cupix.internal:5044 → logstash → ??? 인덱스) 소비자 조사. 별건 issue 로 hand-off.
  • Phase 3 — 파일 로거 폐지: lib/cupix/event.rb, Cupix::EventFormatter, Cupix::Event.publish 호출부 전체 삭제; .ebextensions/003-filebeat.config:99-113 filestream 블록 제거; .platform/hooks/postdeploy/70|71|72_restart_sidekiq.shAPP_EVENT_LOG_FILEPATH 및 관련 touch/chown 라인 정리. Phase 2 완료 후 별건 issue.
  • develop-only 참조 지점: app/factories/concerns/bulkable_factory/annotation.rb:227-230 — develop→master 병합 시점에 후속 patch 로 동일 강등 패턴 적용 필요.
  • RCA "부수 개선": Cupix::Logger 포맷터의 e.class/e.message prefix 소실 문제는 별건 이슈로 유지.

검증 요약#

  • ruby -c lib/cupix/event.rb — Syntax OK
  • ruby -c app/models/concerns/eventable/events/base.rb — Syntax OK
  • bundle exec rubocop / bundle exec srb tc — 워크트리에 native gems 미설치로 실행 불가 (agent 환경 한계, 서비스 메모 참조). Balanced begin/rescue/end 구조 및 keyword args 시각 검증 완료.
  • Blind validator subagent — APPROVED (attempt 1)

Follow-up (hand-off)#

  1. Phase 2 조사 이슈 — 인프라 팀과 filebeat → logstash 파이프라인 다운스트림 소비자 파악, Kinesis 이벤트 커버리지 결번 확인.
  2. Phase 3 폐지 이슈 — Phase 2 결과에 따라 Cupix::Event 및 관련 filebeat/postdeploy 설정 정리.
  3. develop 브랜치 후속 patchannotation.rb:227-230 에 동일 강등 패턴 적용.

Cleanup#

bash
cd /home/ec2-user/repos/tesla
git worktree remove /home/ec2-user/error-sweeper/.worktrees/d971e389-a359-4d46-9e42-7fb1e3c90ef6/tesla-13529

이전 실행(TSLA-13526)의 워크트리는 별도 경로(tesla/) 에 남아 있으므로 필요 시 별도로 제거:

bash
git worktree remove /home/ec2-user/error-sweeper/.worktrees/d971e389-a359-4d46-9e42-7fb1e3c90ef6/tesla