포트폴리오 사이트의 8월 정기배포를 하던 중에 빌드 오류가 발생했다.
prisma 부분에서 timeout 오류가 발생하길래 일시적인 오류라 생각하여 redeploy를 2번 정도 더 해보았다. 그러나 여전히 동일한 오류가 발생했다.
Timed out fetching a new connection from the connection pool. More info: http://pris.ly/d/connection-pool (Current connection pool timeout: 10, connection limit: 3)

로컬에서 npm run build를 돌렸을 때는 잘 빌드되었는데, vercel 환경에서 배포할 때만 저 에러가 나서 당황스러웠다.
// prisma/schema.prisma
datasource db {
provider = "postgresql"
url = "postgresql://myurlblahblah?pool_timeout=40"
}
// prisma/schema.prisma
datasource db {
provider = "postgresql"
url = "postgresql://myurlblahblah?pool_timeout=0"
}
우선 첫번째로 에러 메세지에서 알려준 prisma document 웹사이트를 확인했다.
https://www.prisma.io/docs/orm/prisma-client/setup-and-configuration/databases-connections/connection-pool
에러 해결에 관한 내용보다는 connection_pool 자체에 대한 설명만 있어 직접적인 도움은 되지 않았다.
그래도 connection_pool의 크기를 세팅하는 방법이 나와있어서, 문서에 나온 방법으로 connection_limit의 크기를 키워봤다.
// prisma/schema.prisma
datasource db {
provider = "postgresql"
url = env("POSTGRES_PRISMA_URL")
directUrl = env("POSTGRES_URL_NON_POOLING")
}
// .env
POSTGRES_PRISMA_URL="postgresql://myurlblahblah?connection_limit=5"
에러 메세지에서 connection_limit에 관한 이야기가 나왔기에, limit을 키우면 정상적으로 빌드 되지 않을까하는 생각에 변경해보았다.
하지만 슬프게도 에러는 해결되지 않았다.
8월 정기 배포에 중요한 업데이트가 많았기 때문에, 여기서 포기할 수 없었다. 분명 나와 동일한 오류를 마주한 사람이 있을 것이다... 그런 확신을 갖고 prisma의 github repository에 들어가 issue 게시판을 살펴보았다.
운 좋게도 나와 동일한 오류의 issue를 찾을 수 있었다.

크리스 씨의 조언에 따라 POSTGRES_URL에 pool_timeout=0을 추가하여 pool timeout 기능을 비활성화 해보았다.
(그나저나, 크리스씨가 올린 이슈인데 크리스씨가 해결하셨다..)
pool timeout을 비활성화 하니 정상적으로 빌드가 되었다. 야호 o(^.^o)(o^.^)o
가능하면 비활성화 말고 크기를 키우고 싶었는데, '배포만 하고 자야지...' 하다가 벌써 새벽 2시인 상황이어서, 마음이 급해 그냥 비활성화 하였다.
다음 번에 수정해야지...