You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Aug 2, 2021. It is now read-only.
127 // Close chunk store
128 func (n *NetStore) Close() {
129 close(n.closeC)
130 n.store.Close()
131 // TODO: loop through fetchers to cancel them <--- THIS COULD BE THE REASON?
132 }
This Close() function is called from the cleanup() function when the simulation terminates.
Now if there are running fetchers (this is the TestRetrieval, which tries to retrieve files/chunks, thus fetchers are spawned), they may at some point call
protoRequestFunc is actually Delivery.RequestFromPeers, from which messages are sent (RetrieveRequestMsg),
But actually, the race is reported to be in handleChunkDeliveryMsg()#L222, which could be writing into the store. So not the same place. Still, it may be related.
So another, and simpler explanation, could be that it is handling a ChunkDeliverMsg while the node is shutting down. Even if all files have been retrieved, it may still be handling chunks it already has because it issued a request and some other node is sending it:
How to reproduce?
go test -v -race github.com/ethereum/go-ethereum/swarm/network/stream
Failing:
TestFileRetrieval
(note: just run alone the test does not fail)Stack trace
The text was updated successfully, but these errors were encountered: