Made AggregatingDemandManager aware of the exceptions that can happen in underlying get_initial_proposal_funcs, aka exception bubbling
Added lock in DefaultPaymentManager allocation creation, no more multiple allocations at once!
Made more verbose exception logs in NegotiatingPlugin
Made more robust expirations in ProposalBuffer
Made more robust task canceling in ExpirableBuffer
Notable remarks:
Spawning tons of tasks for nearly exact expiration is not optimal, but reworking it on a single task that wakes up on the earliest expiration is rather tricky due to
Lack of direct access to all items in the buffer without rebuilding the collection with get_all and put_all.
Usage of relative expiration time instead of absolute time
Duplicating data to avoid scanning the whole collection for the earliest item to expire
What I've done:
get_initial_proposal_funcs
, aka exception bubblingNotable remarks:
get_all
andput_all
.