Cleanup execOnMany and allow it to be used in both sloppy and non-sloppy mode
The execOnMany function was able to exit prematurely, leaving its child goroutines running. These would write to a channel that closed after execOnMany returned in findProvidersAsyncRoutine. The function is now able to run both in a sloppy mode where it allows goroutines to be cleaned up after the function has completed as well a safer non-sloppy mode where goroutines will complete before the function returns. The sloppy mode is used for DHT "get" operations like FindProviders and SearchValues whereas the non-sloppy mode is used for "put" operations like PutValue and Provide (along with their bulk operation equivalents). This fixes https://github.com/ipfs/go-ipfs/issues/8146
Showing
Please register or sign in to comment