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=