Only update producer information if it's actually changed. This fixes #7120, since we no longer indefinitely delay a collection timer just by refreshing our list of producers from Nexus.
Bail from a producer refresh on any error contacting Nexus. This should fix #7124. If we get a progenitor-level error refreshing our list from Nexus, which should mostly be a communcation error like ECONNREFUSED, we don't want to blow away our entire state. Instead, break out of the refresh function entirely, and continue collecting from our last known-good set of producers. Only proceed with the update when we are confident we have a full, valid list from Nexus.
Change the missed tick behavior for refreshing producer list from "burst" to "skip". This isn't strictly necessary, but better reflects what we want, which is "reasonably often" updates, without causing undue churn.
ECONNREFUSED
, we don't want to blow away our entire state. Instead, break out of the refresh function entirely, and continue collecting from our last known-good set of producers. Only proceed with the update when we are confident we have a full, valid list from Nexus.