From 2c0225772e8782b7a0a5573cffb0bbc7304af322 Mon Sep 17 00:00:00 2001 From: Fedor Partanskiy Date: Mon, 14 Oct 2024 11:51:22 +0300 Subject: [PATCH] test "verifies private data is pulled when joining a new peer with new certs" is very unstable. I change log level for test in integration pvtdata. Signed-off-by: Fedor Partanskiy --- gossip/gossip/channel/channel.go | 2 ++ gossip/gossip/chanstate.go | 3 +++ gossip/privdata/distributor.go | 1 + gossip/privdata/pull.go | 7 ++++--- integration/pvtdata/pvtdata_test.go | 28 ++++++++++++++++++---------- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/gossip/gossip/channel/channel.go b/gossip/gossip/channel/channel.go index 75c8266e70b..eb18da0a7c9 100644 --- a/gossip/gossip/channel/channel.go +++ b/gossip/gossip/channel/channel.go @@ -176,6 +176,7 @@ func (mf *membershipFilter) GetMembership() []discovery.NetworkMember { } var members []discovery.NetworkMember + mf.logger.Debug("PFI25") for _, mem := range mf.adapter.GetMembership() { if mf.eligibleForChannelAndSameOrg(mem) { members = append(members, mem) @@ -382,6 +383,7 @@ func (gc *gossipChannel) GetPeers() []discovery.NetworkMember { } member.Properties = stateInf.GetStateInfo().Properties member.Envelope = stateInf.Envelope + gc.logger.Debug("PFI14 ", member.PKIid, member.Endpoint, member.InternalEndpoint) members = append(members, member) } return members diff --git a/gossip/gossip/chanstate.go b/gossip/gossip/chanstate.go index cb25a3df5cb..5b801e3040b 100644 --- a/gossip/gossip/chanstate.go +++ b/gossip/gossip/chanstate.go @@ -102,12 +102,15 @@ func (cs *channelState) joinChannel(joinMsg api.JoinChannelMessage, channelID co } cs.Lock() defer cs.Unlock() + cs.g.logger.Debug("PFI10") if gc, exists := cs.channels[string(channelID)]; !exists { + cs.g.logger.Debug("PFI11") pkiID := cs.g.comm.GetPKIid() ga := &gossipAdapterImpl{Node: cs.g, Discovery: cs.g.disc} gc := channel.NewGossipChannel(pkiID, cs.g.selfOrg, cs.g.mcs, channelID, ga, joinMsg, metrics, nil) cs.channels[string(channelID)] = gc } else { + cs.g.logger.Debug("PFI12") gc.ConfigureChannel(joinMsg) } } diff --git a/gossip/privdata/distributor.go b/gossip/privdata/distributor.go index c027d8cfbe7..141e0aa5194 100644 --- a/gossip/privdata/distributor.go +++ b/gossip/privdata/distributor.go @@ -421,6 +421,7 @@ func (d *distributorImpl) createPrivateDataMessage(txID, namespace string, collection *rwset.CollectionPvtReadWriteSet, ccp *peer.CollectionConfigPackage, blkHt uint64) (*protoext.SignedGossipMessage, error) { + d.logger.Debug("PFI03") msg := &protosgossip.GossipMessage{ Channel: []byte(d.chainID), Nonce: util.RandomUInt64(), diff --git a/gossip/privdata/pull.go b/gossip/privdata/pull.go index 31208c6198d..9d8b0008f13 100644 --- a/gossip/privdata/pull.go +++ b/gossip/privdata/pull.go @@ -133,6 +133,7 @@ func (p *puller) listen() { func (p *puller) handleRequest(message protoext.ReceivedMessage) { p.logger.Debug("Got", message.GetGossipMessage(), "from", message.GetConnectionInfo().Endpoint) + p.logger.Debug("PFI01") message.Respond(&protosgossip.GossipMessage{ Channel: []byte(p.channel), Tag: protosgossip.GossipMessage_CHAN_ONLY, @@ -250,6 +251,7 @@ func (p *puller) fetchPrivateData(dig2Filter digestToFilterMapping) (*privdataco p.logger.Debug("Total members in channel:", members) members = filter.AnyMatch(members, allFilters...) p.logger.Debug("Total members that fit some digest:", members) + p.logger.Debug("PFI04") if len(members) == 0 { p.logger.Warning("Do not know any peer in the channel(", p.channel, ") that matches the policies , aborting") return nil, errors.New("Empty membership") @@ -262,6 +264,7 @@ func (p *puller) fetchPrivateData(dig2Filter digestToFilterMapping) (*privdataco // We expect all private RWSets represented as digests to be collected itemsLeftToCollect := len(dig2Filter) // As long as we still have some data to collect and new members to ask the data for: + p.logger.Debug("PFI05") for itemsLeftToCollect > 0 && len(members) > 0 { purgedPvt := p.getPurgedCollections(members, dig2Filter) // Need to remove purged digest from mapping @@ -277,12 +280,10 @@ func (p *puller) fetchPrivateData(dig2Filter digestToFilterMapping) (*privdataco delete(dig2Filter, dig) itemsLeftToCollect-- } - if itemsLeftToCollect == 0 { p.logger.Debug("No items left to collect") return res, nil } - peer2digests, members = p.assignDigestsToPeers(members, dig2Filter) if len(peer2digests) == 0 { p.logger.Warningf("No available peers for digests request, "+ @@ -290,7 +291,6 @@ func (p *puller) fetchPrivateData(dig2Filter digestToFilterMapping) (*privdataco dig2Filter.digests(), members) return res, nil } - p.logger.Debug("Matched", len(dig2Filter), "digests to", len(peer2digests), "peer(s)") subscriptions := p.scatterRequests(peer2digests) responses := p.gatherResponses(subscriptions) @@ -345,6 +345,7 @@ func (p *puller) gatherResponses(subscriptions []util.Subscription) []*protosgos func (p *puller) scatterRequests(peersDigestMapping peer2Digests) []util.Subscription { var subscriptions []util.Subscription for peer, digests := range peersDigestMapping { + p.logger.Debug("PFI02") msg := &protosgossip.GossipMessage{ Tag: protosgossip.GossipMessage_CHAN_ONLY, Channel: []byte(p.channel), diff --git a/integration/pvtdata/pvtdata_test.go b/integration/pvtdata/pvtdata_test.go index 0ff64d4cede..a7fe81c7a88 100644 --- a/integration/pvtdata/pvtdata_test.go +++ b/integration/pvtdata/pvtdata_test.go @@ -196,7 +196,7 @@ var _ = Describe("PrivateData", func() { testPeers := []*nwo.Peer{org1peer0, org2peer0, org3peer0} for _, peer := range testPeers { - pr := network.PeerRunner(peer) + pr := network.PeerRunner(peer, "FABRIC_LOGGING_SPEC=debug") p := ifrit.Invoke(pr) peerProcesses[peer.ID()] = p Eventually(p.Ready(), network.EventuallyTimeout).Should(BeClosed()) @@ -264,7 +264,7 @@ var _ = Describe("PrivateData", func() { updateConfigWithNewCertsForPeer(network, tempCryptoDir, orderer, org2Peer1) By("starting the peer1.org2 process") - pr := network.PeerRunner(org2Peer1) + pr := network.PeerRunner(org2Peer1, "FABRIC_LOGGING_SPEC=debug") p := ifrit.Invoke(pr) peerProcesses[org2Peer1.ID()] = p Eventually(p.Ready(), network.EventuallyTimeout).Should(BeClosed()) @@ -370,14 +370,21 @@ var _ = Describe("PrivateData", func() { } By("verifying peer1.org2 got the private data that was created historically") - sess, err = network.PeerUserSession(org2Peer1, "Admin2", commands.ChaincodeQuery{ - ChannelID: channelID, - Name: "marblesp", - Ctor: `{"Args":["readMarble","marble1"]}`, - }) - Expect(err).NotTo(HaveOccurred()) - Eventually(sess, network.EventuallyTimeout).Should(gexec.Exit(0)) - Expect(sess).To(gbytes.Say(`{"docType":"marble","name":"marble1","color":"blue","size":35,"owner":"tom"}`)) + Eventually(func() bool { + sess, err = network.PeerUserSession(org2Peer1, "Admin2", commands.ChaincodeQuery{ + ChannelID: channelID, + Name: "marblesp", + Ctor: `{"Args":["readMarble","marble1"]}`, + }) + Expect(err).NotTo(HaveOccurred()) + Eventually(sess, network.EventuallyTimeout).Should(gexec.Exit()) + if sess.ExitCode() != 0 { + return false + } + Expect(sess).To(gbytes.Say(`{"docType":"marble","name":"marble1","color":"blue","size":35,"owner":"tom"}`)) + + return true + }, network.EventuallyTimeout).Should(BeTrue()) sess, err = network.PeerUserSession(org2Peer1, "Admin2", commands.ChaincodeQuery{ ChannelID: channelID, @@ -387,6 +394,7 @@ var _ = Describe("PrivateData", func() { Expect(err).NotTo(HaveOccurred()) Eventually(sess, network.EventuallyTimeout).Should(gexec.Exit(0)) Expect(sess).To(gbytes.Say(`{"docType":"marblePrivateDetails","name":"marble1","price":99}`)) + Expect(sess).To(gbytes.Say(`PFIPFI`)) }) })