Skip to content
isdnetworks
Go back

한 경로에만 붙은 가드

상세 이미지가 비어 있는 상태로 외부에 나간 건이 있었다. 이미지가 아직 준비되기 전에 전송이 나갔을 것이라는 후보가 하나 있었다.

Table of contents

Open Table of contents

빈 채로 나간 이미지

이런 종류의 문제는 준비가 끝날 때까지 전송을 미루는 장치를 넣어서 막는다. 그것을 새로 만들어야 하는 줄 알고 어디에 넣을지를 보고 있었다.

만들기 전에 비슷한 것이 이미 있는지 grep 으로 찾아봤는데 문제의 어휘로 검색했다. 보류라는 말과 준비라는 말로 grep 해 보니 관련 있어 보이는 자리가 나왔다.

이미 있던 보호 장치

찾은 자리를 읽어 보니 정확히 그 일을 하는 장치였고 준비가 안 끝났으면 전송을 보류했다가 나중에 만드는 구조였다. 새로 설계할 필요 없이 이미 검증된 것이 있었다.

거기 달린 주석에 왜 그렇게 하는지가 적혀 있었고 그것이 지금 겪는 문제와 같은 상황을 가리키고 있었다. 변수 이름만 봤으면 같은 문제라는 것을 못 알아봤을 것이다.

배선이 한 경로에만 있었다

그런데 grep 으로 그 장치를 부르는 자리를 세어 보니 한 경로뿐이었고 우리가 문제를 겪은 경로에는 안 걸려 있었다. 장치가 없는 것이 아니라 배선이 안 된 것이었다.

그러면 같은 문제가 그 경로에만 남아 있는 것이 설명된다. 왜 어떤 건은 괜찮고 어떤 건은 비어서 나갔는지도 이것으로 갈렸다.

새로 만들지 않고 이어 붙이기

수정은 새 장치를 만드는 것이 아니라 있는 것을 다른 경로에도 이어 붙이는 일이 됐다. 작업량이 크게 줄었고 이미 돌고 있는 방식이라 위험도 낮았다.

두 경로가 같은 방식을 쓰게 되니 나중에 그 방식을 고칠 때 한 곳만 고치면 된다. 각각 다른 장치를 두었으면 그때마다 두 번씩 고쳐야 했을 것이다.

주석이 알려 준 것

이 건에서 결정적이었던 것은 그 장치에 달려 있던 주석이었다. 무엇을 하는지가 아니라 왜 그렇게 하는지가 적혀 있어서 같은 문제라는 것을 알아볼 수 있었다.

그래서 내가 붙인 쪽에도 같은 성격의 주석을 남겼다. 새로 만들기 전에 문제의 어휘로 먼저 찾아보는 것을 순서로 삼은 것도 이 건에서 나왔다.

정리


Share this post on:

Previous Post
단계가 드러나는 폴더 구조
Next Post
클라이언트가 인코딩해 줘서 되던 것