Skip to content

Commit 458f435

Browse files
committed
[FAB-2007] Gossip/disc: aliveMsg w/o secretEnvelope
In preperation to the gossip layer passing to the discovery layer Alive messages that have no secret envelopes (i.e originated from external organizations), we need to take care not to over-write the internal endpoint when such a message arrives. This commit takes care of it. Change-Id: I24544d3e902cda69f3d056def81d620937744254 Signed-off-by: Yacov Manevich <[email protected]>
1 parent 76bb2a0 commit 458f435

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

gossip/discovery/discovery_impl.go

+14-8
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,7 @@ func (d *gossipDiscoveryImpl) handleMsgFromComm(m *proto.SignedGossipMessage) {
303303
d.logger.Warning("Failed deserializing GossipMessage from envelope:", err)
304304
return
305305
}
306+
306307
d.handleAliveMessage(selfInfoGossipMsg)
307308

308309
var internalEndpoint string
@@ -333,6 +334,7 @@ func (d *gossipDiscoveryImpl) handleMsgFromComm(m *proto.SignedGossipMessage) {
333334
d.logger.Warning("Expected alive message, got", am, "instead")
334335
return
335336
}
337+
336338
d.handleAliveMessage(am)
337339
}
338340

@@ -399,6 +401,7 @@ func (d *gossipDiscoveryImpl) createMembershipResponse(targetMember *NetworkMemb
399401
defer d.lock.RUnlock()
400402

401403
deadPeers := []*proto.Envelope{}
404+
402405
for _, dm := range d.deadMembership.ToSlice() {
403406

404407
if !shouldBeDisclosed(dm) {
@@ -502,6 +505,9 @@ func (d *gossipDiscoveryImpl) resurrectMember(am *proto.SignedGossipMessage, t p
502505
}
503506

504507
var internalEndpoint string
508+
if prevNetMem := d.id2Member[string(pkiID)]; prevNetMem != nil {
509+
internalEndpoint = prevNetMem.InternalEndpoint
510+
}
505511
if am.Envelope.SecretEnvelope != nil {
506512
internalEndpoint = am.Envelope.SecretEnvelope.InternalEndpoint()
507513
}
@@ -715,7 +721,9 @@ func (d *gossipDiscoveryImpl) learnExistingMembers(aliveArr []*proto.SignedGossi
715721
d.logger.Debug("updating", am)
716722

717723
var internalEndpoint string
718-
724+
if prevNetMem := d.id2Member[string(am.Membership.PkiId)]; prevNetMem != nil {
725+
internalEndpoint = prevNetMem.InternalEndpoint
726+
}
719727
if m.Envelope.SecretEnvelope != nil {
720728
internalEndpoint = m.Envelope.SecretEnvelope.InternalEndpoint()
721729
}
@@ -804,6 +812,10 @@ func (d *gossipDiscoveryImpl) learnNewMembers(aliveMembers []*proto.SignedGossip
804812
internalEndpoint = m.Envelope.SecretEnvelope.InternalEndpoint()
805813
}
806814

815+
if prevNetMem := d.id2Member[string(member.Membership.PkiId)]; prevNetMem != nil {
816+
internalEndpoint = prevNetMem.InternalEndpoint
817+
}
818+
807819
d.id2Member[string(member.Membership.PkiId)] = &NetworkMember{
808820
Endpoint: member.Membership.Endpoint,
809821
Metadata: member.Membership.Metadata,
@@ -823,18 +835,12 @@ func (d *gossipDiscoveryImpl) GetMembership() []NetworkMember {
823835

824836
response := []NetworkMember{}
825837
for _, m := range d.aliveMembership.ToSlice() {
826-
var internalEndpoint string
827-
828-
if m.Envelope.SecretEnvelope != nil {
829-
internalEndpoint = m.Envelope.SecretEnvelope.InternalEndpoint()
830-
}
831-
832838
member := m.GetAliveMsg()
833839
response = append(response, NetworkMember{
834840
PKIid: member.Membership.PkiId,
835841
Endpoint: member.Membership.Endpoint,
836842
Metadata: member.Membership.Metadata,
837-
InternalEndpoint: internalEndpoint,
843+
InternalEndpoint: d.id2Member[string(m.GetAliveMsg().Membership.PkiId)].InternalEndpoint,
838844
})
839845
}
840846
return response

gossip/discovery/discovery_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ func TestConnect(t *testing.T) {
358358
inst.Connect(netMember2Connect2, false)
359359
}
360360

361-
time.Sleep(time.Second * 1)
361+
time.Sleep(time.Second * 3)
362362
assert.Len(t, firstSentMemReqMsgs, 10)
363363
close(firstSentMemReqMsgs)
364364
for firstSentSelfMsg := range firstSentMemReqMsgs {

0 commit comments

Comments
 (0)