mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-12-22 10:12:11 +00:00
move WASM compilation stage much later in server init to reduce memory usage during db migrations (#3242)
This commit is contained in:
parent
28d57d1f13
commit
f4d69db36a
|
@ -31,7 +31,6 @@
|
|||
|
||||
"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 @@
|
|||
// 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 @@
|
|||
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()
|
||||
|
|
Loading…
Reference in a new issue