[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:
kim
2024-05-22 09:46:24 +00:00
committed by GitHub
parent 06b1e0173b
commit 3d3e99ae52
91 changed files with 1610 additions and 12737 deletions

56
vendor/codeberg.org/gruf/go-storage/internal/errors.go generated vendored Normal file
View 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
View 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)
}