@@ -42,10 +42,11 @@ const (
4242)
4343
4444type HistoryQueueOpt struct {
45- DB db.Transactor
46- LeaseManager * leaseutil.Manager
47- ContentStore * containerdsnapshot.Store
48- CleanConfig * config.HistoryConfig
45+ DB db.Transactor
46+ LeaseManager * leaseutil.Manager
47+ ContentStore * containerdsnapshot.Store
48+ CleanConfig * config.HistoryConfig
49+ GarbageCollect func (context.Context ) error
4950}
5051
5152type HistoryQueue struct {
@@ -323,7 +324,7 @@ func (h *HistoryQueue) gc() error {
323324 now := time .Now ()
324325 for _ , r := range records [h .opt .CleanConfig .MaxEntries :] {
325326 if now .Add (- h .opt .CleanConfig .MaxAge .Duration ).After (r .CompletedAt .AsTime ()) {
326- if err := h .delete (r .Ref , false ); err != nil {
327+ if _ , err := h .delete (r .Ref ); err != nil {
327328 return err
328329 }
329330 }
@@ -365,18 +366,18 @@ func (h *HistoryQueue) clearOrphans() error {
365366
366367 for _ , r := range records {
367368 bklog .G (ctx ).Warnf ("deleting build record %s due to missing blobs" , r .Ref )
368- if err := h .delete (r .Ref , false ); err != nil {
369+ if _ , err := h .delete (r .Ref ); err != nil {
369370 return err
370371 }
371372 }
372373
373374 return nil
374375}
375376
376- func (h * HistoryQueue ) delete (ref string , sync bool ) error {
377+ func (h * HistoryQueue ) delete (ref string ) ( bool , error ) {
377378 if _ , ok := h .refs [ref ]; ok {
378379 h .deleted [ref ] = struct {}{}
379- return nil
380+ return false , nil
380381 }
381382 delete (h .deleted , ref )
382383 h .ps .Send (& controlapi.BuildHistoryEvent {
@@ -389,19 +390,15 @@ func (h *HistoryQueue) delete(ref string, sync bool) error {
389390 return errors .Wrapf (os .ErrNotExist , "failed to retrieve bucket %s" , recordsBucket )
390391 }
391392 err1 := b .Delete ([]byte (ref ))
392- var opts []leases.DeleteOpt
393- if sync {
394- opts = append (opts , leases .SynchronousDelete )
395- }
396- err2 := h .hLeaseManager .Delete (context .TODO (), leases.Lease {ID : h .leaseID (ref )}, opts ... )
393+ err2 := h .hLeaseManager .Delete (context .TODO (), leases.Lease {ID : h .leaseID (ref )})
397394 if err1 != nil {
398395 return err1
399396 }
400397 return err2
401398 }); err != nil {
402- return err
399+ return false , err
403400 }
404- return nil
401+ return true , nil
405402}
406403
407404func (h * HistoryQueue ) init () error {
@@ -683,7 +680,14 @@ func (h *HistoryQueue) Delete(ctx context.Context, ref string) error {
683680 h .mu .Lock ()
684681 defer h .mu .Unlock ()
685682
686- return h .delete (ref , true )
683+ v , err := h .delete (ref )
684+ if err != nil {
685+ return err
686+ }
687+ if v {
688+ return h .opt .GarbageCollect (ctx )
689+ }
690+ return nil
687691}
688692
689693func (h * HistoryQueue ) OpenBlobWriter (ctx context.Context , mt string ) (_ * Writer , err error ) {
@@ -909,7 +913,7 @@ func (h *HistoryQueue) Listen(ctx context.Context, req *controlapi.BuildHistoryR
909913 if _ , ok := h .deleted [req .Ref ]; ok {
910914 if h .refs [req .Ref ] == 0 {
911915 delete (h .refs , req .Ref )
912- h .delete (req .Ref , false )
916+ h .delete (req .Ref )
913917 }
914918 }
915919 h .mu .Unlock ()
0 commit comments