Skip to content
Open
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
2 changes: 1 addition & 1 deletion docs/platform/view/db-driver.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ However, they all share one common interface such as the following:
type BindingStore interface {
GetLongTerm(ephemeral view.Identity) (view.Identity, error)
HaveSameBinding(this, that view.Identity) (bool, error)
PutBinding(ephemeral, longTerm view.Identity) error
PutBindings(longTerm view.Identity, ephemeral ...view.Identity) error
}

type AuditInfoStore interface {
Expand Down
2 changes: 1 addition & 1 deletion platform/common/driver/kvs.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ type AuditInfoStore interface {
type BindingStore interface {
GetLongTerm(ctx context.Context, ephemeral view.Identity) (view.Identity, error)
HaveSameBinding(ctx context.Context, this, that view.Identity) (bool, error)
PutBinding(ctx context.Context, ephemeral, longTerm view.Identity) error
PutBindings(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
}

type MetadataStore[K any, M any] interface {
Expand Down
2 changes: 1 addition & 1 deletion platform/fabric/core/generic/endpoint/resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func (r *Resolver) GetIdentity() (view.Identity, error) {
}

type Service interface {
Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error
Bind(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
AddResolver(name string, domain string, addresses map[string]string, aliases []string, id []byte) (view.Identity, error)
AddPublicKeyExtractor(extractor endpoint.PublicKeyExtractor) error
}
Expand Down
2 changes: 1 addition & 1 deletion platform/fabric/core/generic/msp/driver/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ type SignerService interface {
}

type BinderService interface {
Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error
Bind(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
GetIdentity(label string, pkiID []byte) (view.Identity, error)
}

Expand Down
4 changes: 3 additions & 1 deletion platform/fabric/core/generic/ordering/bft.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,9 @@ func (o *BFTBroadcaster) getConnection(ctx context.Context, to *grpc.ConnectionC
return nil, errors.Wrapf(err, "failed to new a broadcast, rpcStatus=%+v", rpcStatus)
}

stream, err := oClient.Broadcast(ctx)
// Get the broadcast stream to receive a reply of Acknowledgement for each common.Envelope in order, indicating success or type of failure.
// Notice that this stream is shared, therefore its context must be something different from the context of the current broadcast request
stream, err := oClient.Broadcast(context.Background())
if err != nil {
client.Close()
return nil, errors.Wrapf(err, "failed creating orderer stream for %s", to.Address)
Expand Down
4 changes: 3 additions & 1 deletion platform/fabric/core/generic/ordering/cft.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,9 @@ func (o *CFTBroadcaster) getConnection(ctx context.Context) (*Connection, error)
return nil, errors.Wrapf(err, "failed to new a broadcast for %s, rpcStatus=%+v", to.Address, rpcStatus)
}

stream, err := oClient.Broadcast(ctx)
// Get the broadcast stream to receive a reply of Acknowledgement for each common.Envelope in order, indicating success or type of failure.
// Notice that this stream is shared, therefore its context must be something different from the context of the current broadcast request
stream, err := oClient.Broadcast(context.Background())
if err != nil {
client.Close()
return nil, errors.Wrapf(err, "failed creating orderer stream for %s", to.Address)
Expand Down
2 changes: 1 addition & 1 deletion platform/fabric/sdk/dig/sdk_test.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright IBM Corp All Rights Reserved.
Copyright IBM Corp. All Rights Reserved.

SPDX-License-Identifier: Apache-2.0
*/
Expand Down
2 changes: 1 addition & 1 deletion platform/view/sdk/dig/support/endpoint/resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ type IdentityService interface {
}

type Backend interface {
Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error
Bind(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
AddResolver(name string, domain string, addresses map[string]string, aliases []string, id []byte) (view.Identity, error)
}

Expand Down
86 changes: 40 additions & 46 deletions platform/view/services/endpoint/mock/binding_store.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 11 additions & 9 deletions platform/view/services/endpoint/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,18 +146,20 @@ func (r *Service) GetResolver(ctx context.Context, id view.Identity) (*Resolver,
return r.resolver(ctx, id)
}

func (r *Service) Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error {
if longTerm.Equal(ephemeral) {
logger.DebugfContext(ctx, "cannot bind [%s] to [%s], they are the same", longTerm, ephemeral)
func (r *Service) Bind(ctx context.Context, longTerm view.Identity, ephemeralIDs ...view.Identity) error {
// filter out any identities equal to the longTerm identity
var toBind []view.Identity
for _, id := range ephemeralIDs {
if !longTerm.Equal(id) {
toBind = append(toBind, id)
}
}
if len(toBind) == 0 {
return nil
}

logger.DebugfContext(ctx, "bind [%s] to [%s]", ephemeral, longTerm)

if err := r.bindingKVS.PutBinding(ctx, ephemeral, longTerm); err != nil {
return errors.WithMessagef(err, "failed storing binding of [%s] to [%s]", ephemeral.UniqueID(), longTerm.UniqueID())
if err := r.bindingKVS.PutBindings(ctx, longTerm, toBind...); err != nil {
return errors.WithMessagef(err, "failed storing bindings")
}

return nil
}

Expand Down
10 changes: 6 additions & 4 deletions platform/view/services/endpoint/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ func (k mockKVS) GetLongTerm(ctx context.Context, ephemeral view.Identity) (view
func (k mockKVS) HaveSameBinding(ctx context.Context, this, that view.Identity) (bool, error) {
return false, nil
}
func (k mockKVS) PutBinding(ctx context.Context, ephemeral, longTerm view.Identity) error { return nil }
func (k mockKVS) PutBindings(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error {
return nil
}

type mockExtractor struct{}

Expand Down Expand Up @@ -58,7 +60,7 @@ func TestPKIResolveConcurrency(t *testing.T) {
func TestGetIdentity(t *testing.T) {
// setup
bindingStore := &mock.BindingStore{}
bindingStore.PutBindingReturns(nil)
bindingStore.PutBindingsReturns(nil)

service, err := endpoint.NewService(bindingStore)
require.NoError(t, err)
Expand All @@ -73,7 +75,7 @@ func TestGetIdentity(t *testing.T) {
require.NoError(t, err)
resolvers := service.Resolvers()
assert.Len(t, resolvers, 1)
assert.Equal(t, 0, bindingStore.PutBindingCallCount())
assert.Equal(t, 0, bindingStore.PutBindingsCallCount())

_, err = service.AddResolver(
"alice",
Expand All @@ -85,7 +87,7 @@ func TestGetIdentity(t *testing.T) {
require.NoError(t, err)
resolvers = service.Resolvers()
assert.Len(t, resolvers, 1)
assert.Equal(t, 1, bindingStore.PutBindingCallCount())
assert.Equal(t, 1, bindingStore.PutBindingsCallCount())

err = service.AddPublicKeyExtractor(ext)
require.NoError(t, err)
Expand Down
6 changes: 0 additions & 6 deletions platform/view/services/id/mock/config_provider.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 16 additions & 16 deletions platform/view/services/id/mock/sig_service.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading