package Ġcom . os ack y . doctor Ċ Ċ import Ġcom . os ack y . doctor . internal . Scan Api Ċ import Ġorg . gradle . api . internal . tasks . execution . Execute Task Build Operation Type Ċ import Ġorg . gradle . api . provider . Provider Ċ import Ġorg . gradle . internal . operations . Build Operation Descriptor Ċ import Ġorg . gradle . internal . operations . Operation Finish Event Ċ Ċ /** Ċ Ġ* ĠKeep s Ġtrack Ġof Ġwhich Ġclasses Ġwere Ġslower Ġto Ġfetch Ġfrom Ġthe Ġcache Ġthan Ġto Ġre - run Ġlocally . Ċ Ġ*/ Ċ class ĠS lower From Cache Collector ( private Ġval Ġnegative Avoid ance Threshold : ĠProvider < Int >) Ġ: ĠBuild Start Finish Listener , ĠHas Build Scan Tag Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlonger TaskList Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠ Ġfun Ġon Event ( build Operation : ĠBuild Operation Descriptor , Ġfinish Event : ĠOperation Finish Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexecute Result Ġ= Ġfinish Event . result ĊĠĠĠĠĠĠĠ Ġif Ġ( execute Result Ġis ĠExecute Task Build Operation Type . Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġfinish Event . endTime Ġ- Ġfinish Event . startTime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġcurrent Ġexecution Ġtook Ġlonger Ġthan Ġthe Ġoriginal Ġexecution , Ġlet 's Ġprint Ġout Ġa Ġwarning . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( execute Result . origin Execution Time Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthreshold Ġ= Ġnegative Avoid ance Threshold . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( execute Result . origin Execution Time !! Ġ+ Ġthreshold Ġ< Ġduration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlonger TaskList . add ( build Operation . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Finish (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( long er TaskList . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġfollowing Ġoperations Ġwere Ġslower Ġto Ġpull Ġfrom Ġthe Ġcache Ġthan Ġto Ġrer un :\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ long er TaskList . join ToString ( separator Ġ= Ġ"\ n ") }\ n Consider Ġdisabling Ġcaching Ġthem .\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" For Ġmore Ġinformation Ġsee : Ġhttps :// running code . github . io / gradle - doctor / s lower - from - cache /" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Custom Values ( build Scan Api : ĠScan Api ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuild Scan Api . tag (" doctor - negative - sav ings ") ĊĠĠĠĠĠĠĠ Ġbuild Scan Api . value (" doctor - negative - sav ings - tasks ", Ġlonger TaskList . join ToString ( separator Ġ= Ġ"\ n ")) ĊĠĠĠ Ġ} Ċ } Ċ