Skip to content
This repository was archived by the owner on Apr 25, 2025. It is now read-only.

Commit 50f07dd

Browse files
committed
[FAB-9598] Store config block number
This ensures that the membership reference is only recreated when the config block changes Change-Id: Iae78c50c8e12955e68d004c358b7d79d0e676561 Signed-off-by: Divyank Katira <Divyank.Katira@securekey.com>
1 parent 95c8574 commit 50f07dd

File tree

4 files changed

+22
-15
lines changed

4 files changed

+22
-15
lines changed

pkg/common/errors/status/status.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,17 @@ const (
7979

8080
// GroupName maps the groups in this packages to human-readable strings
8181
var GroupName = map[int32]string{
82-
0: "Unknown",
83-
1: "gRPC Transport Status",
84-
2: "HTTP Transport Status",
85-
3: "Endorser Server Status",
86-
4: "Event Server Status",
87-
5: "Orderer Server Status",
88-
6: "Fabric CA Server Status",
89-
7: "Endorser Client Status",
90-
8: "Orderer Client Status",
91-
9: "Client Status",
82+
0: "Unknown",
83+
1: "gRPC Transport Status",
84+
2: "HTTP Transport Status",
85+
3: "Endorser Server Status",
86+
4: "Event Server Status",
87+
5: "Orderer Server Status",
88+
6: "Fabric CA Server Status",
89+
7: "Endorser Client Status",
90+
8: "Orderer Client Status",
91+
9: "Client Status",
92+
10: "Chaincode status",
9293
}
9394

9495
func (g Group) String() string {

pkg/fab/channel/membership/cache_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/hyperledger/fabric-sdk-go/pkg/util/concurrent/lazyref"
1818
mb "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/msp"
1919
"github.com/stretchr/testify/assert"
20+
"github.com/stretchr/testify/require"
2021
)
2122

2223
type badKey struct {
@@ -30,9 +31,11 @@ func (b *badKey) String() string {
3031
func TestMembershipCache(t *testing.T) {
3132
testChannelID := "test"
3233
goodMSPID := "GoodMSP"
34+
testBlockNum := uint64(5)
3335

3436
cfg := mocks.NewMockChannelCfg(testChannelID)
3537
cfg.MockMSPs = []*mb.MSPConfig{buildMSPConfig(goodMSPID, []byte(validRootCA))}
38+
cfg.MockBlockNumber = testBlockNum
3639

3740
ctx := mocks.NewMockProviderContext()
3841

@@ -50,8 +53,8 @@ func TestMembershipCache(t *testing.T) {
5053
assert.Nil(t, err)
5154
assert.NotNil(t, r)
5255

53-
mem, ok := r.(fab.ChannelMembership)
54-
assert.True(t, ok)
56+
mem, ok := r.(*Ref)
57+
require.True(t, ok)
5558

5659
sID := &mb.SerializedIdentity{Mspid: goodMSPID, IdBytes: []byte(certPem)}
5760
goodEndorser, err := proto.Marshal(sID)
@@ -62,6 +65,8 @@ func TestMembershipCache(t *testing.T) {
6265

6366
err = mem.Verify(goodEndorser, []byte("test"), []byte("test1"))
6467
assert.Nil(t, err)
68+
69+
assert.Equal(t, testBlockNum, mem.configBlockNumber)
6570
}
6671

6772
func TestMembershipCacheBad(t *testing.T) {

pkg/fab/channel/membership/reference.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,12 @@ func (ref *Ref) initializer() lazyref.Initializer {
8282

8383
// Membership is refreshed only if we have a newer config block
8484
if ref.mem == nil || cfg.BlockNumber() > ref.configBlockNumber {
85-
logger.Debugf("Creating membership...")
85+
logger.Debugf("Creating membership for channel [%s]...", cfg.ID())
8686
ref.mem, err = New(ref.context, cfg)
8787
if err != nil {
8888
return nil, err
8989
}
90+
ref.configBlockNumber = cfg.BlockNumber()
9091
}
9192

9293
return ref.mem, nil

pkg/fab/endpointconfig.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ const (
4747
defaultResMgmtTimeout = time.Minute * 3
4848
defaultConnIdleInterval = time.Second * 30
4949
defaultEventServiceIdleInterval = time.Minute * 2
50-
defaultChannelConfigRefreshInterval = time.Minute * 30
51-
defaultChannelMemshpRefreshInterval = time.Second * 30
50+
defaultChannelConfigRefreshInterval = time.Minute * 90
51+
defaultChannelMemshpRefreshInterval = time.Second * 60
5252

5353
defaultCacheSweepInterval = time.Second * 15
5454
)

0 commit comments

Comments
 (0)