fix: add async-mutex to builds on large vaults
This commit is contained in:
		@@ -16,6 +16,7 @@ import http from "http"
 | 
			
		||||
import serveHandler from "serve-handler"
 | 
			
		||||
import { WebSocketServer } from "ws"
 | 
			
		||||
import { randomUUID } from "crypto"
 | 
			
		||||
import { Mutex } from "async-mutex"
 | 
			
		||||
 | 
			
		||||
const ORIGIN_NAME = "origin"
 | 
			
		||||
const UPSTREAM_NAME = "upstream"
 | 
			
		||||
@@ -391,8 +392,10 @@ See the [documentation](https://quartz.jzhao.xyz) for how to get started.
 | 
			
		||||
      ],
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    const buildMutex = new Mutex()
 | 
			
		||||
    const timeoutIds = new Set()
 | 
			
		||||
    const build = async (clientRefresh) => {
 | 
			
		||||
      await buildMutex.acquire()
 | 
			
		||||
      const result = await ctx.rebuild().catch((err) => {
 | 
			
		||||
        console.error(`${chalk.red("Couldn't parse Quartz configuration:")} ${fp}`)
 | 
			
		||||
        console.log(`Reason: ${chalk.grey(err)}`)
 | 
			
		||||
@@ -415,6 +418,7 @@ See the [documentation](https://quartz.jzhao.xyz) for how to get started.
 | 
			
		||||
      const { default: buildQuartz } = await import(cacheFile + `?update=${randomUUID()}`)
 | 
			
		||||
      await buildQuartz(argv, clientRefresh)
 | 
			
		||||
      clientRefresh()
 | 
			
		||||
      buildMutex.release()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const rebuild = (clientRefresh) => {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user