aa0fb57093
The new error paths introduced in vercel/turbo#3448 both write their outputs to `.next/server/pages/`, which conflicts with: - The main pages source - Each other The infinite loop is very fun: 1. We need a `NodeJsPoolVc` to render pages 2. To get a `NodeJsPoolVc`, you need to write your files onto disk - So a pool is dependent on the contents of those files 3. When we render an error page, we need to write those files to disk 4. The error page shares the same file entrypoint as the main page source So, to render an error, we write the entrypoint, which is shared with main source. This alone is pretty bad, because it will invalidate our page source's node pool (and kill those processes). But, the loop is triggered by a more subtle bug: When we write a file, we read it to see if the contents have changed. Writing creates a dependency on the read! So when the error page is written to disk, it invalidated the read we preformed when we wrote the main page. That invalidated the main page (and it's node pool), and so we rendered again. That wrote the main page's code to disk, invalidating the read of the error page performed when we wrote the error page. ♾️ (I'll be opening more PRs…) |
||
---|---|---|
.. | ||
crates |