vendor: udpate latest levledb

This commit is contained in:
rjl493456442 2019-09-26 19:54:43 +08:00
parent c1142a0e9c
commit 29c7b21157
4 changed files with 36 additions and 30 deletions

View file

@ -69,6 +69,9 @@ func (tr *Transaction) Has(key []byte, ro *opt.ReadOptions) (bool, error) {
// DB. And a nil Range.Limit is treated as a key after all keys in // DB. And a nil Range.Limit is treated as a key after all keys in
// the DB. // the DB.
// //
// The returned iterator has locks on its own resources, so it can live beyond
// the lifetime of the transaction who creates them.
//
// WARNING: Any slice returned by interator (e.g. slice returned by calling // WARNING: Any slice returned by interator (e.g. slice returned by calling
// Iterator.Key() or Iterator.Key() methods), its content should not be modified // Iterator.Key() or Iterator.Key() methods), its content should not be modified
// unless noted otherwise. // unless noted otherwise.
@ -252,13 +255,14 @@ func (tr *Transaction) discard() {
// Discard transaction. // Discard transaction.
for _, t := range tr.tables { for _, t := range tr.tables {
tr.db.logf("transaction@discard @%d", t.fd.Num) tr.db.logf("transaction@discard @%d", t.fd.Num)
if err1 := tr.db.s.stor.Remove(t.fd); err1 == nil { // Iterator may still use the table, so we use tOps.remove here.
tr.db.s.reuseFileNum(t.fd.Num) tr.db.s.tops.remove(t.fd)
}
} }
} }
// Discard discards the transaction. // Discard discards the transaction.
// This method is noop if transaction is already closed (either committed or
// discarded)
// //
// Other methods should not be called after transaction has been discarded. // Other methods should not be called after transaction has been discarded.
func (tr *Transaction) Discard() { func (tr *Transaction) Discard() {

View file

@ -308,7 +308,7 @@ func (s *session) setNextFileNum(num int64) {
func (s *session) markFileNum(num int64) { func (s *session) markFileNum(num int64) {
nextFileNum := num + 1 nextFileNum := num + 1
for { for {
old, x := s.stNextFileNum, nextFileNum old, x := atomic.LoadInt64(&s.stNextFileNum), nextFileNum
if old > x { if old > x {
x = old x = old
} }
@ -326,7 +326,7 @@ func (s *session) allocFileNum() int64 {
// Reuse given file number. // Reuse given file number.
func (s *session) reuseFileNum(num int64) { func (s *session) reuseFileNum(num int64) {
for { for {
old, x := s.stNextFileNum, num old, x := atomic.LoadInt64(&s.stNextFileNum), num
if old != x+1 { if old != x+1 {
x = old x = old
} }

View file

@ -493,6 +493,8 @@ func (t *tOps) remove(fd storage.FileDesc) {
if t.evictRemoved && t.bcache != nil { if t.evictRemoved && t.bcache != nil {
t.bcache.EvictNS(uint64(fd.Num)) t.bcache.EvictNS(uint64(fd.Num))
} }
// Try to reuse file num, useful for discarded transaction.
t.s.reuseFileNum(fd.Num)
}) })
} }

50
vendor/vendor.json vendored
View file

@ -449,76 +449,76 @@
"revisionTime": "2017-07-05T02:17:15Z" "revisionTime": "2017-07-05T02:17:15Z"
}, },
{ {
"checksumSHA1": "bva7K+I3qF8NE32iIfBoXONPnL8=", "checksumSHA1": "Bl4KYAyUkgJSjcdEyv3VhHQ8PVs=",
"path": "github.com/syndtr/goleveldb/leveldb", "path": "github.com/syndtr/goleveldb/leveldb",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "mPNraL2edpk/2FYq26rSXfMHbJg=", "checksumSHA1": "mPNraL2edpk/2FYq26rSXfMHbJg=",
"path": "github.com/syndtr/goleveldb/leveldb/cache", "path": "github.com/syndtr/goleveldb/leveldb/cache",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "UA+PKDKWlDnE2OZblh23W6wZwbY=", "checksumSHA1": "UA+PKDKWlDnE2OZblh23W6wZwbY=",
"path": "github.com/syndtr/goleveldb/leveldb/comparer", "path": "github.com/syndtr/goleveldb/leveldb/comparer",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "1DRAxdlWzS4U0xKN/yQ/fdNN7f0=", "checksumSHA1": "1DRAxdlWzS4U0xKN/yQ/fdNN7f0=",
"path": "github.com/syndtr/goleveldb/leveldb/errors", "path": "github.com/syndtr/goleveldb/leveldb/errors",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "iBorxU3FBbau81WSyVa8KwcutzA=", "checksumSHA1": "iBorxU3FBbau81WSyVa8KwcutzA=",
"path": "github.com/syndtr/goleveldb/leveldb/filter", "path": "github.com/syndtr/goleveldb/leveldb/filter",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "hPyFsMiqZ1OB7MX+6wIAA6nsdtc=", "checksumSHA1": "hPyFsMiqZ1OB7MX+6wIAA6nsdtc=",
"path": "github.com/syndtr/goleveldb/leveldb/iterator", "path": "github.com/syndtr/goleveldb/leveldb/iterator",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "gJY7bRpELtO0PJpZXgPQ2BYFJ88=", "checksumSHA1": "gJY7bRpELtO0PJpZXgPQ2BYFJ88=",
"path": "github.com/syndtr/goleveldb/leveldb/journal", "path": "github.com/syndtr/goleveldb/leveldb/journal",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "2ncG38FDk2thSlrHd7JFmiuvnxA=", "checksumSHA1": "2ncG38FDk2thSlrHd7JFmiuvnxA=",
"path": "github.com/syndtr/goleveldb/leveldb/memdb", "path": "github.com/syndtr/goleveldb/leveldb/memdb",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "LC+WnyNq4O2J9SHuVfWL19wZH48=", "checksumSHA1": "LC+WnyNq4O2J9SHuVfWL19wZH48=",
"path": "github.com/syndtr/goleveldb/leveldb/opt", "path": "github.com/syndtr/goleveldb/leveldb/opt",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "ZnyuciM+R19NG8L5YS3TIJdo1e8=", "checksumSHA1": "ZnyuciM+R19NG8L5YS3TIJdo1e8=",
"path": "github.com/syndtr/goleveldb/leveldb/storage", "path": "github.com/syndtr/goleveldb/leveldb/storage",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "DS0i9KReIeZn3T1Bpu31xPMtzio=", "checksumSHA1": "DS0i9KReIeZn3T1Bpu31xPMtzio=",
"path": "github.com/syndtr/goleveldb/leveldb/table", "path": "github.com/syndtr/goleveldb/leveldb/table",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "V/Dh7NV0/fy/5jX1KaAjmGcNbzI=", "checksumSHA1": "V/Dh7NV0/fy/5jX1KaAjmGcNbzI=",
"path": "github.com/syndtr/goleveldb/leveldb/util", "path": "github.com/syndtr/goleveldb/leveldb/util",
"revision": "81b91e5521e1d9f5d09677b8a940a5903385b2fa", "revision": "758128399b1df3a87e92df6c26c1d2063da8fabe",
"revisionTime": "2019-09-19T06:41:59Z" "revisionTime": "2019-09-23T12:57:48Z"
}, },
{ {
"checksumSHA1": "SsMMqb3xn7hg1ZX5ugwZz5rzpx0=", "checksumSHA1": "SsMMqb3xn7hg1ZX5ugwZz5rzpx0=",