You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2021/08/10 01:57:34 UTC
[skywalking-banyandb] 01/03: Update badger, using new APIs
This is an automated email from the ASF dual-hosted git repository.
hanahmily pushed a commit to branch storage-table
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git
commit a4ce4df9b4bc77c3c78619c309fbb8e4d216f899
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Sun Aug 8 14:56:31 2021 +0800
Update badger, using new APIs
Signed-off-by: Gao Hongtao <ha...@gmail.com>
---
banyand/kv/badger.go | 71 ++++++++++++++++++++--------------------------------
banyand/kv/kv.go | 12 +++++----
go.mod | 2 +-
go.sum | 8 +++---
4 files changed, 39 insertions(+), 54 deletions(-)
diff --git a/banyand/kv/badger.go b/banyand/kv/badger.go
index d118a58..05b4e51 100644
--- a/banyand/kv/badger.go
+++ b/banyand/kv/badger.go
@@ -19,8 +19,10 @@ package kv
import (
"log"
+ "math"
"github.com/dgraph-io/badger/v3"
+ "github.com/dgraph-io/badger/v3/y"
"github.com/apache/skywalking-banyandb/pkg/logger"
)
@@ -52,36 +54,26 @@ type badgerDB struct {
}
func (b *badgerDB) Scan(key []byte, opt ScanOpts, f ScanFunc) error {
- err := b.db.View(func(txn *badger.Txn) error {
- opts := badger.DefaultIteratorOptions
- opts.PrefetchSize = opt.PrefetchSize
- opts.PrefetchValues = opt.PrefetchValues
- it := txn.NewIterator(opts)
- defer it.Close()
- for it.Seek(key); it.Valid(); it.Next() {
- item := it.Item()
- k := item.Key()
- err := f(b.shardID, k, func() ([]byte, error) {
- var val []byte
- err := item.Value(func(v []byte) error {
- val = v
- return nil
- })
- if err != nil {
- return nil, err
- }
- return val, nil
- })
- if err == ErrStopScan {
- break
- }
- if err != nil {
- return err
- }
+ opts := badger.DefaultIteratorOptions
+ opts.PrefetchSize = opt.PrefetchSize
+ opts.PrefetchValues = opt.PrefetchValues
+ it := b.db.NewIterator(opts)
+ defer func() {
+ _ = it.Close()
+ }()
+ for it.Seek(y.KeyWithTs(key, math.MaxInt64)); it.Valid(); it.Next() {
+ k := y.ParseKey(it.Key())
+ err := f(b.shardID, k, func() ([]byte, error) {
+ return y.Copy(it.Value().Value), nil
+ })
+ if err == ErrStopScan {
+ break
+ }
+ if err != nil {
+ return err
}
- return nil
- })
- return err
+ }
+ return nil
}
func (b *badgerDB) Close() error {
@@ -92,24 +84,15 @@ func (b *badgerDB) Close() error {
}
func (b *badgerDB) Put(key, val []byte) error {
- return b.db.Update(func(txn *badger.Txn) error {
- return txn.Set(key, val)
- })
+ return b.db.Put(y.KeyWithTs(key, math.MaxInt64), val)
}
func (b *badgerDB) Get(key []byte) ([]byte, error) {
- var bb []byte
- err := b.db.View(func(txn *badger.Txn) error {
- item, err := txn.Get(key)
- if err != nil {
- return err
- }
- return item.Value(func(val []byte) error {
- bb = val
- return nil
- })
- })
- return bb, err
+ v, err := b.db.Get(y.KeyWithTs(key, math.MaxInt64))
+ if err != nil {
+ return nil, err
+ }
+ return v.Value, nil
}
// badgerLog delegates the zap log to the badger logger
diff --git a/banyand/kv/kv.go b/banyand/kv/kv.go
index 34a5188..f3a2d55 100644
--- a/banyand/kv/kv.go
+++ b/banyand/kv/kv.go
@@ -27,11 +27,13 @@ import (
"github.com/apache/skywalking-banyandb/pkg/logger"
)
-var ErrStopScan = errors.New("stop scanning")
-var DefaultScanOpts = ScanOpts{
- PrefetchSize: 100,
- PrefetchValues: true,
-}
+var (
+ ErrStopScan = errors.New("stop scanning")
+ DefaultScanOpts = ScanOpts{
+ PrefetchSize: 100,
+ PrefetchValues: true,
+ }
+)
type Writer interface {
// Put a value
diff --git a/go.mod b/go.mod
index 5ad72a0..864feed 100644
--- a/go.mod
+++ b/go.mod
@@ -27,4 +27,4 @@ require (
google.golang.org/protobuf v1.27.1
)
-replace github.com/dgraph-io/badger/v3 v3.2011.1 => github.com/SkyAPM/badger/v3 v3.0.0-20210624023741-bd2dcfcaaa74
+replace github.com/dgraph-io/badger/v3 v3.2011.1 => github.com/SkyAPM/badger/v3 v3.0.0-20210808063906-49c6d778ad7d
diff --git a/go.sum b/go.sum
index ce8fd5c..90495e8 100644
--- a/go.sum
+++ b/go.sum
@@ -45,8 +45,8 @@ github.com/RoaringBitmap/gocroaring v0.4.0/go.mod h1:NieMwz7ZqwU2DD73/vvYwv7r4eW
github.com/RoaringBitmap/real-roaring-datasets v0.0.0-20190726190000-eb7c87156f76/go.mod h1:oM0MHmQ3nDsq609SS36p+oYbRi16+oVvU2Bw4Ipv0SE=
github.com/RoaringBitmap/roaring v0.9.1 h1:5PRizBmoN/PfV17nPNQou4dHQ7NcJi8FO/bihdYyCEM=
github.com/RoaringBitmap/roaring v0.9.1/go.mod h1:h1B7iIUOmnAeb5ytYMvnHJwxMc6LUrwBnzXWRuqTQUc=
-github.com/SkyAPM/badger/v3 v3.0.0-20210624023741-bd2dcfcaaa74 h1:BFHSkDBSYCtPxMgxGz07DfNRYS76KFVDlocQ2U9rY7E=
-github.com/SkyAPM/badger/v3 v3.0.0-20210624023741-bd2dcfcaaa74/go.mod h1:XieWaNygSGj5ZzSsZO4tQe/2wwLjCvESus4twFqxOKc=
+github.com/SkyAPM/badger/v3 v3.0.0-20210808063906-49c6d778ad7d h1:6B7YHxp79aOfRuMXfWdSyNSZEDqJqSzQWWkQcmqyI9s=
+github.com/SkyAPM/badger/v3 v3.0.0-20210808063906-49c6d778ad7d/go.mod h1:dULbq6ehJ5K0cGW/1TQ9iSfUk0gbSiToDWmWmTsJ53E=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
@@ -79,8 +79,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsr
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/dgraph-io/ristretto v0.0.4-0.20210504190834-0bf2acd73aa3 h1:jU/wpYsEL+8JPLf/QcjkQKI5g0dOjSuwcMjkThxt5x0=
-github.com/dgraph-io/ristretto v0.0.4-0.20210504190834-0bf2acd73aa3/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug=
+github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI=
+github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug=
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA=
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=