Shouldn't a provider node also restart its StateProviderRunnable to send the keys that it just became the primary owner of? Come to think of it, the problems you are facing here are very similar to the ones @wburns had when implementing the DistributedEntryRetriever, I wonder if it would be possible to reuse that.