개별 워커가 오래 실행돼서는 안 됩니다. 오래 실행되는 워커는 배포로 인해 Sidekiq에 의해 중단되거나, StuckProjectImportJobsWorker가 멈춘 가져오기의 일부로 잘못 판단해 실패 처리할 수 있습니다.
워커가 오래 실행돼야 한다면 StuckProjectImportJobsWorker에 의해 종료되지 않도록 Gitlab::Import::RefreshImportJidWorker로 JID를 갱신해야 합니다. Sidekiq의 max_retries_after_interruption 값을 높여야 할 수도 있습니다. GitHub 임포터 구현을 참고합니다.
캐시된 값에 의존하는 워커는 캐시 미스가 발생했을 때 데이터를 가져올 대체 수단을 구현해야 합니다.
가능하고 성능에 무리가 없다면 데이터를 다시 가져옵니다.
누락된 값을 무리 없이 처리합니다.
오래 실행되는 워커에는 worker_resource_boundary :memory를 표시해 종료 유예 시간이 2시간인 샤드에 배치해야 합니다. 긴 종료 유예 시간이 빠른 워커 작성을 대신하지는 못합니다. Apdex SLO 준수 여부는 I&I 팀 Grafana 대시보드에서 모니터링할 수 있습니다.
데이터를 생성하는 워커는 레코드 하나를 가져오지 못했다고 해서 가져오기 전체를 실패시켜서는 안 됩니다. 적절한 오류를 기록하고, 오류의 성격에 따라 재시도 여부를 판단해야 합니다.
가져오기 Stage 워커(StageMethods를 포함)와 Advance Stage 워커(Gitlab::Import::AdvanceStage를 포함)는 시스템 중단에 더 잘 견디도록 retries: 6을 설정해야 합니다. 지수 백오프를 적용하면 재시도 6회는 약 20분에 해당합니다. 그보다 재시도 횟수가 많으면 가져오기가 지나치게 지연됩니다.
가져오기의 일부만 재시도할 수 있어야 합니다. 예를 들어 대상 프로젝트 전체를 덮어쓰지 않고 누락된 이슈만 다시 가져올 수 있어야 합니다.
개별 워커가 오래 실행돼서는 안 됩니다. 오래 실행되는 워커는 배포로 인해 Sidekiq에 의해 중단되거나, StuckProjectImportJobsWorker가 멈춘 가져오기의 일부로 잘못 판단해 실패 처리할 수 있습니다.
워커가 오래 실행돼야 한다면 StuckProjectImportJobsWorker에 의해 종료되지 않도록 Gitlab::Import::RefreshImportJidWorker로 JID를 갱신해야 합니다. Sidekiq의 max_retries_after_interruption 값을 높여야 할 수도 있습니다. GitHub 임포터 구현을 참고합니다.
캐시된 값에 의존하는 워커는 캐시 미스가 발생했을 때 데이터를 가져올 대체 수단을 구현해야 합니다.
가능하고 성능에 무리가 없다면 데이터를 다시 가져옵니다.
누락된 값을 무리 없이 처리합니다.
오래 실행되는 워커에는 worker_resource_boundary :memory를 표시해 종료 유예 시간이 2시간인 샤드에 배치해야 합니다. 긴 종료 유예 시간이 빠른 워커 작성을 대신하지는 못합니다. Apdex SLO 준수 여부는 I&I 팀 Grafana 대시보드에서 모니터링할 수 있습니다.
데이터를 생성하는 워커는 레코드 하나를 가져오지 못했다고 해서 가져오기 전체를 실패시켜서는 안 됩니다. 적절한 오류를 기록하고, 오류의 성격에 따라 재시도 여부를 판단해야 합니다.
가져오기 Stage 워커(StageMethods를 포함)와 Advance Stage 워커(Gitlab::Import::AdvanceStage를 포함)는 시스템 중단에 더 잘 견디도록 retries: 6을 설정해야 합니다. 지수 백오프를 적용하면 재시도 6회는 약 20분에 해당합니다. 그보다 재시도 횟수가 많으면 가져오기가 지나치게 지연됩니다.
가져오기의 일부만 재시도할 수 있어야 합니다. 예를 들어 대상 프로젝트 전체를 덮어쓰지 않고 누락된 이슈만 다시 가져올 수 있어야 합니다.