mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-22 03:36:39 +00:00
this sets the memory limit for ncruces/go-sqlite3 according to ptr size (i.e. platform 32 / 64bit)
This commit is contained in:
parent
4fcea3d6ae
commit
3464b39d39
|
@ -23,13 +23,44 @@
|
||||||
"context"
|
"context"
|
||||||
"database/sql/driver"
|
"database/sql/driver"
|
||||||
|
|
||||||
|
"codeberg.org/gruf/go-bytesize"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||||
|
"github.com/tetratelabs/wazero"
|
||||||
|
|
||||||
|
"github.com/ncruces/go-sqlite3"
|
||||||
sqlite3driver "github.com/ncruces/go-sqlite3/driver"
|
sqlite3driver "github.com/ncruces/go-sqlite3/driver"
|
||||||
_ "github.com/ncruces/go-sqlite3/embed" // embed wasm binary
|
_ "github.com/ncruces/go-sqlite3/embed" // embed wasm binary
|
||||||
_ "github.com/ncruces/go-sqlite3/vfs/memdb" // include memdb vfs
|
_ "github.com/ncruces/go-sqlite3/vfs/memdb" // include memdb vfs
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
// Initialize WASM runtime config.
|
||||||
|
cfg := wazero.NewRuntimeConfig()
|
||||||
|
|
||||||
|
// The size of a page in WASM.
|
||||||
|
const pageSize = uint32(^uint16(0))
|
||||||
|
|
||||||
|
// The following check is compile-time:
|
||||||
|
//
|
||||||
|
// Size of a pointer on this platform,
|
||||||
|
// i.e. are we running on 32 / 64 bit.
|
||||||
|
//
|
||||||
|
// See: https://github.com/ncruces/go-sqlite3/issues/168#issuecomment-2412429221
|
||||||
|
const ptrsz = 32 << (^uintptr(0) >> 63)
|
||||||
|
switch ptrsz {
|
||||||
|
case 32:
|
||||||
|
const memoryLimit = uint32(32*bytesize.MiB) / pageSize
|
||||||
|
cfg = cfg.WithMemoryLimitPages(memoryLimit)
|
||||||
|
case 64:
|
||||||
|
const memoryLimit = uint32(256*bytesize.MiB) / pageSize
|
||||||
|
cfg = cfg.WithMemoryLimitPages(memoryLimit)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set runtime config before
|
||||||
|
// initialize func gets called.
|
||||||
|
sqlite3.RuntimeConfig = cfg
|
||||||
|
}
|
||||||
|
|
||||||
// Driver is our own wrapper around the
|
// Driver is our own wrapper around the
|
||||||
// driver.SQLite{} type in order to wrap
|
// driver.SQLite{} type in order to wrap
|
||||||
// further SQL types with our own
|
// further SQL types with our own
|
||||||
|
|
Loading…
Reference in a new issue