apply PR feedback

This commit is contained in:
André Roth
2024-07-29 21:32:04 +02:00
parent ff1557afee
commit 0b3dd2709b
5 changed files with 32 additions and 49 deletions
+1 -1
View File
@@ -73,7 +73,7 @@ docker-test: install
test: test:
test -d /srv/etcd || system/t13_etcd/install-etcd.sh test -d /srv/etcd || system/t13_etcd/install-etcd.sh
system/t13_etcd/start-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 go test -v ./... -gocheck.v=true -coverprofile=unit.out
kill `cat /tmp/etcd.pid` kill `cat /tmp/etcd.pid`
+8 -10
View File
@@ -289,20 +289,18 @@ func (context *AptlyContext) Database() (database.Storage, error) {
func (context *AptlyContext) _database() (database.Storage, error) { func (context *AptlyContext) _database() (database.Storage, error) {
if context.database == nil { if context.database == nil {
var err error var err error
switch context.config().DatabaseBackend.Type {
if context.config().DatabaseBackend.Type == "etcd" { case "leveldb":
context.database, err = etcddb.NewDB(context.config().DatabaseBackend.URL) if len(context.config().DatabaseBackend.DbPath) == 0 {
} 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 {
return nil, errors.New("leveldb databaseBackend config invalid") 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()) context.database, err = goleveldb.NewDB(context.dbPath())
} }
if err != nil { if err != nil {
return nil, fmt.Errorf("can't instantiate database: %s", err) return nil, fmt.Errorf("can't instantiate database: %s", err)
} }
+5 -18
View File
@@ -10,21 +10,17 @@ import (
var Ctx = context.TODO() var Ctx = context.TODO()
func internalOpen(url string) (*clientv3.Client, error) { func internalOpen(url string) (cli *clientv3.Client, err error) {
cfg := clientv3.Config{ cfg := clientv3.Config{
Endpoints: []string{url}, Endpoints: []string{url},
DialTimeout: 30 * time.Second, DialTimeout: 30 * time.Second,
MaxCallSendMsgSize: (2048 * 1024 * 1024) - 1, MaxCallSendMsgSize: 2147483647, // (2048 * 1024 * 1024) - 1
MaxCallRecvMsgSize: (2048 * 1024 * 1024) - 1, MaxCallRecvMsgSize: 2147483647,
DialKeepAliveTimeout: 7200 * time.Second, DialKeepAliveTimeout: 7200 * time.Second,
} }
cli, err := clientv3.New(cfg) cli, err = clientv3.New(cfg)
if err != nil { return
return nil, err
}
return cli, nil
} }
func NewDB(url string) (database.Storage, error) { func NewDB(url string) (database.Storage, error) {
@@ -34,12 +30,3 @@ func NewDB(url string) (database.Storage, error) {
} }
return &EtcDStorage{url, cli, ""}, nil 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
}
+3 -2
View File
@@ -22,13 +22,13 @@ var _ = Suite(&EtcDDBSuite{})
func (s *EtcDDBSuite) SetUpTest(c *C) { func (s *EtcDDBSuite) SetUpTest(c *C) {
var err error 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) c.Assert(err, IsNil)
} }
func (s *EtcDDBSuite) TestSetUpTest(c *C) { func (s *EtcDDBSuite) TestSetUpTest(c *C) {
var err error 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) c.Assert(err, IsNil)
} }
@@ -155,3 +155,4 @@ func (s *EtcDDBSuite) TestTransactionCommit(c *C) {
_, err = transaction.Get(key) _, err = transaction.Get(key)
c.Assert(err, NotNil) c.Assert(err, NotNil)
} }
+15 -18
View File
@@ -33,8 +33,8 @@ func (s *EtcDStorage) applyPrefix(key []byte) []byte {
// Get key value from etcd // Get key value from etcd
func (s *EtcDStorage) Get(key []byte) (value []byte, err error) { func (s *EtcDStorage) Get(key []byte) (value []byte, err error) {
key = s.applyPrefix(key) realKey := s.applyPrefix(key)
getResp, err := s.db.Get(Ctx, string(key)) getResp, err := s.db.Get(Ctx, string(realKey))
if err != nil { if err != nil {
return 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 // 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) { func (s *EtcDStorage) Put(key []byte, value []byte) (err error) {
key = s.applyPrefix(key) realKey := s.applyPrefix(key)
_, err = s.db.Put(Ctx, string(key), string(value)) _, err = s.db.Put(Ctx, string(realKey), string(value))
if err != nil { if err != nil {
return return
} }
@@ -61,8 +61,8 @@ func (s *EtcDStorage) Put(key []byte, value []byte) (err error) {
// Delete removes key from etcd // Delete removes key from etcd
func (s *EtcDStorage) Delete(key []byte) (err error) { func (s *EtcDStorage) Delete(key []byte) (err error) {
key = s.applyPrefix(key) realKey := s.applyPrefix(key)
_, err = s.db.Delete(Ctx, string(key)) _, err = s.db.Delete(Ctx, string(realKey))
if err != nil { if err != nil {
return return
} }
@@ -71,9 +71,9 @@ func (s *EtcDStorage) Delete(key []byte) (err error) {
// KeysByPrefix returns all keys that start with prefix // KeysByPrefix returns all keys that start with prefix
func (s *EtcDStorage) KeysByPrefix(prefix []byte) [][]byte { func (s *EtcDStorage) KeysByPrefix(prefix []byte) [][]byte {
prefix = s.applyPrefix(prefix) realPrefix := s.applyPrefix(prefix)
result := make([][]byte, 0, 20) 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 { if err != nil {
return nil return nil
} }
@@ -88,9 +88,9 @@ func (s *EtcDStorage) KeysByPrefix(prefix []byte) [][]byte {
// FetchByPrefix returns all values with keys that start with prefix // FetchByPrefix returns all values with keys that start with prefix
func (s *EtcDStorage) FetchByPrefix(prefix []byte) [][]byte { func (s *EtcDStorage) FetchByPrefix(prefix []byte) [][]byte {
prefix = s.applyPrefix(prefix) realPrefix := s.applyPrefix(prefix)
result := make([][]byte, 0, 20) 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 { if err != nil {
return 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 // HasPrefix checks whether it can find any key with given prefix and returns true if one exists
func (s *EtcDStorage) HasPrefix(prefix []byte) bool { func (s *EtcDStorage) HasPrefix(prefix []byte) bool {
prefix = s.applyPrefix(prefix) realPrefix := s.applyPrefix(prefix)
getResp, err := s.db.Get(Ctx, string(prefix), clientv3.WithPrefix()) getResp, err := s.db.Get(Ctx, string(realPrefix), clientv3.WithPrefix())
if err != nil { if err != nil {
return false return false
} }
if getResp.Count != 0 { return getResp.Count > 0
return true
}
return false
} }
// ProcessByPrefix iterates through all entries where key starts with prefix and calls // ProcessByPrefix iterates through all entries where key starts with prefix and calls
// StorageProcessor on key value pair // StorageProcessor on key value pair
func (s *EtcDStorage) ProcessByPrefix(prefix []byte, proc database.StorageProcessor) error { func (s *EtcDStorage) ProcessByPrefix(prefix []byte, proc database.StorageProcessor) error {
prefix = s.applyPrefix(prefix) realPrefix := s.applyPrefix(prefix)
getResp, err := s.db.Get(Ctx, string(prefix), clientv3.WithPrefix()) getResp, err := s.db.Get(Ctx, string(realPrefix), clientv3.WithPrefix())
if err != nil { if err != nil {
return err return err
} }