Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
bcmmbaga committed Jul 16, 2024
1 parent 30bf028 commit a13fd9d
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions management/server/updatechannel.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ func (p *PeersUpdateManager) SendUpdate(ctx context.Context, peerID string, upda
if update.NetworkMap != nil {
lastSentUpdate := p.peerUpdateMessage[peerID]
if lastSentUpdate != nil && lastSentUpdate.Update.NetworkMap.GetSerial() >= update.Update.NetworkMap.GetSerial() {
log.WithContext(ctx).Debugf("peer %s network map serial not changed, skip sending update", peerID)
log.WithContext(ctx).Debugf("peer %s new network map serial: %d not greater than last sent: %d, skip sending update",
peerID, update.Update.NetworkMap.GetSerial(), lastSentUpdate.Update.NetworkMap.GetSerial())
return
}
p.peerUpdateMessage[peerID] = update
Expand Down Expand Up @@ -205,9 +206,9 @@ func (p *PeersUpdateManager) handlePeerMessageUpdate(ctx context.Context, peerID
p.channelsMux.RLock()
defer p.channelsMux.RUnlock()

previousUpdateMsg := p.peerUpdateMessage[peerID]
if previousUpdateMsg != nil {
updated, err := isNewPeerUpdateMessage(previousUpdateMsg, update)
lastSentUpdate := p.peerUpdateMessage[peerID]
if lastSentUpdate != nil {
updated, err := isNewPeerUpdateMessage(lastSentUpdate, update)
if err != nil {
log.WithContext(ctx).Errorf("error checking for SyncResponse updates: %v", err)
return false
Expand All @@ -221,17 +222,21 @@ func (p *PeersUpdateManager) handlePeerMessageUpdate(ctx context.Context, peerID
return true
}

// isNewPeerUpdateMessage checks if there are any changes between the previous and current UpdateMessage.
func isNewPeerUpdateMessage(prevResponse, currResponse *UpdateMessage) (bool, error) {
changelog, err := diff.Diff(prevResponse.Checks, currResponse.Checks)
// isNewPeerUpdateMessage checks if the given current update message is a new update that should be sent.
func isNewPeerUpdateMessage(lastSentUpdate, currUpdateToSend *UpdateMessage) (bool, error) {
if lastSentUpdate.Update.NetworkMap.GetSerial() >= currUpdateToSend.Update.NetworkMap.GetSerial() {
return false, nil
}

changelog, err := diff.Diff(lastSentUpdate.Checks, currUpdateToSend.Checks)
if err != nil {
return false, fmt.Errorf("failed to diff checks: %v", err)
}
if len(changelog) > 0 {
return true, nil
}

changelog, err = diff.Diff(prevResponse.NetworkMap, currResponse.NetworkMap)
changelog, err = diff.Diff(lastSentUpdate.NetworkMap, currUpdateToSend.NetworkMap)
if err != nil {
return false, fmt.Errorf("failed to diff network map: %v", err)
}
Expand Down

0 comments on commit a13fd9d

Please sign in to comment.