Triple-T / gradle-play-publisher

GPP is Android's unofficial release automation Gradle Plugin. It can do anything from building, uploading, and then promoting your App Bundle or APK to publishing app listings and other metadata.
MIT License
4.1k stars 340 forks source link

Configurable auto-retry on 502 responses from google #1029

Closed trevjonez closed 2 years ago

trevjonez commented 2 years ago

Problem description

We recently added internal app sharing uploads to our PR pipelines, and it seems that API likes to throw 502's way more often than I would have expected. Given that a rerun or two is usually all it takes to get a 200 OK, Would it be reasonable to add an off by default configurable retry mechanism? Probably just a delay time and max count.

Potential solutions/workarounds

Manual intervention :disappointed:

Additional context

A failure occurred while executing com.github.triplet.gradle.play.tasks.PublishInternalSharingBundle$Processor
> There was a failure while executing work items
  > A failure occurred while executing com.github.triplet.gradle.play.tasks.PublishInternalSharingBundle$BundleUploader
    > 502 Bad Gateway
      PUT https://androidpublisher.googleapis.com/upload/androidpublisher/v3/applications/internalappsharing/[...]
      <!DOCTYPE html>
      <html lang=en>
        <meta charset=utf-8>
        <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
        <title>Error 502 (Server Error)!!1</title>
        <style>
          *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
        </style>
        <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
        <p><b>502.</b> <ins>That’s an error.</ins>
        <p>The server encountered a temporary error and could not complete your request.<p>Please try again in 30 seconds.  <ins>That’s all we know.</ins>
SUPERCILEX commented 2 years ago

Well that's a bummer. Seems like a good FR, don't see why it should be configurable though. We should just use this http://googleapis.github.io/google-http-java-client/exponential-backoff.html

MaciejCzekanski commented 2 years ago

I ran into the same problem recently while uploading multiple whitelabel apps at once. It worked completely fine a month or two ago, but now for some reason it fails unless I upload one by one.

SUPERCILEX commented 2 years ago

This will be available in the 4.0 snapshots in ~1 hour.