Retrieving emotesets occasionally fails with error 500 (Internal server error)

This is further information on what is likely the issue reported here (currently closed via inactivity):

I’m making a request for various emotesets either singly or in groups (including singly requesting emoteset 0, which is as basic as it gets).

Those requests (formed identically each time) sometimes succeed, and sometimes fail with error 500 (unspecified server error).

My request is well-formed via the docs (Accepting application/vnd.twitchtv.v5+json, using clientId, etc.).

Identical requests sent at different times occasionally work just fine - and randomly sometimes (perhaps 25%-50% of the time) does not, returning HTTP error 500.

Free thought on this:

I’ve seen similar behavior in the past when we have a round-robin of hosted servers processing requests and one has an issue.

In this case, if there are 2-4 servers (i.e. the 25%-50% failure range) responding to these requests, and one is having issues and rejecting emote requests, the behavior would be similar - some percentage of failures of identical calls made by clients.

Error 500 should basically be rarely seen is my understanding (it’s the “we have no idea what happened but it’s server-side” HTTP error rather than a “your request was ill-formed” error)

Is there a way to confirm/check on the twitch side of this?

Here’s a bit of info: looking at the servers involved in several of these errors, I note that different servers are involved but always in seattle - is that server farm not caching the information properly for use in re-serving the data? I’ll do more digging and find out which servers are successfully serving the responses.

[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header X-Served-By: cache-sea4443-SEA, cache-lax8635-LAX
LogHttp: Warning: 000001F594D1B9C0 Response Header X-Served-By: cache-sea4467-SEA, cache-bur17555-BUR
LogHttp: Warning: 000001F549F7B4C0 Response Header Date: Tue, 21 Apr 2020 19:39:34 GMT
LogHttp: Warning: 000001F549F7B4C0 Response Header X-Served-By: cache-sea4459-SEA, cache-bur17567-BUR
LogHttp: Warning: 000001F562522D40 Response Header Date: Tue, 21 Apr 2020 19:40:29 GMT
LogHttp: Warning: 000001F562522D40 Response Header X-Served-By: cache-sea4422-SEA, cache-bur17567-BUR

Full warnings thrown on the http response by the UE4 HTTP request system from several requests (gotta love a “Warning - request has been successfully processed”) here for those:

LogHttp: Warning: 000001F594D1B9C0: request has been successfully processed. URL: https://api.twitch.tv/kraken/chat/emoticon_images?emotesets=0,300374282,300636018, HTTP code: 500, content length: 59, actual payload size: 59
LogHttp: Warning: 000001F594D1B9C0 Response Header Connection: keep-alive
LogHttp: Warning: 000001F594D1B9C0 Response Header Content-Length: 59
LogHttp: Warning: 000001F594D1B9C0 Response Header Content-Type: application/json; charset=utf-8
LogHttp: Warning: 000001F594D1B9C0 Response Header Access-Control-Allow-Origin: *
LogHttp: Warning: 000001F594D1B9C0 Response Header Cache-Control: no-cache, no-store, must-revalidate, private
LogHttp: Warning: 000001F594D1B9C0 Response Header Expires: 0
LogHttp: Warning: 000001F594D1B9C0 Response Header Pragma: no-cache
LogHttp: Warning: 000001F594D1B9C0 Response Header Timing-Allow-Origin: https://www.twitch.tv
LogHttp: Warning: 000001F594D1B9C0 Response Header Fastly-Restarts: 1
LogHttp: Warning: 000001F594D1B9C0 Response Header Date: Tue, 21 Apr 2020 19:02:08 GMT
LogHttp: Warning: 000001F594D1B9C0 Response Header X-Served-By: cache-sea4467-SEA, cache-bur17555-BUR
LogHttp: Warning: 000001F594D1B9C0 Response Header X-Cache: MISS, MISS
LogHttp: Warning: 000001F594D1B9C0 Response Header X-Cache-Hits: 0, 0
LogHttp: Warning: 000001F594D1B9C0 Response Header X-Timer: S1587495728.281392,VS0,VS0,VE112
LogHttp: Warning: 000001F594D1B9C0 Response Header Vary: Accept-Encoding
LogHttp: Warning: 000001F594D1B9C0 Response Header Strict-Transport-Security: max-age=300

Here’s another one, this time just for emote set 0:
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0: request has been successfully processed. URL: https://api.twitch.tv/kraken/chat/emoticon_images?emotesets=0, HTTP code: 500, content length: 59, actual payload size: 59
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Connection: keep-alive
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Content-Length: 59
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Content-Type: application/json; charset=utf-8
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Access-Control-Allow-Origin: *
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Cache-Control: no-cache, no-store, must-revalidate, private
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Expires: 0
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Pragma: no-cache
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Timing-Allow-Origin: https://www.twitch.tv
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Fastly-Restarts: 1
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Date: Tue, 21 Apr 2020 08:35:03 GMT
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header X-Served-By: cache-sea4443-SEA, cache-lax8635-LAX
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header X-Cache: MISS, MISS
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header X-Cache-Hits: 0, 0
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header X-Timer: S1587458103.039540,VS0,VS0,VE96
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Vary: Accept-Encoding
[2020.04.21-08.35.02:747][905]LogHttp: Warning: 000001E284504FC0 Response Header Strict-Transport-Security: max-age=300

Edit - See next reply for more specific info

Further information:
The successful responses all exist cached on one server. The unsuccessful responses are always MISS, MISS when it comes to being cached.

I have not yet seen any seattle server which has the emotes cached.

Success:
GV_TwitchLog: EmoteSet response header: X-Served-By: cache-sea4480-SEA, cache-bur17534-BUR
GV_TwitchLog: EmoteSet response header: X-Cache: MISS, HIT

Fail:
GV_TwitchLog: EmoteSet response header: X-Served-By: cache-sea4480-SEA, cache-bur17561-BUR
GV_TwitchLog: EmoteSet response header: X-Cache: MISS, MISS

Example success:
GV_TwitchLog: EmoteSet response header: Connection: keep-alive
GV_TwitchLog: EmoteSet response header: Content-Length: 2719
GV_TwitchLog: EmoteSet response header: Content-Type: application/json; charset=utf-8
GV_TwitchLog: EmoteSet response header: Access-Control-Allow-Origin: *
GV_TwitchLog: EmoteSet response header: Cache-Control: no-cache, no-store, must-revalidate, private
GV_TwitchLog: EmoteSet response header: Content-Encoding: gzip
GV_TwitchLog: EmoteSet response header: Expires: 0
GV_TwitchLog: EmoteSet response header: Pragma: no-cache
GV_TwitchLog: EmoteSet response header: Timing-Allow-Origin: https://www.twitch.tv
GV_TwitchLog: EmoteSet response header: Date: Tue, 21 Apr 2020 20:32:15 GMT
GV_TwitchLog: EmoteSet response header: X-Served-By: cache-sea4480-SEA, cache-bur17534-BUR
GV_TwitchLog: EmoteSet response header: X-Cache: MISS, HIT
GV_TwitchLog: EmoteSet response header: X-Cache-Hits: 0, 1
GV_TwitchLog: EmoteSet response header: X-Timer: S1587501135.495488,VS0,VS0,VE1
GV_TwitchLog: EmoteSet response header: Vary: Accept-Encoding
GV_TwitchLog: EmoteSet response header: Strict-Transport-Security: max-age=300

Example Failure:
GV_TwitchLog: EmoteSet response header: Connection: keep-alive
GV_TwitchLog: EmoteSet response header: Content-Type: application/json; charset=utf-8
GV_TwitchLog: EmoteSet response header: Access-Control-Allow-Origin: *
GV_TwitchLog: EmoteSet response header: Cache-Control: no-cache, no-store, must-revalidate, private
GV_TwitchLog: EmoteSet response header: Content-Encoding: gzip
GV_TwitchLog: EmoteSet response header: Expires: 0
GV_TwitchLog: EmoteSet response header: Pragma: no-cache
GV_TwitchLog: EmoteSet response header: Timing-Allow-Origin: https://www.twitch.tv
GV_TwitchLog: EmoteSet response header: Date: Tue, 21 Apr 2020 20:31:25 GMT
GV_TwitchLog: EmoteSet response header: X-Served-By: cache-sea4480-SEA, cache-bur17561-BUR
GV_TwitchLog: EmoteSet response header: X-Cache: MISS, MISS
GV_TwitchLog: EmoteSet response header: X-Cache-Hits: 0, 0
GV_TwitchLog: EmoteSet response header: X-Timer: S1587501086.909211,VS0,VS0,VE39
GV_TwitchLog: EmoteSet response header: Vary: Accept-Encoding
GV_TwitchLog: EmoteSet response header: Strict-Transport-Security: max-age=300
GV_TwitchLog: EmoteSet response header: transfer-encoding: chunked

I’ll tweak the header settings and see if I can form a response type that doesn’t care about the server cache, but I would have expected this to always be reloading the emotes into the cache already on the servers based on the pragma - I’m not an expert, so we’ll see.

This is an open issue https://github.com/twitchdev/issues/issues/50

1 Like

Thanks - linked this post in that thread as well for the relevant info. Appreciate it.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.