this post was submitted on 07 Oct 2024
436 points (92.2% liked)
Ye Power Trippin' Bastards
296 readers
52 users here now
This is a community in the spirit of "Am I The Asshole" where people can post their own bans from lemmy or reddit or whatever and get some feedback from others whether the ban was justified or not.
Sometimes one just wants to be able to challenge the arguments some mod made and this could be the place for that.
Rules
- Post only about bans or other sanctions from mod(s).
- Provide the cause of the sanction (e.g. the text of the comment).
- Provide the reason given by the mods for the sanction.
- Don't use private communications to prove your point. We can't verify them and they can be faked easily.
- Don't deobfuscate mod names from the modlog with admin powers.
- Don't harass mods or brigade comms. Don't word your posts in a way that would trigger such harassment and brigades.
- Do not downvote posts if you think they deserved it. Use the comment votes (see below) for that.
- You can post about power trippin' in any social media, not just lemmy. Feel free to post about reddit or a forum etc.
Expect to receive feedback about your posts, they might even be negative.
Make sure you follow this instance's code of conduct. In other words we won't allow bellyaching about being sanctioned for hate speech or bigotry.
Some acronyms you might see.
- PTB - Power-Tripping Bastard: The commenter agrees with you this was a PTB mod.
- YDI - You Deserved It: The commenter thinks you deserved that mod action.
- BPR - Bait-Provoked Reaction: That mod probably overreacted in charged situation, or due to being baited.
- CLM - Clueless mod: The mod probably just doesn't understand how their software works.
Relevant comms
founded 3 months ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
As someone who implement a Lemmy client it might be a client side problem. If the server is struggling you will time out when sending the comment. If the client side has any sort of retry logic it will send the comment again. This can cause the comment to be posted multiple times. There might be a bug on the server as well but I know for sure it can be caused by the client.
It's what you are describing, and it's not a client problem. It's impossible for a client to solve. You can't tell whether a timed out request succeeded or not.
Idempotent network requests are a standard feature of many APIs - sending the same request multiple times should result in only one action being performed, but Lemmy doesn't support them yet.
So yes, it's "caused" by retries, but the bug is that the backend doesn't properly support retries. Clients don't do anything wrong.
It could/should be handled by the server but it's technically possible for the client to make due without it. You would need to handle it very carefully. For instance on timeouts, you can issue a get request to see if the comment posted. If it did then you do not issue another post.
Sure, that would work, but it's a hacky solution, and involves needing to send more requests in a scenario where requests are already unreliable.
They should do what Reddit does and by default make a 5 second rate limit of sending posts and comments, the first one gets accepted, the next ones get rejected within the 5 second ratelimit.
Another popular solution I see is to have the client generate a UUID when posting. Then the server can very easily tell if a request is a duplicate.
I've seen this concept called idempotency tokens. I thought it was common but a quick search didn't find any articles on it so maybe the name is not that common.
Nonce, maybe?
Nonce is the opposite. It's never supposed to be used more than once, right?
Yeah, that's the proper fix.
It doesn't solve the problem of your comment request timing out after waiting 30 seconds in a spotty mobile connection. Now that it timed out, you don't know if it was actually posted or not. A proper API would not post duplicate comments in response to retries of a request that already succeeded (without the client knowing).
That's a good point, I like @idunnololz@lemmy.world solution better. Make the request have it's own identifier and if one goes through disregard the rest.