Troubleshooting - rss.xml is not updated

Page content

갑자기 어느 날 부터(정확히 말하면 7월 14일부터) podcast가 업데이트가 되지 않는다.

다음 날도, 그 다음 날도. 흠. 뭐가 문제일까?

아무튼 hugo를 이용해서 직접 사이트를 빌드해 봤다. 그랬더니 이상한 에러가 난다. os.Stat 파일이 없다는 이야기도 나오고.

뭔가 문제가 있는데 밤이라 그런지 그냥 단순하게 Hugo zen-theme 이 rss를 제대로 생성하지 못한다는 내용으로 검색을 해 봤는데 결과가 안 나온다.

cychong@mini1:~/work/cbs-ost$ hugo -t zen
Building sites … WARN 2020/07/23 23:21:25 .File.UniqueID on zero object. Wrap it in if or with: {{ with .File }}{{ .UniqueID }}{{ end }}
Total in 10016 ms
Error: Error building site: failed to render pages: render of "section" failed: "/home/cychong/work/cbs-ost/themes/zen/layouts/podcast/rss.xml:53:55": execute of template failed: template: podcast/rss.xml:53:55: executing "podcast/rss.xml" at <os.Stat>: error calling Stat: LStat content/static/podcast/cinema-2020-07-14.mp3: file does not exist

똑같은 방법을 시도하면서 다른 결과를 기다하는 건 바보라는 말을 잊고 그 다음 날도 똑같은 짓을 했다. 여전히 답이 나올리가.

며칠 간 포기하고 있다 오늘 마음을 잡고 다시 에러 메시지를 봤다. 에러 메시지에 찍힌 mp3 파일 경로 content/static/podcast/cinema-2020-07-14.mp3가 이상하게 보였다. content는 md 파일만 가지고 있고, static/podcast 디렉토리는 다른 곳에 있는데 왜 static/podcast 디렉토리가 content 디렉토리 밑에 있을까 라는 의문이. 그래서 저 파일이 있나 하고 cinema-2020-07-14.mp3 파일이 어디에 있는 지 찾아봤다. 그런데

오잉 파일이 없다.

이제서야 다시 에러 메시지를 찬찬히 보니 그냥(?) 그 파일이 없어서 에러가 난 거였다. 이런….. 정말 단순한 에러였는데 그걸 이해하지 못하고…

해결책은 해당 파일을 요구하는(?) md 파일을 삭제하거나, comment out시키면 된다.

#    mp3: "/podcast/cinema-2020-07-14.mp3"

그리고 다시 hugo로 사이트를 빌드하니 잘 된다. ㅎ

이제 다시 이전에 Telegram으로 날아왔던 메시지를 보니까 흠… 14일에 mp3 파일이 만들어지지 않았다. 무슨 일인 지 모르겠지만 그날 mp3 파일을 만드는 공장(?)에서 에러가 발생해서 이런 문제가 발생했나 보다.

전날받은 메시지를 보면 mp3 파일이 먼저 만들어지고 md 파일을 만드는 정상적인 순서로 동작했는데 문제가 된 14일은 mp3 파일이 만들어진 시간이 나중에 수신되었다. mp3 파일이 없다는…. 11:48 PM에 받은 메시지는 그 날 RSS가 업데이트 되지 않아서 디버깅하려고 164 초 짜리 mp3 파일을 수동으로 녹음을 한 내용이 보내진 거였다는.

문제는 지금은 이런 경우에 md 파일을 만들어서 site rebuild를 시도하고 있으니 하루라도 이런 문제가 생기면 그 다음 날에 제대로 mp3 파일을 만들었다 하더라도 전날 만들어진 md 파일을 처리할 때 또 에러가 날 거라 또 수동으로 처리해야 한다는 거다.

자동화된 해결책이 필요한데 한 가지 방법은 md 파일을 만드는 건 문제가 없는데 만일 mp3 파일이 없으면 위와 같이 mp3 파일을 comment 한 형태로 만들면 되겠다.

36     comment = "#" if not os.path.exists(mp3_file) else ""

43         buf += "%s    mp3: \"/podcast/%s\"\n" %(comment, os.path.basename(mp3_file))

이렇게 mp3 파일 경로를 확인해서 만일 없는 경우라면 앞에 #을 붙이는 정보면 될 듯.