🤔 The server spits out html when it cannot reach the backend. So one could argue it’s a configuration issue because the admin didn’t provide enough capacity / didn’t set up a proper generic json error for backend failures.
FWIW, Liftoff doesn’t handle these super gracefully either.
At any rate I think it’s kinda awesome that we get to witness these kinds of infancy problems.
No, this is a lemmy issue. The API specification specifies a JSON response, and the server randomly provides HTML, this is a bug in the server. I agree that Jebora should retry in the case of a network failure (timeout, 4xx staus codes…) but it should not have to retry in a case of a server that is not folowing the standard.
lemmy does not return 502 error codes because 502 means “bad gateway” and lemmy is not acting as a gateway, nginx is. An nginx sends the html. All apps should check the status code for codes like this one that don’t come from apps.
Yes a 502 returns html (from nginx). But at that point, you should be validating the status code of the response instead of attempting a deserialization right away.
This is a basic thing which according to other comments at least 4 apps are not doing and should definitely be present.
If it’s Jerboa/Android app issue, why do I get JSON errors using Lemmy on my desktop PC with Firefox? Forgive me if this is a dumb question, I have very little programming knowledge.
Serious Answer: This is a Jerboa issue. Lemmy is written in Rust. The error message is a Java error which is what native Android apps use.
I think it’s both, actually. Lemmy is often giving html where json is expected, and Jerboa isn’t handling the error well.
🤔 The server spits out html when it cannot reach the backend. So one could argue it’s a configuration issue because the admin didn’t provide enough capacity / didn’t set up a proper generic json error for backend failures.
FWIW, Liftoff doesn’t handle these super gracefully either.
At any rate I think it’s kinda awesome that we get to witness these kinds of infancy problems.
Well, what should Jerboa do? Pretend it received content?
Take it as an error, tell the user about it and then retry with exponential back-off.
It should display a human-readable error message instead of the raw one.
No, it’s probably when the app is expecting a json but the server returns an html, which usually happens in case of 502 errors.
You really shouldn’t be expecting any content type when you get any code but a 200. If anything you should expect HTML, then, possibly plain text.
No, this is a lemmy issue. The API specification specifies a JSON response, and the server randomly provides HTML, this is a bug in the server. I agree that Jebora should retry in the case of a network failure (timeout, 4xx staus codes…) but it should not have to retry in a case of a server that is not folowing the standard.
lemmy does not return 502 error codes because 502 means “bad gateway” and lemmy is not acting as a gateway, nginx is. An nginx sends the html. All apps should check the status code for codes like this one that don’t come from apps.
Unfortunately this is a bug in the UI.
Yes a 502 returns html (from nginx). But at that point, you should be validating the status code of the response instead of attempting a deserialization right away.
This is a basic thing which according to other comments at least 4 apps are not doing and should definitely be present.
If it’s Jerboa/Android app issue, why do I get JSON errors using Lemmy on my desktop PC with Firefox? Forgive me if this is a dumb question, I have very little programming knowledge.