• Hannah Howard's avatar
    All changes to date including pause requests & start paused, along with new... · caa872f6
    Hannah Howard authored
    All changes to date including pause requests & start paused, along with new adds for cleanups and checking of execution (#75)
    
    * WIP
    
    * feat(graphsync): pause/unpause requests
    
    Allow graphsync requests to be paused and unpaused via request cancelling and DoNotSendCIDs
    extension
    
    * fix(requestmanager): refactor executor
    
    remove extraneous allocation of closure functions
    
    * feat(graphsync): support external request pauses
    
    allow pausing requests imperatively via PauseRequest function
    
    * fix(lint): fix lint errors
    
    * feat(responsemanager): start requests paused
    
    add the ability for a hook to pause a response right when it's first received
    
    * feat(responsemanager): improve cancellation UX
    
    provide a mechanism for responders to learn a requestor cancelled a request and for requestors to
    learn a request was cancelled
    
    * feat(requestmanager): process request cancelled status
    
    process the responder returning a request cancelled error code and also support sentinel errors
    
    * feat(executor): refactor to remove loader
    
    remove loader, also only fire restart request as needed
    
    * fix(asyncloader): load requests synchronously when possible
    
    * fix(responsemanager): fix external pause
    
    Fix external pauses missing a block
    
    * fix(responsemanager): do not delay complete listener
    
    Run complete listener in same thread as response processing, making it less susceptable to
    interruption via cancel
    
    * fix(responsemanager): fix context check
    
    fix checking for context cancellation errors based off of the way ipld-prime does not wrap errors
    
    * fix(responsemanager): more precise cancel
    
    make cancels only get recorded if actual blocks are not sent -- otherwise the request is considered
    complete -- and the complete hook always runs
    
    * fix(requestmanager): handle non processed pauses
    
    Handler the case where a pause is requested but never actually takes place
    
    * refactor(responsemanager): handle cancels, correctly this time
    
    Properly handle cancels for both paused and unpaused states
    
    * fix(errors): remove regex cause it appears to be very slow
    
    * fix(traverser): fix race condition for shutdown
    
    make sure that the traverser is finished in the request executor
    
    * fix(deps): mod tidy
    
    * fix(executor): add back network error
    caa872f6
executor_test.go 19.1 KB