도구 연동이 계속 실패하면서 토큰 데이터를 못 찾는다는 메시지가 나왔다. 토큰은 credentials.json에 저장돼 있는데 못 찾는다고 하고 config.json을 몇 번 고쳐도 결과가 같았다.
Table of contents
Open Table of contents
내 설정을 의심한 시간
처음 몇 시간은 내가 무엇을 잘못했는지를 찾는 데 썼다. config.json 위치와 값과 chmod 600 권한을 차례로 봤는데 전부 맞아 보이는데 안 됐다.
같은 것을 여러 번 고쳐도 증상이 똑같다는 것이 신호였는데 그때는 그렇게 읽지 못했다. 방향을 내 문제가 아닐 수 있다는 쪽으로 바꾸고 나서야 gh issue list --search로 공개 이슈를 검색했다.
원인 — 겹쳐 있던 여섯 개
프로젝트의 공개 이슈를 오류 메시지 문자열 그대로 --search에 넣어 검색하니 관련된 것이 하나가 아니라 여섯이었다. 설정 항목이 프로젝트 config.json에서만 인식되는 것과 ${TOKEN} 환경변수 확장이 특정 환경에서 동작하지 않는 것이 먼저 나왔다.
사용 중인 transport: sse가 폐기 예정이라는 것과 servers 목록의 두 번째 이후 항목이 무시되는 것이 이어졌다. 토큰 저장은 되는데 연결 시 검색이 실패하는 것도 있었다. 마지막은 특정 --version에서 옵션 충돌로 호출 전체가 실패하는 건이었고 다섯 번째가 정확히 내가 본 메시지였다.
주의 — 복합 원인의 감춰진 진전
여섯이 겹치니 하나씩 고쳐도 증상이 안 바뀌었다. config.json 위치를 고치면 ${TOKEN} 확장 때문에 실패한다. 그것을 고치면 servers 두 번째 항목 무시 때문에 실패하는 식이었다.
증상이 그대로이니 안 고쳐진 줄 알았는데 실제로는 고쳐졌고 다른 것이 막고 있었다. 복합 원인은 진전이 겉으로 안 드러나므로 하나씩 고치는 동안 아무 성과가 없는 것처럼 느껴진다.
대응에는 두 가지 방법이 있었는데 여섯을 각각 우회하는 것과 transport를 권장 방식으로 바꾸는 것이다. 뒤쪽을 골랐다. 이유는 그 하나가 폐기 예정 방식 때문에 생기던 증상 여러 개를 한꺼번에 없애서다. 대신 새 전송 방식을 아직 안 받는 서버 하나를 당분간 못 쓰게 되는 것을 감수했다. 근본 하나가 여러 증상의 원인인 경우가 있다.
교훈 — 검색이 먼저인 이유
이 일에서 얻은 것은 순서다. 내 설정을 의심하고 몇 시간 뒤에 검색한 순서를 뒤집었다. 증상 확인과 알려진 이슈 검색을 먼저 하고 없으면 내 설정을 보는 순서다.
gh issue list --search는 몇 분이고 설정을 훑는 것은 몇 시간이며 찾을 것이 없으면 계속 헤맨다. 싼 확인을 먼저 하고 검색은 없다는 것도 정보인데 알려진 이슈가 없으면 내 문제일 가능성이 높아진다.
판단 기준 — 도구 문제와 내 문제의 신호
둘을 가르는 신호도 정리했다. 문서대로 했는데 안 되고 오류 메시지가 구체적인데 검색하면 남들도 겪는다. 거기에 --version을 바꾸면 동작이 달라지면 도구 쪽 문제다.
다른 환경에서 같은 config.json으로 되고 오류가 내 값을 가리킨다. 문서를 다시 보면 놓친 것이 있으면 내 문제다. 둘을 먼저 가르면 조사 방향이 정해지고 그러지 않으면 한쪽만 계속 파게 된다.
정리
- 원인이 하나가 아니라 여러 개 겹쳐 있을 수 있다
- 복합 원인은 하나씩 고쳐도 증상이 그대로라 진전을 못 느낀다
- 정확한 오류 메시지가 있으면
gh issue list --search가 먼저다 - 검색은 몇 분이고 설정 훑기는 몇 시간이므로 싼 확인을 먼저 한다
- 알려진 이슈가 없다는 것도 정보다
- 근본 하나가 여러 증상의 원인인 경우가 있다
- 도구 문제와 내 문제의 신호를
--version·다른 환경 대조로 먼저 가른다 - 같은 것을 여러 번 고쳐도 같으면 다른 것이 막고 있는 것이다