From d3ce155d8b084be2f480008d3a50c30e6c47fd9b Mon Sep 17 00:00:00 2001 From: Lyuben Penkovski <lyuben.penkovski@vereign.com> Date: Thu, 5 May 2022 20:45:10 +0300 Subject: [PATCH] Add retry mechanism on saving tasks to history collection --- go.mod | 1 + go.sum | 2 ++ internal/executor/worker.go | 1 - internal/storage/storage.go | 10 ++++++++-- .../github.com/cenkalti/backoff/v4/.gitignore | Bin 0 -> 267 bytes .../cenkalti/backoff/v4/.travis.yml | Bin 0 -> 194 bytes vendor/github.com/cenkalti/backoff/v4/LICENSE | Bin 0 -> 1077 bytes .../github.com/cenkalti/backoff/v4/README.md | Bin 0 -> 1752 bytes .../github.com/cenkalti/backoff/v4/backoff.go | Bin 0 -> 2142 bytes .../github.com/cenkalti/backoff/v4/context.go | Bin 0 -> 1110 bytes .../cenkalti/backoff/v4/exponential.go | Bin 0 -> 5749 bytes .../github.com/cenkalti/backoff/v4/retry.go | Bin 0 -> 2510 bytes .../github.com/cenkalti/backoff/v4/ticker.go | Bin 0 -> 2121 bytes .../github.com/cenkalti/backoff/v4/timer.go | Bin 0 -> 750 bytes .../github.com/cenkalti/backoff/v4/tries.go | Bin 0 -> 724 bytes vendor/modules.txt | Bin 5657 -> 5749 bytes 16 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 vendor/github.com/cenkalti/backoff/v4/.gitignore create mode 100644 vendor/github.com/cenkalti/backoff/v4/.travis.yml create mode 100644 vendor/github.com/cenkalti/backoff/v4/LICENSE create mode 100644 vendor/github.com/cenkalti/backoff/v4/README.md create mode 100644 vendor/github.com/cenkalti/backoff/v4/backoff.go create mode 100644 vendor/github.com/cenkalti/backoff/v4/context.go create mode 100644 vendor/github.com/cenkalti/backoff/v4/exponential.go create mode 100644 vendor/github.com/cenkalti/backoff/v4/retry.go create mode 100644 vendor/github.com/cenkalti/backoff/v4/ticker.go create mode 100644 vendor/github.com/cenkalti/backoff/v4/timer.go create mode 100644 vendor/github.com/cenkalti/backoff/v4/tries.go diff --git a/go.mod b/go.mod index 888464d..208c120 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.17 require ( code.vereign.com/gaiax/tsa/golib v0.0.0-20220321093827-5fdf8f34aad9 + github.com/cenkalti/backoff/v4 v4.1.3 github.com/google/uuid v1.3.0 github.com/kelseyhightower/envconfig v1.4.0 go.mongodb.org/mongo-driver v1.8.4 diff --git a/go.sum b/go.sum index 3e7b806..8879984 100644 --- a/go.sum +++ b/go.sum @@ -49,6 +49,8 @@ github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLj github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= diff --git a/internal/executor/worker.go b/internal/executor/worker.go index deec231..d03bdc1 100644 --- a/internal/executor/worker.go +++ b/internal/executor/worker.go @@ -56,7 +56,6 @@ func (w *Worker) Start(ctx context.Context) { } if err := w.storage.SaveTaskHistory(ctx, executed); err != nil { - // TODO: is this fatal error, should the task be re-executed? logger.Error("error saving task history", zap.Error(err)) continue } diff --git a/internal/storage/storage.go b/internal/storage/storage.go index 028ef4c..0e314d7 100644 --- a/internal/storage/storage.go +++ b/internal/storage/storage.go @@ -4,6 +4,7 @@ import ( "context" "strings" + "github.com/cenkalti/backoff/v4" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" @@ -109,6 +110,11 @@ func (s *Storage) Unack(ctx context.Context, t *task.Task) error { // SaveTaskHistory saves a task to the `tasksHistory` collection. func (s *Storage) SaveTaskHistory(ctx context.Context, task *task.Task) error { - _, err := s.tasksHistory.InsertOne(ctx, task) - return err + insert := func() error { + _, err := s.tasksHistory.InsertOne(ctx, task) + return err + } + + b := backoff.WithContext(backoff.NewExponentialBackOff(), ctx) + return backoff.Retry(insert, b) } diff --git a/vendor/github.com/cenkalti/backoff/v4/.gitignore b/vendor/github.com/cenkalti/backoff/v4/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..50d95c548b67069b52ea4dcf91bf85314d488d41 GIT binary patch literal 267 zcmY#ZaL&&y$jnJiQSeX7N=+_NNXyJgE!I&8E=erOOjbzDOHpvC%uCG8OjgLrOe$8; z2+l|>f~zjp<kHg1=hD(k<kHeB&gbG%R&dMDNl7g#=8Dfx%HoPINi8k`i8>Y~XJnS7 zCYO{Jr79E`q$X#kWhN`6R+OaX6=&w>73&uirKV+8q!x2&=|!8GS(FvVazSam{L&IG zE-k&}^n63TbdY7q>G?)_$z1Wt>G|;~scEHoFiv`YNo7H5F-R3yGPR;0zo<k{iwokA e+{Da0kQ|qmUTQ@u$XT8)uEkt>nJKA>`dk3(l2&>E literal 0 HcmV?d00001 diff --git a/vendor/github.com/cenkalti/backoff/v4/.travis.yml b/vendor/github.com/cenkalti/backoff/v4/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..c79105c2fbebe29ea2a4d735de58526f58a06815 GIT binary patch literal 194 zcmc~v%u6p#Oi#5^NYCd=&$r@IP|#H{)H5`OGAh7yNoE08QfgX$QEGf<UU5lcP7Xw2 zdcHz>YKcO6W=TeAl3sFtu6}M}NlBi5dVX1IQDRO`F<3WDRX)fvz5Jqd{R;h({QR6^ z{p8#f{bZ0@uHxjP%z_e#sVW}+zOMS|`2~q38Tv_?NX9AX7N-`KWhSTEmJ}tHWftou HXL11m%Thk| literal 0 HcmV?d00001 diff --git a/vendor/github.com/cenkalti/backoff/v4/LICENSE b/vendor/github.com/cenkalti/backoff/v4/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..89b8179965581339743b5edd9e18c1fcc778b56d GIT binary patch literal 1077 zcmWH^NLBFl3{mjOOis-!PF2wG^$gME;&RR}s4U7%&nQvQNY+#^GB7kza8Aw3R&dNI zIkJ(9D<HKfH?z1nGe1uuvsfV`wJ0^IQX#!4F|Q;wMMoj6C^c0fKTRPyBe5twRY##D zUm-ECQlTKVs5n1QAwQ`kF*7eSFI^!~AvwRGQXxN$t0W_{SfMySt)x7$C{-abFGV4- zxHvyKGqEH!MIj|WximL5uOzVqWM5ilPHM4&MoC7hf>JP4hmt1Pl9bfM9EHq0E|45d zN})WnBqP7HM4>3PxTGjE8DxfzLS|laPH76r4KV4P%-l?<4Iu4czZWZ%<a3o4r|N*+ zsiTmapOTqYsiTma3ieh(X;MyRafXgUN+!tYq|%a99fe|$AUG&>K>pCrFH$H@&B+0o zkeONx@oTCA%ynQjpztXG1!xI0h(Pu#lxO7UDuA2<Qws{|w9=xy%;JpH6p)^je1+nC z9j@Ziq^#8B5|9W;d0Ku>PJTJaYsvX}DVZSu7F%&~f#NwaDZeZg<PvDq=H-`UCPRW7 z906cQKw=dtRh*HSlcSK73JtK-6ot$@g~Xg3uH^gzuy=|;9xg6P%qz)E%uy)FF9O>K zihPh;U{2TL;tKI_RS5QX3ki1&a#ipQRtO045A$?!bx}}q3|8<AR?<-j_YCpy4-HWW zcMJ-0^b3hp@OM*i^ovyR_VjbnQE-h22yzV$R`3tv^7IYx@pN_3QSkJ0_6c?I^mA8m z3Jp>4^AAz*@$~f!adlA$@mBy@2sO&nH5g==uWOLAhofJJqm!qPXGo-uf}3ZEpKEY1 zmz#f(f}=u!V^D~vbEuDFkU~IcP=J51tAeASi-MoOpQoQ&kf)!!tFNnHh@OI{pMsyi zf@_$oUx-4mhog@V*eb`+5D)(#u=||-10sVw-917SJp6rJT!VrYoLm)rJRO~UTou4p z`9&%?`#5^~>L|E4`Z~IUTo<I^AL8K}1Xc!hUATuUNQleRPr=bo!O=Oy)87x|4QGG9 zkRV6r5FLdO|DX^Bf2h`Q&tO*_1;-%IU{HX#1^N5xD1d^~-wmY1(~ry9-_Oq#VhSjz l!LEkKh<^~69~$fmQVns7i>srLr=NQ;$j6}2gelhJ0s#NmR?GkZ literal 0 HcmV?d00001 diff --git a/vendor/github.com/cenkalti/backoff/v4/README.md b/vendor/github.com/cenkalti/backoff/v4/README.md new file mode 100644 index 0000000000000000000000000000000000000000..16abdfc084f73cb6658c2ddf463ac02ff666dd6e GIT binary patch literal 1752 zcmY#ZaIGlF&r8iK$xO^qa7s+h&QD8Ih*pet&v(gBj*U*wPsvYK$jnVlPmP80VnNbQ zrI|S?3c)3bC8fo&(IrKRWtqirWe_e{opXL!YEfc(DqLwYSRf|{p&Bj{%f%Iv0Wzjo zAyL6SU!fqss6-(@O`#+sRUsA0l}S)nCg!B)7iE@Y<SL{U<>x9yyXWVp=cK9^D|m#2 z1SmM?WTxhoDEMS16(tr`Dx~EXDR?E8C4xKwQl^_xQc|Fsl~|Ujn+#SNtH;F^jT{(I zYht6Z*<GHQof*rOS*(zlr+{!rNk(FcLTPbou|isEY6{2zg_3-Q+|rzq%z~WE<iwK9 zvecYPg_P9fqSVCVRItyA5=&A+zAVnqO;so;%1=%$F4p17%u~oON=YpO=}#|8Oesyw z$*ELG%gjpw+nAi3T2PXhl#{9e(yqr9l98%Vlv+}hnOck-R5_IjnR!sV67y0Nic9hf zU?Q1$=?di;sd);C3dyNOC5f4N3MCmusl^%jIVlR6#R|EpC3;+3%E}6%#fj;uTwI>H z;P@y=EXe>#C!}YVWRxc9CFkerC#U9RC+3u7>VtfopO&UyW|E+%5Re1*V_tp<#G_@Y zMa7x<c?t!IMI{P}C1B5|=B4OyafKGADuAM+*h*i&AUj<zJzp;+wM-ws4WN)I%S<f? zo0F2CT$-DjSCUwgnV$!7wsU@7Nl|7}X-Q^YIv1Cgf~P`xerZmMLQZCODoAg3YHEQ( z2`IhgK$A#fu|jcfVor`iVzEL&esOVTQckKKmln(;DfxNoB?`r<peRrX2vR7|EXl|( zEm6oXNX-KUW@4T~W^r+8ssbpaQ!<N_ON)y^;+Z81X_-aEB_N|b(?C&NkYAjdqL7@C zn3tXk3d_9w5>PDU=jP_;fs&6xa$<3+4#>rsIXNH=Nr_20l?q^G;Fwp)1jP*`bH-Yc z9(G(1t<VgMFaVs}_413-@rAv8F*w)j738IJL32Km8z6aKH#rk*40_6dX~3`<zc!Fv z_DMyFdC3{JxrxOksYP7Th++fbez=%kW<Jyl7>N_7IT&t2F|8=IAio%wnfghIDe0+t z#bxPerh@_+dufAkG*U882bW;_5DKG&(of3CPts3GG)zpiv@}k&G%&I-O-(kmFg3SK zGc+|dHa50QGB8Lrv`jKiOfp3=1yaQ67Z)Y#=O$+6>4VBWeNfhgSf!s>kf{$<Q(BUl zqmNV$g6ahSv@|`C7B1XnA;dpc`ueGPdZ5CwAT=d35u64<JY)mop``>DS9D@ZSz=yt lYKlT?MPhD2PAXD5BDx%~FG)<YP03GIF33*Tg_={$1pqfGcUb@c literal 0 HcmV?d00001 diff --git a/vendor/github.com/cenkalti/backoff/v4/backoff.go b/vendor/github.com/cenkalti/backoff/v4/backoff.go new file mode 100644 index 0000000000000000000000000000000000000000..3676ee405d87b3dc7b675f3c93f719a2abca12d2 GIT binary patch literal 2142 zcmdPbR|rT<&Q45ERY*!q&dyIuQ^?FM$Vtsj%_}K}3nk{H=NDy`WaJhrq~#YW6s49F zRc7X;E94iX7A2Ns=I0gbap~)G>FX<m7N;r%fut4EO7oIIQn+*|lw>59DC8zqDx@W5 z=797oc&0)1rsSs<E9B*uDCDN5mMB!_mli4HrKYA7>wv6C&M&CcFGwsdNmVGxNJZF_ znOBkzQCm=ypOu<iqL7%EqL7=Pl9^VikXQ_oQYg<X&Hz~jGAAS>wJ22~vsfW9r#N3B zBr`cXwMe0)vLIEVI5RghC$UJOBwwK<GdEQaA_vl^5Sd@9keryOP+FX-kXfRTnFcl% z<T#M(^8BJ~h4Rdj429&3#Js%J9C)|{r=}{nRwROgwpgJ!6%sN@sX6)O;P5Fe2E{-s zRDm8>0cxCZab@Nf<QJ7FD1qFg#07G`Q(|(qKPbA26%yeQRgj;PnOq4r5*|s3d5Cz@ z;{tmSt~akFwJ0qyIaQ&Wi&I};!7sI<1SVIMT2fk+R}2p0lu}4EgZ-G8S)!1XnwDRb zibx2ch=3;s9k5yXMKD+CDFm0~7l8C;=A~pNCxRm`u|y#+Um+J}N@i-YLUBfZX-<kl zQmR63VoItW$P^HUg_{C6kgPyLAgsU%ca@bb+$tm=XlPnP)MchAXu#FlBGiIhr3v*p zC&>FQ`QStc4msp71IcmLDx~HV!vYGdJUAycwE!H}aMM944u^J-Tevt;+y_ZrF3`Z` z0;y04N-a(;frM3NNoHb>LUBoA2`DhY5*nIZwcywXxm^JkoS;Y|7@lB<f|G3?ay)Bj z>TxCK=M|SgBMFq=VJ=dzRnRpATNjmDln+Z7pd6!+mRXUS0t<BoXtFEM$S+2eBcP-T z$zJ7&mBk8GsYUtV{F|Gam<K96!1*5~;eb?wLN7BlMIkdcH#H?Qu_QI85}c#*OG^~W z6EjOP^U`%d9#2in%*zDHLX$MI3yVvNN|Q^fYq_{Ug^+?ql7beJv?e5sH8d4)tH2XY z3e})wUs{x>V4#4A3&Mc|_HJShI4p{wc?(+P>Vac3Ex!nquTiYlQNR;g(EO5@T9#S_ z$~DlSg9Zr5Oqi>%1PGEejsQVXf#NFEbc+ZOkPc{=ID?W@VjjFS0Vf)$cVWo|TZn+t zLvdm*A{C{i<|I~vi{6lo%wkXq$;?wo&d)0;N-PHFlf*oQ)QW=qywp5!c0siRoZ!kc zGLti)kp?O(!A3%=pY)>q@?wRY{JiwkB3K=foS2h?nnM)wK_Lvv+Ym;2VrCvRl+pbO z329KF;t48S%Mx=?0}GUW;fWGWGa?=ouz>1XL~6#+NL2JB>A~Fu%Nl;E<!EMUq@X%j cQ$Y(&1;}%d1gxNjCRGiyz)B&dmaCQv09#kq*Z=?k literal 0 HcmV?d00001 diff --git a/vendor/github.com/cenkalti/backoff/v4/context.go b/vendor/github.com/cenkalti/backoff/v4/context.go new file mode 100644 index 0000000000000000000000000000000000000000..48482330eb763651b2217b2704de5903b155d8d2 GIT binary patch literal 1110 zcmXR&OwLYBPgO`tOwP_vOXK3o%q_?-DpAnj;#5k`&nro-C{g0#R4U2LO;zI3<l@rT zS8z&9&h}4BbB4$&WELwV!n7+C<mY52S1OcbB$g-?m*f`|D-@-c6jf&Cr7I++m82Fa zlw_nTK+Of2m07HioS2uKnv<HM$5m2Ukcwe?UP)?ET4HjlLbZavzCvDpPG(+-l|nk0 z=Hi69g^LsF8VyaD>3UERu39dL!5|+ZIlH)|s5H4mp&H4I<dO<(y7l!H!ZS-Upyq)* zR9ch=@-)<Pm_&JINd`>6LUKt3m%cv8iy%{TON&bs^72a*l2R4&GIO}nO7oJD4b@13 z`CA916J`p`51KGpm{nNAA~OxF*VYzf1;}HZ1&Mi?$r?&|nK>{Ml{C3HYq_{MGt(53 zbQJQl6|8I(lJqpRPy<KP8YETC#mQNeT2fk+r=W%^50Zfey_G_e9yB0yxHvgElS?YB z6hI)kqyi*R3$YNlK~T+B3P~X4XxeK*(FYE#^wbil?-7B85!oPLgMtCsZ&350nlZeV zoCFJH4RF|if~EvnKP+rQiZWA+F|;E&t0YM;B{e5CJ+UMeViMHP(BuvdrSziw(!3N6 zO}Mu-k`!PTz+9*RWniXdkoTa5Ch37vSS=SMDPc3kFSVis>URxI1yBaob15xKEXmBz z1DR8tnv)7i|H+BPsR}l_U=#IR^7B$PG_4R(A6$}Oz{Q!8nwD6aQ-UN8k99p1i$Jkm G%LM>)zG)Ny literal 0 HcmV?d00001 diff --git a/vendor/github.com/cenkalti/backoff/v4/exponential.go b/vendor/github.com/cenkalti/backoff/v4/exponential.go new file mode 100644 index 0000000000000000000000000000000000000000..2c56c1e7189ba605ae668e752b3781f815b1bbd1 GIT binary patch literal 5749 zcmXR&OwLYBPgO`tOwP_vOXK3o%q_?-DpAnj;#A5_EXmL>O3X`9;^I^)$;?ev;?m^e z(%0g0ttiOPOU*0EOw4ggOwRUCOH;@!R!D>yqL7(ekdvC5npcuol9`{UP?C{YqL7)F zT$GwvoLa0<l7X<UAhjqnKSd!ezepi9F*!q_D7B=hQX#RVBsI67M4_}eGcR2sQ32$J z{M^hch;eD9dC3TK(~I)UixpB4F3PFY<Kps5ttf#yO+yppxa7o~<kFnPlGGHasUTOR z<>%z&mxJs`%P-0;%}KQ4;(}Y2nxc@ISCU#(mYAbp%cTGUK_J(8!UVMxG$0OBC`-&K zO;yOu1L;jqRfslJ&{YUZ%u9j0*)1`-B)>>U!B9aPn?$T87nf(ALVig`YLP;Deo;!X z0;&hfGjnpFh9{+#l&7YG0yPyRg0Mp&4QvTlL26MlDCj|vnwpbeu8^3QqL7%BUzQ3E zc}NJue5S|6<pv7-ibPP9=_sUUmO;%%giS$WQDSatNor9sD0ooAz*fPC3!9G=Y!wXj zOt}<%OLIyx3vx13ixfagxj><wm|Rktm;+BN&?Hb=3=VLx8}m{tO3;!5mJl!m`^;FO zI5jyxFQr(AD;H*2ib7H)*dU~2p#x2Z#X1VGAT$CSU<NY)lx*@#Qmqtx6D#16oSawy zNwKK@28C%}ehJtTNFvCr0=plQVDz}SJk!9EplqX%nv+-n@?LRfUUI5JVxEF4BDq3S zsX}I6aY-UbI<r^-lv6+{H9bGISfL=X7;F!hZ(@Zj#GsJO+*FW%piz~ZT9T2Uf|g{8 zOA?Dpib0`RT9gM$;?Nwf7hIBGpvT1(l938`7ub=>iFpc1sR~7@#i=Er@Jmk2$pPsL z0tskn>Tz+oLQ;v9f;*N}l9HO1SejF!kXV#n3d;J$I^bMwXrNG1lnKrC#i@m*sUSas zV>2mLhYJ*riN(dGxgeX$Qx($l74pkci@-sL>R$zLL6WLqXi$=&P*PM0NsEQ0sl_D< z$_fgo(W3!P6PgO}#F?6+0FP9-G#8hGf*~kpL$HCKDTIMWMjPlEnd&GgC>ZFOo5pe} zC>S9WfP@e{1S{G=&)6KK$xzSG2&~B%Aqf^kaN(?I13gnSBOL_=Lp?JKbC69Ya5;z= zf(vIw8|Yb>7@O)S80ncBgY+PI0we@ih{T9C)H5;zxz1S6+!E|MGlVQy48eu7q7C&d zEX{Qk6ioHZER8@mnZxBEVhApr6>X$vVPdAEpkSeAYHR`0WC53hh#|OeR<wzpk(s5A zf}xR~g#kDmEa7qxF*p~&h&IzRF)-FqFtpS&GBk+gQZO`tOG3opTm%C-S8#Fpf%Cs7 zs4N7fVMu+GS*!rb>P4xEDZ0gpX{mZ#TKZfil?AETGIDWAQE76CLNynsXI>_#ii9US zkgcGsrsq;x1U8zB6H6_jkd~95SYl?v#femSg0zA$LK3Nv0?Q~UD4-dxudm>kR+3r- zD$tNh4shneQUVpFmXsFd6)Qjr2u^){1<w+Nyi`zjEH23}C|1Z!LpRA5RLpa6qUBUH zXMoIuxe(Kl&N=zX*$8Pcmy3%txwNP#HLnC7c4%gTOE*w42-OLe2JyLSxw!Q86~M-T z>ixt#NG+b0m<+1_62bKf*qcxrz<~xXs-PvY9wcU=CV(n?u-<AePQUze4Nb6mJtV7K zpambe5l{>^2{Ul@xRUepiowk)sCsOP!&br6z(7F@Vuf#JPEIDI9OL4IYQmOWKv7@{ zSAi|f*eV$6A*sNUaBLOK;PwWCt5bx5D76kGxNQ{-O%cw_D=kR{Hw^U^{8Gy?{SK|p zia`}0yq3#P!<Kg-4L(>^0trz)E>MFHyU`k&3R+k!tmfiOQn0dBP{Wj~=Hf)pmsVg; zK|>fVT6DNLvE@-K1*mc?5dzYJhy{q@$TlG4z$y{3flvxH9H|`wRf?30p{fx|k>o(C zLAeg925dW+011L5!HFAPHn_65BsCW-rNhNp%f*?b2d(?LI3Z<&LJ}x@feXH3gkl9q ziC10A1&Jw*5(Ok#O$D@U11cGz#({G!SQ=!mzP<vI6A+z<Vpwj5=S6Ubq7>Yh$jnXE z1Dl}7RhC$UVt_5OGeEA>*H-|02wVWdTEO6Ts6t6TR1jQZgIY~Rm5_o1)cgmvQi@W+ zWe%h<2y%Fl9;l#!7?@jHTmou5f!a)|DGEucY57H|(2hnDGy!WQVN0u;5GQG9f`TPU z4_YX}i#=O~Bt5hw35pl6Q$S^q0!RTk${?Wt4M(Kjg95zg193XIZ4IsU5I%%tJW%T# z-V@T-SAZvdq^7NcEm~VkOF_d>;m}5SLknE9K{`B|&;)_Q=SZ%Em8-Ct5fmEw`U<{@ z*{KS}rA4U<<*5o8iDjwanm9c_FBQ>D%uTGw%q`7DY0T<zal+c%R-h1aPc1>p9vYfl zoZw)vvQ<b=ErI0WFi;=PttdYi7WNuRdJq|CzZ2pm9dM^h&ka&XYiQ~yU__cGD2Bk@ zT~Hgs8MPt<*`1lDkfeuJXDZq%7$~Tz!F-_&cAp)lI#Brq%{@urraU;OLPbEDpeX>= z$DjlauJk}L3=0`hB32-#O9D#gNWBtJZpZ}nEI=KF@{H6xcoGIFO3cYgO#x*MkS>f) z21rGIZb2!icLPmxh#VZ6ms#PLn3u1isRwF$WEO*r0JXP3*%Oqt6jDLG)AEeW98g^j zA4O0o$j`}4t^`&0;9g`>C1}i`G!NA60U1$}nVg+kL?9cY1{k*V2o2;UJ*51m7hIa8 zk)#LDkDAcn_XLf0fTACg>7dyfk>8Rk6`;M<N>I-yvqYgh6V$KCNQH@K5_B={BnHhr z&Kar6+295Vs85xalV7d_YQw=epzumbElEuVMFuD?L5TyyrO=WwH?acldOa@A%rsat zRRc5qE7;j0$s*Nan)*q4i0TjIN=^*j;1Uf<4;N>xLTXNNDo)j)WDIXnYe3t_*j%Lr z%1y8#f+9^&#(^{zgP;vx*gz9>JSVLvKNnmpAcjI<m4+24S#d@~0}EDSDCmL<2eeTi z1uX?Mbvoz*3fjbJjD@CQJcSl)FaoI*h7?)(xv)6Fv>qi0p)FkGk~lLBtNTE$e{i%w za|W6>74-ELa^VGdUOv=}ywu`iP|^cuRdDfv#myiE26~_<;sjOeDXBRni3+w*6Hp3d z1udArG|=qV<O1u>&CG*G5F%Zot5wid09yjpgJ_j0;L)QE)x!nqEV-wafQlXPupfE~ zDoV@)jSC_<MMohQVMnYU*aT2%39Wt=z@d`_9>2>-1dXj~8!9BFCMT8_r-Je@D61lw z1`007a2QwuVKPX<7?g<fz&4bpDwHSYf!t|qtg4Wl0UmGy4Zaqq=A<T<fQq8jOz<eA rp^k!)LVl5gu^znfhmuM(kZsq7kA!L|XdwAZL017)nW3g8sDuOn*dtE$ literal 0 HcmV?d00001 diff --git a/vendor/github.com/cenkalti/backoff/v4/retry.go b/vendor/github.com/cenkalti/backoff/v4/retry.go new file mode 100644 index 0000000000000000000000000000000000000000..1ce2507ebc8be550a89b07d84e58f0fc55a50ee6 GIT binary patch literal 2510 zcmXR&OwLYBPgO`tOwP_vOXK3o%q_?-DpAnj;#5j4D#|Y^R^sARD#^@ERpQd*;?mbw zaLiNiFGwv)EXmBzQ^+h<NUcasE-lH-OIJv$R0v8fDXP@aRLC!aF#YmNGSezGH1$9_ zLo!ko^5I&`Gjnnjl2R3lQcH?5Q&SX5i$P{2!d#+Ike`#8T&a+mrjS_zQdC-$SFDhj zrvP@99#=_aK`N3%(n|A^H8dfTU}r*X201WMArI^d-TXXVux162VvzIo6g)vjC#PnX zrGm{yxDKK)F)sz=aA@Etq@?B~f?ZUC;*+$*%$(E|1|k_@;D!CnSw_VW*MRVc|w zECG21q!DHs)Puz(i6yBi3MKgp#U=R#AfFahX6B{qfb@ctLmUrxvqENZo_dKwa$-(S zY6>(Mpne5;O9Sk19R*N~>A93bq6rdl;J8r$8Hw;_zCvkUNoEcxh*R=Yi$Ng;azSYk zG@L;Z>6Dn9?Vpwgc3v?!BJ)APnqHb%l$ckN3UNCqB1`iW5=#_vQWJ|y6!P<uQ$cD$ zzVJ*_$cLI*tdOXn6_8q#o0ylHSK<mvU^-|{%7nWDlq_@<67y0(DnJI67bO-Hq^3Y( z8RUkd)RNMoJWx33>w^?PyjYx*np#i{(xi}{Uz86@oT&<F`9)xn6lj=09h8~^O13aB zCZ?677AYixjDkigBB&sC73*<<f*F#!HS!TDP)8w20cs3187fqBaY8gfR6}A(BVR`$ zNk<_sGe?uF7MxPSj)q8rqZRD`%(O~Gl!Fr%DB{483l5R;#LN-}m|wu|%`Z|&O-#;E zfI2*}q$D-BphO`lH7&m=RRJ6($Zm&NsDbbwJX0h2L<f{0Ku&?E#_O^0%#w_d%-qx> zgqaYZf-@g3AH#K#>2+wa0ScV-%(B!x1+Wu{4-im+rjU}FmROoo0?ss`RFYVtP+FW? ztWaE8T#}j#70xUM38pBNXQbwVq7Rh*3KENpL8%XsBp?9=_Z1>6u%;BW@YPW$fw&(j zpvw}AK<OQX^NYARLEOC53W!_b8JvqVGfkmH!PXY+uxc(&&JqP%1vRL@z(G=7%f(sC z#l@MDnwDAwPFfn8pcKkkq8D6}U!bAM#aXMN$;HK)TvDN6Wvh^$TH>6aSCU#$qLBm= zPSOiXElw=~sRLytkR6$6AXh2aA_{d4O>2k{!XdCMke8Xm#R+x+*bfD;G620e;Nk@N z1)R`}^&E>q<(ZCx8eBQV%`ijZ!g{VnMKI$t(-goVWUG**=a*Vh0?m~mw?V{h6+k`) zdmdz0a%xc#$j8Yg6(D0k>cB#ZNS=UM2$JC9g!%&}n2KsQIK3+%>xLBJ5U+ropb2v- zDC`r9N;DvXT%4T6sX3|1C19r|Cl;qF*yw^><&vM5s-bBGvKU&RfJ9x3ia@c!2~}94 z=L}H;j%Y~Hf?Col6lbRACFX!i#>5hEVTj26#TogfIVqs*j#MW@s~2=rN{UJ$ZgedI zr_KB#P)P>P0~)F5@u{f*F6A{e6^cuWKs7v~R7?d0Hwfp0JW|UADOs@@5t;`o`eF4u zD0raZ05$@z?ViONC5c7psU@I<nO~%-kd&XF12Q3AM<G8O6z>peJq@&aNfTar=Vya# z(AQUh2ZRF1IiPS%Re+Q_pd^%;hgrEnOI)}{P#S<a1f0e}E`jAEM0$hz4xDFd;qFj_ W8v_nfP!@D8DzXBZrvu8|wOjx$L_{e7 literal 0 HcmV?d00001 diff --git a/vendor/github.com/cenkalti/backoff/v4/ticker.go b/vendor/github.com/cenkalti/backoff/v4/ticker.go new file mode 100644 index 0000000000000000000000000000000000000000..df9d68bce527f2952dd8a6b4569fff26b6c214c2 GIT binary patch literal 2121 zcmXR&OwLYBPgO`tOwP_vOXK3o%q_?-DpAnj;#5k`&nro-C{g0#R4T5_O9s&;nYpP- zT$)^5`uYkXnaSCyMG6`DIVr^oi3-UXiFtXcISM5ii6sgtsX3WtsYS&K2_>1y*~RJ# z`Dq{}Ir+)i3W+5OAY+OZic&#VrKTt(RVpMZI3*@$`=_Ppap~*BOfOa_&&<hD0J$SG zuQXMmBwr!1s3@~6RiQj1HBX@=BUPcGD77pzzqD8(zaX_Ju_QA;Pa(5dp|}L3uc$OH zFEcM)2V`7vK0-w?#Em71*{KSN3gsD@IbfsH5;H+|mFA=<6qV*FWacRpmS!erD-@R| zC#Mz{XXfYWag|gSq{2L2TvAk;T%u6T#p$d71va{%Pyl;RFC;TJm5VbODgzE4WQio0 z1k~SLoXI5>5HXN{Q!7gJoFU=Q#R&?oB9I)&%pxw%;*$IV5Eo)7#2wYO5OM#!<WvPv zbm@UuT(#h+@=Gm;##T{kNoi3YD8BMi%V9nNS(um!3M)_~A;%*){EJibQb1t{3U828 z5HVO>keZyCmI;YMkTldY3W-JOrManjC3-L`GK)bbq?aZZCFYf+rlx@65|lJRX62+N z7MCdG=Ow4=DJX<wq=LN#N=li<3duS7#i=Qf_zo_~F94a6n_7~Qp8|^K<iwnu)D(sM zB3SBC00m94o`PoyNIEaSM4>n_4II0<iFug?r8$Wusi1TNGNzy?zbrEa<aS8fS18EO z$xN<P(8$X#NlePAQ~;TtnU}8Mms(K*^H_e7LQraPYKbPu1ZdL9NL2uNCAA1-Cp6LN zaix{!B`d%KULy(SL`?-PXk1itaYCX4p)5SJBm*4D8c8||YALB{iKRIuV1epdP4viw zD^`FQgBGjhnI##Z_$)0h$<GBRy&_QNQgBp&nhOzwWQNk>)MAC=%Hon#s8Wz$O5s7D zmze_+C`c?WPEA4g8{8cTPwGI;20I<a$C+tRDO+0wkg3&NoY3@bi|%1A&RS3gva(gk zP0UW!K+Rg3T%08eR<;UikiY~P<7@@V6gpg-oXJS+BnUeREM8Ip;-#mSKy#Nyk|szT zl&*`cAWj4ELFvd!0m))mE(58q<>D;SOVR@;1Px6t&h&hR61}3*JP;ca6$&NL$O5HV z1xS|5PXm>Kkd&gQ;FwmDTBHDy)=|jISIEsTf}|p7nU|ERPz=gHkYuD$0!uWSU@aP& zpkk*)59CTvHrI2>*8rtAkT@jEXh0-26(Gq5B&mRG3fQ$ELy|#(SfZEA#hH?tmRbbW zovg{l#fd26Gm8}nW?e4MM39%9A?AU~3=L4A>iOlDYiNRuOUo|;S;(20rT|rmlmwtT zfs2!~mWzv%vp6*;6;ifxCMOm{LIz~8jV?s16&EKb%syL%5<RGO$=RBqxCiO5(S?Kn zSY?S`vH~Qz>FX;56s4A>=9MU<m6nvk13j%MKUX0s6_njU;SMgI5G9cw$T~>OBAcIF zQlaOPpO>nk3AP2Upca&JYq>Dv4(?2FLIYP3nhNNZ1}Kma{)c#9FImAx7hK9%aX~@^ z*?$m=LD>mpF&AfEY6UoNfD$QE;RQ;bnQ01OSzB8LP}&38#aW^UVuEC$v4AkCL=O~) YMS8&{iA5zEAf1}<LJKD6tN|*S0F@1<%m4rY literal 0 HcmV?d00001 diff --git a/vendor/github.com/cenkalti/backoff/v4/timer.go b/vendor/github.com/cenkalti/backoff/v4/timer.go new file mode 100644 index 0000000000000000000000000000000000000000..8120d0213c58d550ea7cf20ab4d2329134abb12a GIT binary patch literal 750 zcmXR&OwLYBPgO`tOwP_vOXK3o%q_?-Dp61>$;?ev;^Hc)EJ#%d$;?eHQpn6JNi9lC zOiop(=Hd)4Nh~VSNGUB!EXmBzQvj*fbAj?SLDKmJ8k$_3&KjBuHoD0fiBKgVlelWR zxb*cEQc}|rOLIy<B1H<Bxdl0?xv6<2#Tb^A7H8(ALo5KRg*XXCcX3HkX>tk3Ss-^5 zDQJNxJ&0<EWzGsksU@XFdBqAP8L42yii#CL&dN*8Q7F&IOwLd!N=;79EK7x`NG>fZ zO3f<)t5hh@NX<j&Q%K7!N-fsoN-NDvR?sL>&_Z^KrUEt}gIor&U!g<~<hCL`XJ{yZ z!%?9a6q*p5!O{vP`Cw}l64Odji@<iLXO^YrDZm08m+fHVa77Eq8JTG?Cn(t3D&%G6 zfCM?Au2QfCdsxpewHzFHaDz0tIBOMBbBe)H4^yodlv<pMNCO}>a8KnIC}b8ZBq!$N zq^6*UUuLmFUVe!}X>n?bLSkNJZhld!LSkNuLQ!gQerZv1YOz9YVx>Y-szO>(YHAA3 bfDSGJB{7imk^H2H;U_(aIxfyyu39bt%%lC3 literal 0 HcmV?d00001 diff --git a/vendor/github.com/cenkalti/backoff/v4/tries.go b/vendor/github.com/cenkalti/backoff/v4/tries.go new file mode 100644 index 0000000000000000000000000000000000000000..28d58ca37c684020e7db4e1f5a1394cc4b4edef9 GIT binary patch literal 724 zcmXR&OwLYBPgO`tOwP_vOXK3o%q_?-Dp61>$;?ev;^NZR;tJ0!$?#3A2udv}%1kX* zNG?iEEJ-a^NK_~<N-QWyEmBA<$}i1JQAo_oFUd$PQgBL4&h}4B(@`kT$V|>qD9_Bv z;VMckDJ{xV2rkJlP{>SE@Jp>IfhyC`RLDpyR!B-s%~MED%*jbjQ7FmJSIAAwt5g8F zp;)0fGcP%nt0W^;At$l81T3f!lv<oxqM@l!o>&ak#l_{9Uy^F2;F(*HlbV~FSCUwg znV+YSS*(zkU!qWwQIwjPqFbDpma504rO%aCnwPAA>M@NZgv)aiD-=pI^GeK2G+}}Y z)m)rVU#Nis%RenG1QZ_CDXBTB>4_k#lXMhv6Dz=?Rv=a_S1lJ;No4^fbYU74ic5-0 zlS@G6!L-8c;NpbohuY4?nOB+%HV`II%LQ?}Mv{USvNJT%!W0yAdM>3!kWi@R;>=7_ zNYaBFZ)>Yy0CEA$OQ4A1;;cniW(QS;s@cX?AxRJJuxc(&PE=z+=5QiZXlsK_h6Y}e m9?aKzD5(GxR^V8{^cgI&tGSR&Rj^es0P*3bK~-_pasdFDqwl}~ literal 0 HcmV?d00001 diff --git a/vendor/modules.txt b/vendor/modules.txt index cc125ed7892e00bda7f373537e628ab49a99401a..e4d7aa31821205e1e8eb7e7920a4d8185d08933e 100644 GIT binary patch delta 74 zcmbQK^HpcUE~(_yyzIoBl1%-i#N_P!v^4!P6NNGpJwrX?$p@K46pXpjGfOf`lk}4F NbM>*P-MA)K6af2Z8rT2; delta 15 WcmeyWGgD{6uF3U`Je!pmgGB*0QU#6x -- GitLab