vendor: Mega update all dependencies
GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4080
This commit is contained in:
72
vendor/github.com/cznic/ql/file.go
generated
vendored
72
vendor/github.com/cznic/ql/file.go
generated
vendored
@@ -89,7 +89,7 @@ func OpenFile(name string, opt *Options) (db *DB, err error) {
|
||||
}
|
||||
}
|
||||
|
||||
fi, err := newFileFromOSFile(f) // always ACID
|
||||
fi, err := newFileFromOSFile(f, opt.Headroom) // always ACID
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -101,6 +101,8 @@ func OpenFile(name string, opt *Options) (db *DB, err error) {
|
||||
}
|
||||
}
|
||||
|
||||
fi.removeEmptyWAL = opt.RemoveEmptyWAL
|
||||
|
||||
return newDB(fi)
|
||||
}
|
||||
|
||||
@@ -126,10 +128,25 @@ func OpenFile(name string, opt *Options) (db *DB, err error) {
|
||||
// interface.
|
||||
//
|
||||
// If TempFile is nil it defaults to ioutil.TempFile.
|
||||
//
|
||||
// Headroom
|
||||
//
|
||||
// Headroom selects the minimum size a WAL file will have. The "extra"
|
||||
// allocated file space serves as a headroom. Commits that fit into the
|
||||
// headroom should not fail due to 'not enough space on the volume' errors. The
|
||||
// headroom parameter is first rounded-up to a non negative multiple of the
|
||||
// size of the lldb.Allocator atom.
|
||||
//
|
||||
// RemoveEmptyWAL
|
||||
//
|
||||
// RemoveEmptyWAL controls whether empty WAL files should be deleted on
|
||||
// clean exit.
|
||||
type Options struct {
|
||||
CanCreate bool
|
||||
OSFile lldb.OSFile
|
||||
TempFile func(dir, prefix string) (f lldb.OSFile, err error)
|
||||
CanCreate bool
|
||||
OSFile lldb.OSFile
|
||||
TempFile func(dir, prefix string) (f lldb.OSFile, err error)
|
||||
Headroom int64
|
||||
RemoveEmptyWAL bool
|
||||
}
|
||||
|
||||
type fileBTreeIterator struct {
|
||||
@@ -258,7 +275,7 @@ func infer(from []interface{}, to *[]*col) {
|
||||
case time.Duration:
|
||||
c.typ = qDuration
|
||||
case chunk:
|
||||
vals, err := lldb.DecodeScalars([]byte(x.b))
|
||||
vals, err := lldb.DecodeScalars(x.b)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@@ -374,19 +391,20 @@ func (t *fileTemp) Set(k, v []interface{}) (err error) {
|
||||
}
|
||||
|
||||
type file struct {
|
||||
a *lldb.Allocator
|
||||
codec *gobCoder
|
||||
f lldb.Filer
|
||||
f0 lldb.OSFile
|
||||
id int64
|
||||
lck io.Closer
|
||||
mu sync.Mutex
|
||||
name string
|
||||
tempFile func(dir, prefix string) (f lldb.OSFile, err error)
|
||||
wal *os.File
|
||||
a *lldb.Allocator
|
||||
codec *gobCoder
|
||||
f lldb.Filer
|
||||
f0 lldb.OSFile
|
||||
id int64
|
||||
lck io.Closer
|
||||
mu sync.Mutex
|
||||
name string
|
||||
tempFile func(dir, prefix string) (f lldb.OSFile, err error)
|
||||
wal *os.File
|
||||
removeEmptyWAL bool // Whether empty WAL files should be removed on close
|
||||
}
|
||||
|
||||
func newFileFromOSFile(f lldb.OSFile) (fi *file, err error) {
|
||||
func newFileFromOSFile(f lldb.OSFile, headroom int64) (fi *file, err error) {
|
||||
nm := lockName(f.Name())
|
||||
lck, err := lock.Lock(nm)
|
||||
if err != nil {
|
||||
@@ -434,9 +452,7 @@ func newFileFromOSFile(f lldb.OSFile) (fi *file, err error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if st.Size() != 0 {
|
||||
return nil, fmt.Errorf("(file-001) non empty WAL file %s exists", wn)
|
||||
}
|
||||
closew = st.Size() == 0
|
||||
}
|
||||
|
||||
info, err := f.Stat()
|
||||
@@ -454,7 +470,7 @@ func newFileFromOSFile(f lldb.OSFile) (fi *file, err error) {
|
||||
|
||||
filer := lldb.Filer(lldb.NewOSFiler(f))
|
||||
filer = lldb.NewInnerFiler(filer, 16)
|
||||
if filer, err = lldb.NewACIDFiler(filer, w); err != nil {
|
||||
if filer, err = lldb.NewACIDFiler(filer, w, lldb.MinWAL(headroom)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -508,7 +524,7 @@ func newFileFromOSFile(f lldb.OSFile) (fi *file, err error) {
|
||||
|
||||
filer := lldb.Filer(lldb.NewOSFiler(f))
|
||||
filer = lldb.NewInnerFiler(filer, 16)
|
||||
if filer, err = lldb.NewACIDFiler(filer, w); err != nil {
|
||||
if filer, err = lldb.NewACIDFiler(filer, w, lldb.MinWAL(headroom)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -589,12 +605,22 @@ func (s *file) Close() (err error) {
|
||||
|
||||
es := s.f0.Sync()
|
||||
ef := s.f0.Close()
|
||||
var ew error
|
||||
var ew, estat, eremove error
|
||||
if s.wal != nil {
|
||||
remove := false
|
||||
wn := s.wal.Name()
|
||||
if s.removeEmptyWAL {
|
||||
var stat os.FileInfo
|
||||
stat, estat = s.wal.Stat()
|
||||
remove = stat.Size() == 0
|
||||
}
|
||||
ew = s.wal.Close()
|
||||
if remove {
|
||||
eremove = os.Remove(wn)
|
||||
}
|
||||
}
|
||||
el := s.lck.Close()
|
||||
return errSet(&err, es, ef, ew, el)
|
||||
return errSet(&err, es, ef, ew, el, estat, eremove)
|
||||
}
|
||||
|
||||
func (s *file) Name() string { return s.name }
|
||||
|
||||
Reference in New Issue
Block a user