From 0b3dd2709bd4545f710563471746a224bc6e4fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Roth?= Date: Mon, 29 Jul 2024 21:32:04 +0200 Subject: [PATCH] apply PR feedback --- Makefile | 2 +- context/context.go | 18 ++++++++--------- database/etcddb/database.go | 23 +++++----------------- database/etcddb/database_test.go | 5 +++-- database/etcddb/storage.go | 33 +++++++++++++++----------------- 5 files changed, 32 insertions(+), 49 deletions(-) diff --git a/Makefile b/Makefile index 7c525fa9..0b7de186 100644 --- a/Makefile +++ b/Makefile @@ -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` diff --git a/context/context.go b/context/context.go index 8838f26b..7cc7c6ef 100644 --- a/context/context.go +++ b/context/context.go @@ -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) } diff --git a/database/etcddb/database.go b/database/etcddb/database.go index bdc94de7..37a222e6 100644 --- a/database/etcddb/database.go +++ b/database/etcddb/database.go @@ -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) { @@ -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 -} diff --git a/database/etcddb/database_test.go b/database/etcddb/database_test.go index da1a741b..b31e5599 100644 --- a/database/etcddb/database_test.go +++ b/database/etcddb/database_test.go @@ -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) } @@ -155,3 +155,4 @@ func (s *EtcDDBSuite) TestTransactionCommit(c *C) { _, err = transaction.Get(key) c.Assert(err, NotNil) } + diff --git a/database/etcddb/storage.go b/database/etcddb/storage.go index 64d67eb5..efc4cf64 100644 --- a/database/etcddb/storage.go +++ b/database/etcddb/storage.go @@ -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 } @@ -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 } @@ -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 } @@ -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 } @@ -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 } @@ -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 }