From f4d69db36ab8b437e67e5677abeea2b235b90701 Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Mon, 26 Aug 2024 16:21:29 +0000 Subject: [PATCH] move WASM compilation stage much later in server init to reduce memory usage during db migrations (#3242) --- cmd/gotosocial/action/server/server.go | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/cmd/gotosocial/action/server/server.go b/cmd/gotosocial/action/server/server.go index 2ea48b7df..8deed6ecc 100644 --- a/cmd/gotosocial/action/server/server.go +++ b/cmd/gotosocial/action/server/server.go @@ -31,7 +31,6 @@ import ( "github.com/KimMachineGun/automemlimit/memlimit" "github.com/gin-gonic/gin" - "github.com/ncruces/go-sqlite3" "github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action" "github.com/superseriousbusiness/gotosocial/internal/api" apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util" @@ -74,13 +73,6 @@ var Start action.GTSAction = func(ctx context.Context) error { // to match container limits. setLimits(ctx) - // Compile WASM modules ahead of first use - // to prevent unexpected initial slowdowns. - log.Info(ctx, "precompiling WebAssembly") - if err := precompileWASM(ctx); err != nil { - return err - } - var ( // Define necessary core variables // before anything so we can prepare @@ -203,6 +195,17 @@ var Start action.GTSAction = func(ctx context.Context) error { TLSInsecureSkipVerify: config.GetHTTPClientTLSInsecureSkipVerify(), }) + // Compile WASM modules ahead of first use + // to prevent unexpected initial slowdowns. + // + // Note that this can take a bit of memory + // and processing so we perform this much + // later after any database migrations. + log.Info(ctx, "compiling WebAssembly") + if err := compileWASM(ctx); err != nil { + return err + } + // Build handlers used in later initializations. mediaManager := media.NewManager(state) oauthServer := oauth.New(ctx, dbService) @@ -491,11 +494,7 @@ func setLimits(ctx context.Context) { } } -func precompileWASM(ctx context.Context) error { - if err := sqlite3.Initialize(); err != nil { - return gtserror.Newf("error compiling sqlite3: %w", err) - } - +func compileWASM(ctx context.Context) error { // Use admin-set ffmpeg pool size, and fall // back to GOMAXPROCS if number 0 or less. ffPoolSize := config.GetMediaFfmpegPoolSize()