mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[performance] update storage backend and make use of seek syscall when available (#2924)
* update to use go-storage/ instead of go-store/v2/storage/
* pull in latest version from codeberg
* remove test output 😇
* add code comments
* set the exclusive bit when creating new files in disk config
* bump to actual release version
* bump to v0.1.1 (tis a simple no-logic change)
* update readme
* only use a temporary read seeker when decoding video if required (should only be S3 now)
* use fastcopy library to use memory pooled buffers when calling TempFileSeeker()
* update to use seek call in serveFileRange()
This commit is contained in:
56
vendor/codeberg.org/gruf/go-storage/internal/errors.go
generated
vendored
Normal file
56
vendor/codeberg.org/gruf/go-storage/internal/errors.go
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
package internal
|
||||
|
||||
func ErrWithKey(err error, key string) error {
|
||||
return &errorWithKey{key: key, err: err}
|
||||
}
|
||||
|
||||
type errorWithKey struct {
|
||||
key string
|
||||
err error
|
||||
}
|
||||
|
||||
func (err *errorWithKey) Error() string {
|
||||
return err.err.Error() + ": " + err.key
|
||||
}
|
||||
|
||||
func (err *errorWithKey) Unwrap() error {
|
||||
return err.err
|
||||
}
|
||||
|
||||
func ErrWithMsg(err error, msg string) error {
|
||||
return &errorWithMsg{msg: msg, err: err}
|
||||
}
|
||||
|
||||
type errorWithMsg struct {
|
||||
msg string
|
||||
err error
|
||||
}
|
||||
|
||||
func (err *errorWithMsg) Error() string {
|
||||
return err.msg + ": " + err.err.Error()
|
||||
}
|
||||
|
||||
func (err *errorWithMsg) Unwrap() error {
|
||||
return err.err
|
||||
}
|
||||
|
||||
func WrapErr(inner, outer error) error {
|
||||
return &wrappedError{inner: inner, outer: outer}
|
||||
}
|
||||
|
||||
type wrappedError struct {
|
||||
inner error
|
||||
outer error
|
||||
}
|
||||
|
||||
func (err *wrappedError) Is(other error) bool {
|
||||
return err.inner == other || err.outer == other
|
||||
}
|
||||
|
||||
func (err *wrappedError) Error() string {
|
||||
return err.inner.Error() + ": " + err.outer.Error()
|
||||
}
|
||||
|
||||
func (err *wrappedError) Unwrap() []error {
|
||||
return []error{err.inner, err.outer}
|
||||
}
|
24
vendor/codeberg.org/gruf/go-storage/internal/path.go
generated
vendored
Normal file
24
vendor/codeberg.org/gruf/go-storage/internal/path.go
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
package internal
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"codeberg.org/gruf/go-fastpath/v2"
|
||||
)
|
||||
|
||||
var pathBuilderPool sync.Pool
|
||||
|
||||
func GetPathBuilder() *fastpath.Builder {
|
||||
v := pathBuilderPool.Get()
|
||||
if v == nil {
|
||||
pb := new(fastpath.Builder)
|
||||
pb.B = make([]byte, 0, 512)
|
||||
v = pb
|
||||
}
|
||||
return v.(*fastpath.Builder)
|
||||
}
|
||||
|
||||
func PutPathBuilder(pb *fastpath.Builder) {
|
||||
pb.Reset()
|
||||
pathBuilderPool.Put(pb)
|
||||
}
|
Reference in New Issue
Block a user