/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠNet flix , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . netflix . spin n aker . clo udd river . sql Ċ Ċ import Ġcom . netflix . spin n aker . k ork . core . Retry Support Ċ import Ġcom . netflix . spin n aker . k ork . sql . config . Retry Properties Ċ import Ġorg . jooq . DSL Context Ċ import Ġorg . jooq . impl . DSL Ċ import Ġorg . jooq . impl . DSL . field Ċ import Ġorg . jooq . impl . DSL . table Ċ Ċ internal Ġval Ġretry Support Ġ= ĠRetry Support () Ċ Ċ internal Ġval Ġtasks Table Ġ= Ġtable (" tasks ") Ċ internal Ġval Ġtask States Table Ġ= Ġtable (" task _ states ") Ċ internal Ġval Ġtask Results Table Ġ= Ġtable (" task _ results ") Ċ Ċ internal Ġval Ġtasks Fields Ġ= ĠlistOf (" id ", Ġ" request _ id ", Ġ" owner _ id ", Ġ" created _ at "). map Ġ{ Ġfield ( it ) Ġ} Ċ internal Ġval Ġtask States Fields Ġ= ĠlistOf (" id ", Ġ" task _ id ", Ġ" created _ at ", Ġ" state ", Ġ" phase ", Ġ" status "). map Ġ{ Ġfield ( it ) Ġ} Ċ internal Ġval Ġtask Results Fields Ġ= ĠlistOf (" id ", Ġ" task _ id ", Ġ" body "). map Ġ{ Ġfield ( it ) Ġ} Ċ Ċ /** Ċ Ġ* ĠRun Ġthe Ġprovided Ġ[ fn ] Ġin Ġa Ġtransaction . Ċ Ġ*/ Ċ internal Ġfun ĠDSL Context . transaction al ( retry Properties : ĠRetry Properties , Ġfn : Ġ( DSL Context ) Ġ-> ĠUnit ) Ġ{ ĊĠ Ġretry Support . retry ({ ĊĠĠĠ Ġtransaction Ġ{ Ġctx Ġ-> ĊĠĠĠĠĠ Ġfn ( DSL . using ( ctx )) ĊĠĠĠ Ġ} ĊĠ Ġ}, Ġretry Properties . max Retries , Ġretry Properties . backoff Ms , Ġfalse ) Ċ } Ċ Ċ /** Ċ Ġ* ĠRun Ġthe Ġprovided Ġ[ fn ] Ġwith Ġretry Ġsupport . Ċ Ġ*/ Ċ internal Ġfun Ġ< T > ĠDSL Context . with Retry ( retry Properties : ĠRetry Properties , Ġfn : Ġ( DSL Context ) Ġ-> ĠT ): ĠT Ġ{ ĊĠ Ġreturn Ġretry Support . retry ({ ĊĠĠĠ Ġfn ( this ) ĊĠ Ġ}, Ġretry Properties . max Retries , Ġretry Properties . backoff Ms , Ġfalse ) Ċ } Ċ