forked from rosa/hakurei
internal/pkg: drop cached error on cancel
This avoids disabling the artifact when using the individual cancel method. Unfortunately this makes the method blocking. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -1120,7 +1120,7 @@ func (c *Cache) Done(id unique.Handle[ID]) <-chan struct{} {
|
||||
|
||||
// Cancel cancels the ongoing cure of an [Artifact] referred to by the specified
|
||||
// identifier. Cancel returns whether the [context.CancelFunc] has been killed.
|
||||
// Cancel does not wait for the cure to complete.
|
||||
// Cancel returns after the cure is complete.
|
||||
func (c *Cache) Cancel(id unique.Handle[ID]) bool {
|
||||
c.identMu.RLock()
|
||||
pending, ok := c.identPending[id]
|
||||
@@ -1129,6 +1129,13 @@ func (c *Cache) Cancel(id unique.Handle[ID]) bool {
|
||||
return false
|
||||
}
|
||||
pending.cancel()
|
||||
<-pending.done
|
||||
|
||||
c.abortMu.Lock()
|
||||
c.identMu.Lock()
|
||||
delete(c.identErr, id)
|
||||
c.identMu.Unlock()
|
||||
c.abortMu.Unlock()
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user