Skip to content

Commit

Permalink
apply PR feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
neolynx committed Jul 31, 2024
1 parent ff1557a commit 0b3dd27
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 49 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ docker-test: install
test:
test -d /srv/etcd || system/t13_etcd/install-etcd.sh
system/t13_etcd/start-etcd.sh &
echo Running go test
@echo Running go test
go test -v ./... -gocheck.v=true -coverprofile=unit.out
kill `cat /tmp/etcd.pid`

Expand Down
18 changes: 8 additions & 10 deletions context/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -289,20 +289,18 @@ func (context *AptlyContext) Database() (database.Storage, error) {
func (context *AptlyContext) _database() (database.Storage, error) {
if context.database == nil {
var err error

if context.config().DatabaseBackend.Type == "etcd" {
context.database, err = etcddb.NewDB(context.config().DatabaseBackend.URL)
} else if context.config().DatabaseBackend.Type == "leveldb" {
if context.config().DatabaseBackend.DbPath != "" {
dbPath := filepath.Join(context.config().RootDir, context.config().DatabaseBackend.DbPath)
context.database, err = goleveldb.NewDB(dbPath)
} else {
switch context.config().DatabaseBackend.Type {
case "leveldb":
if len(context.config().DatabaseBackend.DbPath) == 0 {
return nil, errors.New("leveldb databaseBackend config invalid")
}
} else {
dbPath := filepath.Join(context.config().RootDir, context.config().DatabaseBackend.DbPath)
context.database, err = goleveldb.NewDB(dbPath)
case "etcd":
context.database, err = etcddb.NewDB(context.config().DatabaseBackend.URL)
default:
context.database, err = goleveldb.NewDB(context.dbPath())
}

if err != nil {
return nil, fmt.Errorf("can't instantiate database: %s", err)
}
Expand Down
23 changes: 5 additions & 18 deletions database/etcddb/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,17 @@ import (

var Ctx = context.TODO()

func internalOpen(url string) (*clientv3.Client, error) {
func internalOpen(url string) (cli *clientv3.Client, err error) {
cfg := clientv3.Config{
Endpoints: []string{url},
DialTimeout: 30 * time.Second,
MaxCallSendMsgSize: (2048 * 1024 * 1024) - 1,
MaxCallRecvMsgSize: (2048 * 1024 * 1024) - 1,
MaxCallSendMsgSize: 2147483647, // (2048 * 1024 * 1024) - 1
MaxCallRecvMsgSize: 2147483647,
DialKeepAliveTimeout: 7200 * time.Second,
}

cli, err := clientv3.New(cfg)
if err != nil {
return nil, err
}

return cli, nil
cli, err = clientv3.New(cfg)
return
}

func NewDB(url string) (database.Storage, error) {
Expand All @@ -34,12 +30,3 @@ func NewDB(url string) (database.Storage, error) {
}
return &EtcDStorage{url, cli, ""}, nil
}

func NewOpenDB(url string) (database.Storage, error) {
db, err := NewDB(url)
if err != nil {
return nil, err
}

return db, nil
}
5 changes: 3 additions & 2 deletions database/etcddb/database_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ var _ = Suite(&EtcDDBSuite{})

func (s *EtcDDBSuite) SetUpTest(c *C) {
var err error
s.db, err = etcddb.NewOpenDB("127.0.0.1:2379")
s.db, err = etcddb.NewDB("127.0.0.1:2379")
c.Assert(err, IsNil)
}

func (s *EtcDDBSuite) TestSetUpTest(c *C) {
var err error
s.db, err = etcddb.NewOpenDB("127.0.0.1:2379")
s.db, err = etcddb.NewDB("127.0.0.1:2379")
c.Assert(err, IsNil)
}

Expand Down Expand Up @@ -155,3 +155,4 @@ func (s *EtcDDBSuite) TestTransactionCommit(c *C) {
_, err = transaction.Get(key)
c.Assert(err, NotNil)
}

33 changes: 15 additions & 18 deletions database/etcddb/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ func (s *EtcDStorage) applyPrefix(key []byte) []byte {

// Get key value from etcd
func (s *EtcDStorage) Get(key []byte) (value []byte, err error) {
key = s.applyPrefix(key)
getResp, err := s.db.Get(Ctx, string(key))
realKey := s.applyPrefix(key)
getResp, err := s.db.Get(Ctx, string(realKey))
if err != nil {
return
}
Expand All @@ -51,8 +51,8 @@ func (s *EtcDStorage) Get(key []byte) (value []byte, err error) {

// Put saves key to etcd, if key has the same value in DB already, it is not saved
func (s *EtcDStorage) Put(key []byte, value []byte) (err error) {
key = s.applyPrefix(key)
_, err = s.db.Put(Ctx, string(key), string(value))
realKey := s.applyPrefix(key)
_, err = s.db.Put(Ctx, string(realKey), string(value))
if err != nil {
return
}
Expand All @@ -61,8 +61,8 @@ func (s *EtcDStorage) Put(key []byte, value []byte) (err error) {

// Delete removes key from etcd
func (s *EtcDStorage) Delete(key []byte) (err error) {
key = s.applyPrefix(key)
_, err = s.db.Delete(Ctx, string(key))
realKey := s.applyPrefix(key)
_, err = s.db.Delete(Ctx, string(realKey))
if err != nil {
return
}
Expand All @@ -71,9 +71,9 @@ func (s *EtcDStorage) Delete(key []byte) (err error) {

// KeysByPrefix returns all keys that start with prefix
func (s *EtcDStorage) KeysByPrefix(prefix []byte) [][]byte {
prefix = s.applyPrefix(prefix)
realPrefix := s.applyPrefix(prefix)
result := make([][]byte, 0, 20)
getResp, err := s.db.Get(Ctx, string(prefix), clientv3.WithPrefix())
getResp, err := s.db.Get(Ctx, string(realPrefix), clientv3.WithPrefix())
if err != nil {
return nil
}
Expand All @@ -88,9 +88,9 @@ func (s *EtcDStorage) KeysByPrefix(prefix []byte) [][]byte {

// FetchByPrefix returns all values with keys that start with prefix
func (s *EtcDStorage) FetchByPrefix(prefix []byte) [][]byte {
prefix = s.applyPrefix(prefix)
realPrefix := s.applyPrefix(prefix)
result := make([][]byte, 0, 20)
getResp, err := s.db.Get(Ctx, string(prefix), clientv3.WithPrefix())
getResp, err := s.db.Get(Ctx, string(realPrefix), clientv3.WithPrefix())
if err != nil {
return nil
}
Expand All @@ -105,22 +105,19 @@ func (s *EtcDStorage) FetchByPrefix(prefix []byte) [][]byte {

// HasPrefix checks whether it can find any key with given prefix and returns true if one exists
func (s *EtcDStorage) HasPrefix(prefix []byte) bool {
prefix = s.applyPrefix(prefix)
getResp, err := s.db.Get(Ctx, string(prefix), clientv3.WithPrefix())
realPrefix := s.applyPrefix(prefix)
getResp, err := s.db.Get(Ctx, string(realPrefix), clientv3.WithPrefix())
if err != nil {
return false
}
if getResp.Count != 0 {
return true
}
return false
return getResp.Count > 0
}

// ProcessByPrefix iterates through all entries where key starts with prefix and calls
// StorageProcessor on key value pair
func (s *EtcDStorage) ProcessByPrefix(prefix []byte, proc database.StorageProcessor) error {
prefix = s.applyPrefix(prefix)
getResp, err := s.db.Get(Ctx, string(prefix), clientv3.WithPrefix())
realPrefix := s.applyPrefix(prefix)
getResp, err := s.db.Get(Ctx, string(realPrefix), clientv3.WithPrefix())
if err != nil {
return err
}
Expand Down

0 comments on commit 0b3dd27

Please sign in to comment.