[{"data":1,"prerenderedAt":299},["ShallowReactive",2],{"term-r\u002Fretry-pattern":3,"related-r\u002Fretry-pattern":286},{"id":4,"title":5,"acronym":6,"body":7,"category":267,"description":268,"difficulty":269,"extension":270,"letter":271,"meta":272,"navigation":273,"path":274,"related":275,"seo":280,"sitemap":281,"stem":284,"subcategory":6,"__hash__":285},"terms\u002Fterms\u002Fr\u002Fretry-pattern.md","Retry Pattern",null,{"type":8,"value":9,"toc":261},"minimark",[10,15,19,23,26,30,250,254,257],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"Retry Pattern is trying something again when it fails, because sometimes failures are temporary (network hiccup, brief overload). But it's not just blindly retrying — smart retry uses exponential backoff (wait a bit, then a bit more) so you don't make an overloaded service worse.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"The Retry pattern handles transient failures by automatically re-attempting a failed operation. Best practices include: maximum retry count, exponential backoff (increasing delays), jitter (randomized delays to avoid thundering herd), and idempotency requirements. Works alongside Circuit Breaker.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","async function withRetry(fn, maxAttempts = 3) {\n  for (let attempt = 1; attempt \u003C= maxAttempts; attempt++) {\n    try {\n      return await fn();\n    } catch (e) {\n      if (attempt === maxAttempts) throw e;\n      await sleep(2 ** attempt * 100); \u002F\u002F exponential backoff\n    }\n  }\n}\n","javascript","",[38,39,40,83,129,137,155,173,199,232,238,244],"code",{"__ignoreMap":36},[41,42,45,49,52,56,60,64,67,70,73,77,80],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"spNyl","async",[41,50,51],{"class":47}," function",[41,53,55],{"class":54},"s2Zo4"," withRetry",[41,57,59],{"class":58},"sMK4o","(",[41,61,63],{"class":62},"sHdIc","fn",[41,65,66],{"class":58},",",[41,68,69],{"class":62}," maxAttempts",[41,71,72],{"class":58}," =",[41,74,76],{"class":75},"sbssI"," 3",[41,78,79],{"class":58},")",[41,81,82],{"class":58}," {\n",[41,84,86,90,94,97,101,103,106,109,111,114,116,118,120,123,126],{"class":43,"line":85},2,[41,87,89],{"class":88},"s7zQu","  for",[41,91,93],{"class":92},"swJcz"," (",[41,95,96],{"class":47},"let",[41,98,100],{"class":99},"sTEyZ"," attempt",[41,102,72],{"class":58},[41,104,105],{"class":75}," 1",[41,107,108],{"class":58},";",[41,110,100],{"class":99},[41,112,113],{"class":58}," \u003C=",[41,115,69],{"class":99},[41,117,108],{"class":58},[41,119,100],{"class":99},[41,121,122],{"class":58},"++",[41,124,125],{"class":92},") ",[41,127,128],{"class":58},"{\n",[41,130,132,135],{"class":43,"line":131},3,[41,133,134],{"class":88},"    try",[41,136,82],{"class":58},[41,138,140,143,146,149,152],{"class":43,"line":139},4,[41,141,142],{"class":88},"      return",[41,144,145],{"class":88}," await",[41,147,148],{"class":54}," fn",[41,150,151],{"class":92},"()",[41,153,154],{"class":58},";\n",[41,156,158,161,164,166,169,171],{"class":43,"line":157},5,[41,159,160],{"class":58},"    }",[41,162,163],{"class":88}," catch",[41,165,93],{"class":92},[41,167,168],{"class":99},"e",[41,170,125],{"class":92},[41,172,128],{"class":58},[41,174,176,179,181,184,187,189,191,194,197],{"class":43,"line":175},6,[41,177,178],{"class":88},"      if",[41,180,93],{"class":92},[41,182,183],{"class":99},"attempt",[41,185,186],{"class":58}," ===",[41,188,69],{"class":99},[41,190,125],{"class":92},[41,192,193],{"class":88},"throw",[41,195,196],{"class":99}," e",[41,198,154],{"class":58},[41,200,202,205,208,210,213,216,218,221,224,226,228],{"class":43,"line":201},7,[41,203,204],{"class":88},"      await",[41,206,207],{"class":54}," sleep",[41,209,59],{"class":92},[41,211,212],{"class":75},"2",[41,214,215],{"class":58}," **",[41,217,100],{"class":99},[41,219,220],{"class":58}," *",[41,222,223],{"class":75}," 100",[41,225,79],{"class":92},[41,227,108],{"class":58},[41,229,231],{"class":230},"sHwdD"," \u002F\u002F exponential backoff\n",[41,233,235],{"class":43,"line":234},8,[41,236,237],{"class":58},"    }\n",[41,239,241],{"class":43,"line":240},9,[41,242,243],{"class":58},"  }\n",[41,245,247],{"class":43,"line":246},10,[41,248,249],{"class":58},"}\n",[11,251,253],{"id":252},"when-youll-hear-this","When You'll Hear This",[16,255,256],{},"\"Add a retry with exponential backoff for the S3 upload.\" \u002F \"Retry three times before giving up and alerting the user.\"",[258,259,260],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":85,"depth":85,"links":262},[263,264,265,266],{"id":13,"depth":85,"text":14},{"id":21,"depth":85,"text":22},{"id":28,"depth":85,"text":29},{"id":252,"depth":85,"text":253},"architecture","Retry Pattern is trying something again when it fails, because sometimes failures are temporary (network hiccup, brief overload).","beginner","md","r",{},true,"\u002Fterms\u002Fr\u002Fretry-pattern",[276,277,278,279],"Circuit Breaker","Bulkhead Pattern","Message Queue","Resilience",{"title":5,"description":268},{"changefreq":282,"priority":283},"weekly",0.7,"terms\u002Fr\u002Fretry-pattern","Zn8hOnXpEcsCPj0zDf_q9mX4KKYQL-LXW7ZjeIdanqU",[287,292,296],{"title":277,"path":288,"acronym":6,"category":289,"difficulty":290,"description":291},"\u002Fterms\u002Fb\u002Fbulkhead-pattern","backend","advanced","The bulkhead pattern isolates different parts of your system so one failure doesn't sink everything. Named after ship bulkheads that contain flooding.",{"title":276,"path":293,"acronym":6,"category":267,"difficulty":294,"description":295},"\u002Fterms\u002Fc\u002Fcircuit-breaker","intermediate","Circuit Breaker is like the electrical circuit breaker in your house.",{"title":278,"path":297,"acronym":6,"category":267,"difficulty":294,"description":298},"\u002Fterms\u002Fm\u002Fmessage-queue","A Message Queue is a waiting room for tasks. Producers drop tasks in the queue, consumers pick them up and process them one at a time.",1776518308425]