• Brian Tiger Chow's avatar
    feat(PQ) · 3b397e8e
    Brian Tiger Chow authored
    	refactor: peerRequestQueue
    
    	it's a mistake to make one queue to fit all. Go's lack of algebraic
    	types turns a generalized queue into a monstrosity of type
    	checking/casting. Better to have individual queues for individual
    	purposes.
    
    	Conflicts:
    		exchange/bitswap/decision/bench_test.go
    		exchange/bitswap/decision/tasks/task_queue.go
    
    	fix(bitswap.decision.PRQ): if peers match, always return result of pri comparison
    
    	fix(bitswap.decision.Engine): push to the queue before notifying
    
    	TOCTOU bug
    
    	1. client notifies
    	2. worker checks (finds nil)
    	3. worker sleeps
    	3. client pushes (worker missed the update)
    
    	test(PQ): improve documentation and add test
    
    	test(bitswap.decision.Engine): handling received messages
    
    	License: MIT
    Signed-off-by: default avatarBrian Tiger Chow <brian@perfmode.com>
    3b397e8e
peer_request_queue.go 3.4 KB