Skip to content

Commit c636519

Browse files
Add context to KeyValueStore #934
Signed-off-by: Said Altury <[email protected]>
1 parent d8f7311 commit c636519

File tree

10 files changed

+114
-94
lines changed

10 files changed

+114
-94
lines changed

platform/fabric/core/generic/msp/idemix/provider.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,20 @@ const (
3838
)
3939

4040
type KVS interface {
41-
Exists(id string) bool
42-
Put(id string, state interface{}) error
43-
Get(id string, state interface{}) error
41+
Exists(ctx context.Context, id string) bool
42+
Put(ctx context.Context, id string, state interface{}) error
43+
Get(ctx context.Context, id string, state interface{}) error
44+
}
45+
46+
type kvsAdapter struct {
47+
kvs KVS
48+
}
49+
50+
func (k *kvsAdapter) Put(id string, state interface{}) error {
51+
return k.kvs.Put(context.Background(), id, state)
52+
}
53+
func (k *kvsAdapter) Get(id string, state interface{}) error {
54+
return k.kvs.Get(context.Background(), id, state)
4455
}
4556

4657
type Provider struct {
@@ -66,23 +77,23 @@ func NewProviderWithAnyPolicy(conf1 *m.MSPConfig, KVS KVS, sp mspdriver.SignerSe
6677
}
6778

6879
func NewProviderWithAnyPolicyAndCurve(conf1 *m.MSPConfig, KVS KVS, sp mspdriver.SignerService, curveID math.CurveID) (*Provider, error) {
69-
cryptoProvider, err := NewKSVBCCSP(KVS, curveID, false)
80+
cryptoProvider, err := NewKSVBCCSP(&kvsAdapter{KVS}, curveID, false)
7081
if err != nil {
7182
return nil, err
7283
}
7384
return NewProvider(conf1, sp, Any, cryptoProvider)
7485
}
7586

7687
func NewProviderWithSigType(conf1 *m.MSPConfig, KVS KVS, sp mspdriver.SignerService, sigType bccsp.SignatureType) (*Provider, error) {
77-
cryptoProvider, err := NewKSVBCCSP(KVS, math.FP256BN_AMCL, false)
88+
cryptoProvider, err := NewKSVBCCSP(&kvsAdapter{KVS}, math.FP256BN_AMCL, false)
7889
if err != nil {
7990
return nil, err
8091
}
8192
return NewProvider(conf1, sp, sigType, cryptoProvider)
8293
}
8394

8495
func NewProviderWithSigTypeAncCurve(conf1 *m.MSPConfig, KVS KVS, sp mspdriver.SignerService, sigType bccsp.SignatureType, curveID math.CurveID) (*Provider, error) {
85-
cryptoProvider, err := NewKSVBCCSP(KVS, curveID, false)
96+
cryptoProvider, err := NewKSVBCCSP(&kvsAdapter{KVS}, curveID, false)
8697
if err != nil {
8798
return nil, err
8899
}

platform/fabric/core/generic/msp/service.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ const (
3030
var logger = logging.MustGetLogger()
3131

3232
type KVS interface {
33-
Exists(id string) bool
34-
Put(id string, state interface{}) error
35-
Get(id string, state interface{}) error
33+
Exists(ctx context.Context, id string) bool
34+
Put(ctx context.Context, id string, state interface{}) error
35+
Get(ctx context.Context, id string, state interface{}) error
3636
}
3737

3838
type service struct {

platform/view/services/db/driver/driver.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ SPDX-License-Identifier: Apache-2.0
77
package driver
88

99
import (
10+
"context"
11+
1012
"github.com/hyperledger-labs/fabric-smart-client/platform/common/driver"
1113
"github.com/hyperledger-labs/fabric-smart-client/platform/common/utils/collections/iterators"
1214
"github.com/pkg/errors"
@@ -56,7 +58,7 @@ type KeyValueStore interface {
5658
// SetStates sets the given values for the given namespace, key, and version
5759
SetStates(namespace driver.Namespace, kvs map[driver.PKey]driver.UnversionedValue) map[driver.PKey]error
5860
// GetState gets the value and version for given namespace and key
59-
GetState(namespace driver.Namespace, key driver.PKey) (driver.UnversionedValue, error)
61+
GetState(ctx context.Context, namespace driver.Namespace, key driver.PKey) (driver.UnversionedValue, error)
6062
// DeleteState deletes the given namespace and key
6163
DeleteState(namespace driver.Namespace, key driver.PKey) error
6264
// DeleteStates deletes the given namespace and keys
@@ -65,10 +67,10 @@ type KeyValueStore interface {
6567
// startKey is included in the results and endKey is excluded. An empty startKey refers to the first available key
6668
// and an empty endKey refers to the last available key. For scanning all the keys, both the startKey and the endKey
6769
// can be supplied as empty strings. However, a full scan should be used judiciously for performance reasons.
68-
GetStateRangeScanIterator(namespace driver.Namespace, startKey, endKey driver.PKey) (iterators.Iterator[*driver.UnversionedRead], error)
70+
GetStateRangeScanIterator(ctx context.Context, namespace driver.Namespace, startKey, endKey driver.PKey) (iterators.Iterator[*driver.UnversionedRead], error)
6971
// GetStateSetIterator returns an iterator that contains all the values for the passed keys.
7072
// The order is not respected.
71-
GetStateSetIterator(ns driver.Namespace, keys ...driver.PKey) (iterators.Iterator[*driver.UnversionedRead], error)
73+
GetStateSetIterator(ctx context.Context, ns driver.Namespace, keys ...driver.PKey) (iterators.Iterator[*driver.UnversionedRead], error)
7274
// Close closes this persistence instance
7375
Close() error
7476
// BeginUpdate starts the session

platform/view/services/db/driver/notifier/persistence.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ SPDX-License-Identifier: Apache-2.0
77
package notifier
88

99
import (
10+
"context"
11+
1012
driver2 "github.com/hyperledger-labs/fabric-smart-client/platform/common/driver"
1113
"github.com/hyperledger-labs/fabric-smart-client/platform/common/utils/collections/iterators"
1214
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver"
@@ -93,16 +95,16 @@ func (db *UnversionedPersistenceNotifier) DeleteStates(namespace driver2.Namespa
9395
return errs
9496
}
9597

96-
func (db *UnversionedPersistenceNotifier) GetState(namespace driver2.Namespace, key driver2.PKey) (driver2.RawValue, error) {
97-
return db.Persistence.GetState(namespace, key)
98+
func (db *UnversionedPersistenceNotifier) GetState(ctx context.Context, namespace driver2.Namespace, key driver2.PKey) (driver2.RawValue, error) {
99+
return db.Persistence.GetState(ctx, namespace, key)
98100
}
99101

100-
func (db *UnversionedPersistenceNotifier) GetStateRangeScanIterator(namespace driver2.Namespace, startKey, endKey driver2.PKey) (iterators.Iterator[*driver.UnversionedRead], error) {
101-
return db.Persistence.GetStateRangeScanIterator(namespace, startKey, endKey)
102+
func (db *UnversionedPersistenceNotifier) GetStateRangeScanIterator(ctx context.Context, namespace driver2.Namespace, startKey, endKey driver2.PKey) (iterators.Iterator[*driver.UnversionedRead], error) {
103+
return db.Persistence.GetStateRangeScanIterator(ctx, namespace, startKey, endKey)
102104
}
103105

104-
func (db *UnversionedPersistenceNotifier) GetStateSetIterator(ns driver2.Namespace, keys ...driver2.PKey) (iterators.Iterator[*driver.UnversionedRead], error) {
105-
return db.Persistence.GetStateSetIterator(ns, keys...)
106+
func (db *UnversionedPersistenceNotifier) GetStateSetIterator(ctx context.Context, ns driver2.Namespace, keys ...driver2.PKey) (iterators.Iterator[*driver.UnversionedRead], error) {
107+
return db.Persistence.GetStateSetIterator(ctx, ns, keys...)
106108
}
107109

108110
func (db *UnversionedPersistenceNotifier) Close() error { return db.Persistence.Close() }

platform/view/services/db/driver/sql/common/bench.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ SPDX-License-Identifier: Apache-2.0
77
package common
88

99
import (
10+
"context"
1011
"fmt"
1112
"math"
1213
"testing"
@@ -29,7 +30,7 @@ func ReadExisting(b *testing.B, db driver.KeyValueStore) {
2930
var v []byte
3031
b.ResetTimer()
3132
for i := 0; i < b.N; i++ {
32-
vv, _ := db.GetState(namespace, key)
33+
vv, _ := db.GetState(context.Background(), namespace, key)
3334
v = vv
3435
}
3536
b.StopTimer()
@@ -42,7 +43,7 @@ func ReadNonExisting(b *testing.B, db driver.KeyValueStore) {
4243
var v []byte
4344
b.ResetTimer()
4445
for i := 0; i < b.N; i++ {
45-
vv, _ := db.GetState(namespace, key)
46+
vv, _ := db.GetState(context.Background(), namespace, key)
4647
v = vv
4748
}
4849
b.StopTimer()

0 commit comments

Comments
 (0)