Skip to content

Remove static drivers for DB #615

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions platform/common/core/generic/vault/db/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,16 @@ import (
"github.com/hyperledger-labs/fabric-smart-client/platform/common/core/generic/vault/txidstore/mocks"
"github.com/hyperledger-labs/fabric-smart-client/platform/common/utils"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db"
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/sql"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/badger"
mem "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/memory"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/sql"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/sql/common"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/sql/postgres"
"github.com/pkg/errors"
)

type opener[V any] func(driverName, dataSourceName string, config db.Config) (V, error)
type opener[V any] func(driver driver.Driver, dataSourceName string, config db.Config) (V, error)

func OpenMemoryVersioned() (*db.VersionedPersistence, error) {
return openMemory[*db.VersionedPersistence](db.OpenVersioned)
Expand All @@ -30,7 +33,7 @@ func OpenMemory() (*db.UnversionedPersistence, error) {
}

func openMemory[V any](open opener[V]) (V, error) {
return open("memory", "", nil)
return open(&mem.Driver{}, "", nil)
}

func OpenBadgerVersioned(tempDir, dir string) (*db.VersionedPersistence, error) {
Expand All @@ -44,7 +47,7 @@ func openBadger[V any](tempDir, dir string, open opener[V]) (V, error) {
c := &mocks.Config{}
c.UnmarshalKeyReturns(nil)
c.IsSetReturns(false)
return open("badger", filepath.Join(tempDir, dir), c)
return open(&badger.Driver{}, filepath.Join(tempDir, dir), c)
}

type dbConfig common.Opts
Expand Down Expand Up @@ -75,7 +78,7 @@ func openSqlite[V any](key, tempDir string, open opener[V]) (V, error) {
MaxOpenConns: 0,
SkipPragmas: false,
}
return open("sql", "test_table", conf)
return open(&sql.Driver{}, "test_table", conf)
}

func OpenPostgresVersioned(name string) (*db.VersionedPersistence, func(), error) {
Expand All @@ -97,6 +100,6 @@ func openPostgres[V any](name string, open opener[V]) (V, func(), error) {
if err != nil {
return utils.Zero[V](), func() {}, err
}
persistence, err := open("sql", "test_table", conf)
persistence, err := open(&sql.Driver{}, "test_table", conf)
return persistence, terminate, err
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ import (

"github.com/hyperledger-labs/fabric-smart-client/platform/common/core/generic/vault/db"
"github.com/hyperledger-labs/fabric-smart-client/platform/common/driver"
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/badger"
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/memory"
"github.com/pkg/errors"
"github.com/test-go/testify/assert"
"golang.org/x/exp/slices"
Expand Down
2 changes: 0 additions & 2 deletions platform/common/core/generic/vault/vault_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ import (
"github.com/hyperledger-labs/fabric-smart-client/platform/common/utils/collections"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/cache/secondcache"
db2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db"
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/badger"
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/memory"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging"
"github.com/stretchr/testify/assert"
"golang.org/x/exp/slices"
Expand Down
14 changes: 8 additions & 6 deletions platform/fabric/core/generic/channelprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/core/generic/transaction"
"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/core/generic/vault"
"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/driver"
driver2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/events"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/hash"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kvs"
Expand All @@ -26,18 +27,18 @@ import (
"go.opentelemetry.io/otel/trace"
)

type VaultConstructor = func(configService driver.ConfigService, channel string) (*vault.Vault, driver.TXIDStore, error)
type VaultConstructor = func(configService driver.ConfigService, channel string, drivers []driver2.NamedDriver) (*vault.Vault, driver.TXIDStore, error)

type Provider interface {
NewChannel(nw driver.FabricNetworkService, name string, quiet bool) (driver.Channel, error)
}

func NewProvider(kvss *kvs.KVS, publisher events.Publisher, hasher hash.Hasher, tracerProvider trace.TracerProvider) Provider {
return NewProviderWithVault(kvss, publisher, hasher, tracerProvider, vault.New)
func NewProvider(kvss *kvs.KVS, publisher events.Publisher, hasher hash.Hasher, tracerProvider trace.TracerProvider, drivers []driver2.NamedDriver) Provider {
return NewProviderWithVault(kvss, publisher, hasher, tracerProvider, drivers, vault.New)
}

func NewProviderWithVault(kvss *kvs.KVS, publisher events.Publisher, hasher hash.Hasher, tracerProvider trace.TracerProvider, newVault VaultConstructor) *provider {
return &provider{kvss: kvss, publisher: publisher, hasher: hasher, newVault: newVault, tracerProvider: tracerProvider}
func NewProviderWithVault(kvss *kvs.KVS, publisher events.Publisher, hasher hash.Hasher, tracerProvider trace.TracerProvider, drivers []driver2.NamedDriver, newVault VaultConstructor) *provider {
return &provider{kvss: kvss, publisher: publisher, hasher: hasher, newVault: newVault, tracerProvider: tracerProvider, drivers: drivers}
}

type provider struct {
Expand All @@ -46,6 +47,7 @@ type provider struct {
hasher hash.Hasher
newVault VaultConstructor
tracerProvider trace.TracerProvider
drivers []driver2.NamedDriver
}

func (p *provider) NewChannel(nw driver.FabricNetworkService, channelName string, quiet bool) (driver.Channel, error) {
Expand All @@ -56,7 +58,7 @@ func (p *provider) NewChannel(nw driver.FabricNetworkService, channelName string
}

// Vault
vault, txIDStore, err := p.newVault(nw.ConfigService(), channelName)
vault, txIDStore, err := p.newVault(nw.ConfigService(), channelName, p.drivers)
if err != nil {
return nil, err
}
Expand Down
4 changes: 2 additions & 2 deletions platform/fabric/core/generic/id/info_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import (
"testing"

"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/core/generic/sig"
mem "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/memory"

idemix2 "github.com/hyperledger-labs/fabric-smart-client/platform/fabric/core/generic/msp/idemix"
x5092 "github.com/hyperledger-labs/fabric-smart-client/platform/fabric/core/generic/msp/x509"
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/memory"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kvs"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kvs/mock"
registry2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/registry"
Expand All @@ -25,7 +25,7 @@ import (
func TestInfoIdemix(t *testing.T) {
registry := registry2.New()

kvss, err := kvs.NewWithConfig("memory", "", &mock.ConfigProvider{})
kvss, err := kvs.NewWithConfig(&mem.Driver{}, "", &mock.ConfigProvider{})
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
sigService := sig.NewService(sig.NewMultiplexDeserializer(), kvss)
Expand Down
16 changes: 8 additions & 8 deletions platform/fabric/core/generic/msp/idemix/provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
idemix2 "github.com/hyperledger-labs/fabric-smart-client/platform/fabric/core/generic/msp/idemix"
sig2 "github.com/hyperledger-labs/fabric-smart-client/platform/fabric/core/generic/sig"
driver2 "github.com/hyperledger-labs/fabric-smart-client/platform/fabric/driver"
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/memory"
mem "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/memory"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kvs"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kvs/mock"
registry2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/registry"
Expand All @@ -26,7 +26,7 @@ import (
func TestProvider(t *testing.T) {
registry := registry2.New()

kvss, err := kvs.NewWithConfig("memory", "", &mock.ConfigProvider{})
kvss, err := kvs.NewWithConfig(&mem.Driver{}, "", &mock.ConfigProvider{})
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
sigService := sig2.NewService(sig2.NewMultiplexDeserializer(), kvss)
Expand All @@ -51,7 +51,7 @@ func TestProvider(t *testing.T) {
func TestIdentityWithEidRhNymPolicy(t *testing.T) {
registry := registry2.New()

kvss, err := kvs.NewWithConfig("memory", "", &mock.ConfigProvider{})
kvss, err := kvs.NewWithConfig(&mem.Driver{}, "", &mock.ConfigProvider{})
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
sigService := sig2.NewService(sig2.NewMultiplexDeserializer(), kvss)
Expand Down Expand Up @@ -116,7 +116,7 @@ func TestIdentityWithEidRhNymPolicy(t *testing.T) {
func TestIdentityStandard(t *testing.T) {
registry := registry2.New()

kvss, err := kvs.NewWithConfig("memory", "", &mock.ConfigProvider{})
kvss, err := kvs.NewWithConfig(&mem.Driver{}, "", &mock.ConfigProvider{})
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
sigService := sig2.NewService(sig2.NewMultiplexDeserializer(), kvss)
Expand Down Expand Up @@ -183,7 +183,7 @@ func TestIdentityStandard(t *testing.T) {
func TestAuditWithEidRhNymPolicy(t *testing.T) {
registry := registry2.New()

kvss, err := kvs.NewWithConfig("memory", "", &mock.ConfigProvider{})
kvss, err := kvs.NewWithConfig(&mem.Driver{}, "", &mock.ConfigProvider{})
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
sigService := sig2.NewService(sig2.NewMultiplexDeserializer(), kvss)
Expand Down Expand Up @@ -225,7 +225,7 @@ func TestAuditWithEidRhNymPolicy(t *testing.T) {
func TestProvider_DeserializeSigner(t *testing.T) {
registry := registry2.New()

kvss, err := kvs.NewWithConfig("memory", "", &mock.ConfigProvider{})
kvss, err := kvs.NewWithConfig(&mem.Driver{}, "", &mock.ConfigProvider{})
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
sigService := sig2.NewService(sig2.NewMultiplexDeserializer(), kvss)
Expand Down Expand Up @@ -281,7 +281,7 @@ func TestProvider_DeserializeSigner(t *testing.T) {
func TestIdentityFromFabricCA(t *testing.T) {
registry := registry2.New()

kvss, err := kvs.NewWithConfig("memory", "", &mock.ConfigProvider{})
kvss, err := kvs.NewWithConfig(&mem.Driver{}, "", &mock.ConfigProvider{})
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
sigService := sig2.NewService(sig2.NewMultiplexDeserializer(), kvss)
Expand Down Expand Up @@ -348,7 +348,7 @@ func TestIdentityFromFabricCA(t *testing.T) {
func TestIdentityFromFabricCAWithEidRhNymPolicy(t *testing.T) {
registry := registry2.New()

kvss, err := kvs.NewWithConfig("memory", "", &mock.ConfigProvider{})
kvss, err := kvs.NewWithConfig(&mem.Driver{}, "", &mock.ConfigProvider{})
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
sigService := sig2.NewService(sig2.NewMultiplexDeserializer(), kvss)
Expand Down
12 changes: 6 additions & 6 deletions platform/fabric/core/generic/msp/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/core/generic/msp/driver/mock"
"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/core/generic/sig"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/core/config"
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/memory"
mem "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/memory"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kvs"
registry2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/registry"
"github.com/otiai10/copy"
Expand All @@ -28,7 +28,7 @@ func TestRegisterIdemixLocalMSP(t *testing.T) {
cp := &mock.ConfigProvider{}
cp.IsSetReturns(false)
assert.NoError(t, registry.RegisterService(cp))
kvss, err := kvs.New(registry, "memory", "")
kvss, err := kvs.New(registry, &mem.Driver{}, "")
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
des := sig.NewMultiplexDeserializer()
Expand Down Expand Up @@ -58,7 +58,7 @@ func TestIdemixTypeFolder(t *testing.T) {
cp, err := config.NewProvider("./testdata/idemixtypefolder")
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(cp))
kvss, err := kvs.New(registry, "memory", "")
kvss, err := kvs.New(registry, &mem.Driver{}, "")
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
des := sig.NewMultiplexDeserializer()
Expand All @@ -84,7 +84,7 @@ func TestRegisterX509LocalMSP(t *testing.T) {
cp := &mock.ConfigProvider{}
cp.IsSetReturns(false)
assert.NoError(t, registry.RegisterService(cp))
kvss, err := kvs.New(registry, "memory", "")
kvss, err := kvs.New(registry, &mem.Driver{}, "")
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
des := sig.NewMultiplexDeserializer()
Expand Down Expand Up @@ -113,7 +113,7 @@ func TestX509TypeFolder(t *testing.T) {
cp, err := config.NewProvider("./testdata/x509typefolder")
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(cp))
kvss, err := kvs.New(registry, "memory", "")
kvss, err := kvs.New(registry, &mem.Driver{}, "")
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
des := sig.NewMultiplexDeserializer()
Expand All @@ -139,7 +139,7 @@ func TestRefresh(t *testing.T) {
cp, err := config.NewProvider("./testdata/x509typefolder")
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(cp))
kvss, err := kvs.New(registry, "memory", "")
kvss, err := kvs.New(registry, &mem.Driver{}, "")
assert.NoError(t, err)
assert.NoError(t, registry.RegisterService(kvss))
des := sig.NewMultiplexDeserializer()
Expand Down
20 changes: 13 additions & 7 deletions platform/fabric/core/generic/vault/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,26 @@ import (
"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/driver"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/cache/secondcache"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db"
driver2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging"
"github.com/pkg/errors"
)

var logger = flogging.MustGetLogger("fabric-sdk.core.vault")

func New(configService driver.ConfigService, channel string) (*Vault, driver.TXIDStore, error) {
logger.Debugf("new fabric vault for channel [%s] with config [%v]", channel, configService)
pType := configService.VaultPersistenceType()
if pType == "file" {
// for retro compatibility
pType = "badger"
func New(configService driver.ConfigService, channel string, drivers []driver2.NamedDriver) (*Vault, driver.TXIDStore, error) {
var d driver2.Driver
for _, driver := range drivers {
if string(driver.Name) == configService.VaultPersistenceType() {
d = driver.Driver
break
}
}
if d == nil {
return nil, nil, errors.Errorf("failed getting driver [%s]", configService.VaultPersistenceType())
}
persistence, err := db.OpenVersioned(pType, db.EscapeForTableName(configService.NetworkName(), channel), db.NewPrefixConfig(configService, configService.VaultPersistencePrefix()))
logger.Debugf("new fabric vault for channel [%s] with config [%v]", channel, configService)
persistence, err := db.OpenVersioned(d, db.EscapeForTableName(configService.NetworkName(), channel), db.NewPrefixConfig(configService, configService.VaultPersistencePrefix()))
if err != nil {
return nil, nil, errors.Wrapf(err, "failed creating vault")
}
Expand Down
2 changes: 0 additions & 2 deletions platform/fabric/core/generic/vault/vault_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ import (
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/cache/secondcache"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db"
dbdriver "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver"
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/badger"
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/memory"
"github.com/stretchr/testify/assert"
"golang.org/x/exp/slices"
)
Expand Down
12 changes: 10 additions & 2 deletions platform/fabric/sdk/dig/providers.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
driver4 "github.com/hyperledger-labs/fabric-smart-client/platform/fabric/sdk/driver"
"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/sdk/identity"
driver2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/driver"
driver5 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/events"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/hash"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kvs"
Expand All @@ -32,8 +33,15 @@ type channelProviderResult struct {
generic.Provider `name:"generic"`
}

func NewChannelProvider(kvss *kvs.KVS, publisher events.Publisher, hasher hash.Hasher, tracerProvider trace.TracerProvider) channelProviderResult {
return channelProviderResult{Provider: generic.NewProvider(kvss, publisher, hasher, tracerProvider)}
func NewChannelProvider(in struct {
dig.In
KVS *kvs.KVS
Publisher events.Publisher
Hasher hash.Hasher
TracerProvider trace.TracerProvider
Drivers []driver5.NamedDriver `group:"db-drivers"`
}) channelProviderResult {
return channelProviderResult{Provider: generic.NewProvider(in.KVS, in.Publisher, in.Hasher, in.TracerProvider, in.Drivers)}
}

type ChannelHandlerProviderResult struct {
Expand Down
23 changes: 21 additions & 2 deletions platform/orion/core/generic/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import (
"github.com/hyperledger-labs/fabric-smart-client/platform/orion/core/generic/transaction"
"github.com/hyperledger-labs/fabric-smart-client/platform/orion/driver"
view2 "github.com/hyperledger-labs/fabric-smart-client/platform/view"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db"
driver2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/events"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging"
"github.com/hyperledger-labs/orion-server/pkg/types"
Expand Down Expand Up @@ -86,7 +88,7 @@ func NewDB(ctx context.Context, sp view2.ServiceProvider, config *config2.Config
return n, nil
}

func NewNetwork(ctx context.Context, sp view2.ServiceProvider, config *config2.Config, name string) (*network, error) {
func NewNetwork(ctx context.Context, sp view2.ServiceProvider, config *config2.Config, name string, drivers []driver2.NamedDriver) (*network, error) {
// Load configuration
n := &network{
ctx: ctx,
Expand Down Expand Up @@ -118,7 +120,24 @@ func NewNetwork(ctx context.Context, sp view2.ServiceProvider, config *config2.C
n.envelopeService = transaction.NewEnvelopeService(sp, name)
n.transactionManager = transaction.NewManager(sp, n.sessionManager)
n.transactionService = transaction.NewEndorseTransactionService(sp, name)
n.vault, err = NewVault(n.config, n, name)

var d driver2.Driver
for _, driver := range drivers {
if string(driver.Name) == n.config.VaultPersistenceType() {
d = driver.Driver
break
}
}
if d == nil {
return nil, errors.Errorf("driver %s not found in config", n.config.VaultPersistenceType())
}

persistence, err := db.OpenVersioned(d, name, db.NewPrefixConfig(n.config, n.config.VaultPersistencePrefix()))
if err != nil {
return nil, errors.Wrapf(err, "failed creating vault")
}

n.vault, err = NewVault(n, persistence)
if err != nil {
return nil, errors.WithMessage(err, "failed to create vault")
}
Expand Down
Loading
Loading