From 01cf5d7ddad27319a2babad2a5c552ff0cbe897b Mon Sep 17 00:00:00 2001 From: Preston Van Loon Date: Sat, 4 Jan 2020 12:00:57 -0800 Subject: [PATCH] gracefully handle deduplicated registration of topic validators (#4399) Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> --- beacon-chain/sync/subscriber.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/beacon-chain/sync/subscriber.go b/beacon-chain/sync/subscriber.go index d39918879a31..1d86afc5a52d 100644 --- a/beacon-chain/sync/subscriber.go +++ b/beacon-chain/sync/subscriber.go @@ -110,9 +110,7 @@ func (r *Service) subscribeWithBase(base proto.Message, topic string, validator log := log.WithField("topic", topic) if err := r.p2p.PubSub().RegisterTopicValidator(wrapAndReportValidation(topic, validator)); err != nil { - // Configuring a topic validator would only return an error as a result of misconfiguration - // and is not a runtime concern. - panic(err) + log.WithError(err).Error("Failed to register validator") } sub, err := r.p2p.PubSub().Subscribe(topic) @@ -219,8 +217,9 @@ func (r *Service) subscribeDynamic(topicFormat string, determineSubsLen func() i if len(subscriptions) > wantedSubs { // Reduce topics var cancelSubs []*pubsub.Subscription subscriptions, cancelSubs = subscriptions[:wantedSubs-1], subscriptions[wantedSubs:] - for _, sub := range cancelSubs { + for i, sub := range cancelSubs { sub.Cancel() + r.p2p.PubSub().UnregisterTopicValidator(fmt.Sprintf(topicFormat, i+wantedSubs)) } } else if len(subscriptions) < wantedSubs { // Increase topics for i := len(subscriptions); i < wantedSubs; i++ {