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
7 changes: 3 additions & 4 deletions core/chaincode/platforms/util/writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"os"
"path"
"path/filepath"
"slices"
"strings"
"time"

Expand All @@ -37,10 +38,8 @@ func WriteFolderToTarPackage(tw *tar.Writer, srcPath string, excludeDirs []strin
}

if info.Mode().IsDir() {
for _, excluded := range append(excludeDirs, ".git") {
if info.Name() == excluded {
return filepath.SkipDir
}
if slices.Contains(append(excludeDirs, ".git"), info.Name()) {
return filepath.SkipDir
}
return nil
}
Expand Down
6 changes: 3 additions & 3 deletions core/common/privdata/membershipinfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,19 @@ func NewMembershipInfoProvider(mspID string, selfSignedData protoutil.SignedData

// AmMemberOf checks whether the current peer is a member of the given collection config.
// It is used when a chaincode is upgraded to see if the peer's org has become eligible after a collection change.
func (m *MembershipProvider) AmMemberOf(channelName string, collectionPolicyConfig *peer.CollectionPolicyConfig) (bool, error) {
func (m *MembershipProvider) AmMemberOf(channelName string, collectionPolicyConfig *peer.CollectionPolicyConfig) bool {
deserializer := m.IdentityDeserializerFactory(channelName)

// Do a simple check to see if the mspid matches any principal identities in the SignaturePolicy - FAB-17059
if collectionPolicyConfig.GetSignaturePolicy() == nil {
logger.Warningf("collection membership policy is nil")
return false, nil
return false
}

memberOrgs := getMemberOrgs(collectionPolicyConfig.GetSignaturePolicy().GetIdentities(), deserializer)

_, ok := memberOrgs[m.mspID]
return ok, nil
return ok
}

func (m *MembershipProvider) MyImplicitCollectionName() string {
Expand Down
16 changes: 6 additions & 10 deletions core/common/privdata/membershipinfo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,25 +32,21 @@ func TestMembershipInfoProvider(t *testing.T) {

// verify membership provider pass simple check returns true
membershipProvider := NewMembershipInfoProvider(mspID, emptyPeerSelfSignedData, identityDeserializer)
res, err := membershipProvider.AmMemberOf("test1", getAccessPolicy([]string{"peer0", "peer1"}))
res := membershipProvider.AmMemberOf("test1", getAccessPolicy([]string{"peer0", "peer1"}))
require.True(t, res)
require.Nil(t, err)

// verify membership provider fall back to default access policy evaluation returns false
membershipProvider = NewMembershipInfoProvider(mspID, peerSelfSignedData, identityDeserializer)
res, err = membershipProvider.AmMemberOf("test1", getAccessPolicy([]string{"peer2", "peer3"}))
res = membershipProvider.AmMemberOf("test1", getAccessPolicy([]string{"peer2", "peer3"}))
require.False(t, res)
require.Nil(t, err)

// verify membership provider returns false and nil when collection policy config is nil
res, err = membershipProvider.AmMemberOf("test1", nil)
// verify membership provider returns false when collection policy config is nil
res = membershipProvider.AmMemberOf("test1", nil)
require.False(t, res)
require.Nil(t, err)

// verify membership provider returns false and nil when collection policy config is invalid
res, err = membershipProvider.AmMemberOf("test1", getBadAccessPolicy([]string{"signer0"}, 1))
// verify membership provider returns false when collection policy config is invalid
res = membershipProvider.AmMemberOf("test1", getBadAccessPolicy([]string{"signer0"}, 1))
require.False(t, res)
require.Nil(t, err)
}

func TestMyImplicitCollectionName(t *testing.T) {
Expand Down
12 changes: 2 additions & 10 deletions core/container/externalbuilder/externalbuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"os/exec"
"path/filepath"
"regexp"
"slices"
"time"

"github.com/hyperledger/fabric-lib-go/common/flogging"
Expand Down Expand Up @@ -410,18 +411,9 @@ func (b *Builder) NewCommand(name string, args ...string) *exec.Cmd {

func appendDefaultPropagateEnvironment(propagateEnvironment []string) []string {
for _, variable := range DefaultPropagateEnvironment {
if !contains(propagateEnvironment, variable) {
if !slices.Contains(propagateEnvironment, variable) {
propagateEnvironment = append(propagateEnvironment, variable)
}
}
return propagateEnvironment
}

func contains(propagateEnvironment []string, key string) bool {
for _, variable := range propagateEnvironment {
if key == variable {
return true
}
}
return false
}
8 changes: 4 additions & 4 deletions core/ledger/kvledger/coll_elg_notifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,11 +129,11 @@ func (n *collElgNotifier) elgEnabledCollNames(ledgerID string,

// elgEnabled returns true if the peer is not eligible for a collection as per 'existingPolicy' and is eligible as per 'postCommitPolicy'
func (n *collElgNotifier) elgEnabled(ledgerID string, existingPolicy, postCommitPolicy *peer.CollectionPolicyConfig) (bool, error) {
existingMember, err := n.membershipInfoProvider.AmMemberOf(ledgerID, existingPolicy)
if err != nil || existingMember {
return false, err
existingMember := n.membershipInfoProvider.AmMemberOf(ledgerID, existingPolicy)
if existingMember {
return false, nil
}
return n.membershipInfoProvider.AmMemberOf(ledgerID, postCommitPolicy)
return n.membershipInfoProvider.AmMemberOf(ledgerID, postCommitPolicy), nil
}

func extractPublicUpdates(stateUpdates ledger.StateUpdates) map[string][]*kvrwset.KVWrite {
Expand Down
4 changes: 2 additions & 2 deletions core/ledger/kvledger/coll_elg_notifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ func TestCollElgNotifier(t *testing.T) {
}, nil)

mockMembershipInfoProvider := &mock.MembershipInfoProvider{}
mockMembershipInfoProvider.AmMemberOfStub = func(channel string, p *peer.CollectionPolicyConfig) (bool, error) {
return testutilIsEligibleForMockPolicy(p), nil
mockMembershipInfoProvider.AmMemberOfStub = func(channel string, p *peer.CollectionPolicyConfig) bool {
return testutilIsEligibleForMockPolicy(p)
}

mockCollElgListener := &mockCollElgListener{}
Expand Down
14 changes: 3 additions & 11 deletions core/ledger/kvledger/pause_resume_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ SPDX-License-Identifier: Apache-2.0
package kvledger

import (
"slices"
"testing"

"github.com/hyperledger/fabric-protos-go-apiv2/common"
Expand Down Expand Up @@ -115,7 +116,7 @@ func assertLedgerStatus(t *testing.T, provider *Provider, genesisBlocks []*commo
require.NoError(t, err)
require.Len(t, activeLedgerIDs, numLedgers-len(pausedLedgers))
for i := 0; i < numLedgers; i++ {
if !contains(pausedLedgers, i) {
if !slices.Contains(pausedLedgers, i) {
require.Contains(t, activeLedgerIDs, constructTestLedgerID(i))
}
}
Expand All @@ -124,19 +125,10 @@ func assertLedgerStatus(t *testing.T, provider *Provider, genesisBlocks []*commo
m, err := s.getLedgerMetadata(constructTestLedgerID(i))
require.NoError(t, err)
require.NotNil(t, m)
if contains(pausedLedgers, i) {
if slices.Contains(pausedLedgers, i) {
require.Equal(t, msgs.Status_INACTIVE, m.GetStatus())
} else {
require.Equal(t, msgs.Status_ACTIVE, m.GetStatus())
}
}
}

func contains(slice []int, val int) bool {
for _, item := range slice {
if item == val {
return true
}
}
return false
}
10 changes: 3 additions & 7 deletions core/ledger/kvledger/tests/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"fmt"
"os"
"path/filepath"
"slices"
"testing"
"time"

Expand Down Expand Up @@ -315,15 +316,10 @@ type membershipInfoProvider struct {
myOrgMSPID string
}

func (p *membershipInfoProvider) AmMemberOf(channelName string, collectionPolicyConfig *peer.CollectionPolicyConfig) (bool, error) {
func (p *membershipInfoProvider) AmMemberOf(channelName string, collectionPolicyConfig *peer.CollectionPolicyConfig) bool {
members := convertFromMemberOrgsPolicy(collectionPolicyConfig)
fmt.Printf("members = %s\n", members)
for _, m := range members {
if m == p.myOrgMSPID {
return true, nil
}
}
return false, nil
return slices.Contains(members, p.myOrgMSPID)
}

func (p *membershipInfoProvider) MyImplicitCollectionName() string {
Expand Down
14 changes: 3 additions & 11 deletions core/ledger/kvledger/txmgmt/statedb/commontests/test_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package commontests

import (
"fmt"
"slices"
"strings"
"testing"

Expand Down Expand Up @@ -1072,7 +1073,7 @@ func TestDataExportImport(
verifyExportImport := func(destDBName string, skipNamespaces stringset) {
fullScanItr, err := sourceDB.GetFullScanIterator(
func(ns string) bool {
return skipNamespaces.contains(ns)
return slices.Contains(skipNamespaces, ns)
},
)
require.NoError(t, err)
Expand Down Expand Up @@ -1162,19 +1163,10 @@ func CreateTestData(t *testing.T, db statedb.VersionedDB, ns string, numKeys int

type stringset []string

func (s stringset) contains(str string) bool {
for _, element := range s {
if element == str {
return true
}
}
return false
}

func (s stringset) minus(toMinus stringset) stringset {
var final stringset
for _, element := range s {
if toMinus.contains(element) {
if slices.Contains(toMinus, element) {
continue
}
final = append(final, element)
Expand Down
14 changes: 6 additions & 8 deletions core/ledger/kvledger/txmgmt/statedb/statecouchdb/cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ SPDX-License-Identifier: Apache-2.0
package statecouchdb

import (
"slices"

"github.com/VictoriaMetrics/fastcache"
"google.golang.org/protobuf/proto"
)
Expand Down Expand Up @@ -45,10 +47,8 @@ func newCache(usrCacheSizeMBs int, sysNamespaces []string) *cache {
// Namespace can be of two types: system namespace (such as lscc) and user
// namespace (all user's chaincode states).
func (c *cache) enabled(namespace string) bool {
for _, ns := range c.sysNamespaces {
if namespace == ns {
return true
}
if slices.Contains(c.sysNamespaces, namespace) {
return true
}
return c.usrCache != nil
}
Expand Down Expand Up @@ -152,10 +152,8 @@ func (c *cache) Reset() {
}

func (c *cache) getCache(namespace string) *fastcache.Cache {
for _, ns := range c.sysNamespaces {
if namespace == ns {
return c.sysCache
}
if slices.Contains(c.sysNamespaces, namespace) {
return c.sysCache
}
return c.usrCache
}
Expand Down
2 changes: 1 addition & 1 deletion core/ledger/ledger_interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -732,7 +732,7 @@ type ChaincodeLifecycleDetails struct {
// a member of a collection. Gossip module is expected to provide the dependency to ledger
type MembershipInfoProvider interface {
// AmMemberOf checks whether the current peer is a member of the given collection
AmMemberOf(channelName string, collectionPolicyConfig *peer.CollectionPolicyConfig) (bool, error)
AmMemberOf(channelName string, collectionPolicyConfig *peer.CollectionPolicyConfig) bool
// MyImplicitCollectionName returns the name of the implicit collection for the current peer
MyImplicitCollectionName() string
}
Expand Down
Loading
Loading