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#initialize 에 rescue 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성공 로그 vsEvent레코드 카운트), 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-113filestream 블록 제거;.platform/hooks/postdeploy/70|71|72_restart_sidekiq.sh의APP_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.messageprefix 소실 문제는 별건 이슈로 유지.
검증 요약#
ruby -c lib/cupix/event.rb— Syntax OKruby -c app/models/concerns/eventable/events/base.rb— Syntax OKbundle exec rubocop/bundle exec srb tc— 워크트리에 native gems 미설치로 실행 불가 (agent 환경 한계, 서비스 메모 참조). Balancedbegin/rescue/end구조 및 keyword args 시각 검증 완료.- Blind validator subagent — APPROVED (attempt 1)
Follow-up (hand-off)#
- Phase 2 조사 이슈 — 인프라 팀과 filebeat → logstash 파이프라인 다운스트림 소비자 파악, Kinesis 이벤트 커버리지 결번 확인.
- Phase 3 폐지 이슈 — Phase 2 결과에 따라
Cupix::Event및 관련 filebeat/postdeploy 설정 정리. - develop 브랜치 후속 patch —
annotation.rb:227-230에 동일 강등 패턴 적용.
Cleanup#
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/) 에 남아 있으므로 필요 시 별도로 제거:
git worktree remove /home/ec2-user/error-sweeper/.worktrees/d971e389-a359-4d46-9e42-7fb1e3c90ef6/tesla