It doesn't need any extra UI option, literally just within the context of the update transaction, you check either that a rowversion/timestamp hasn't been incremented (generally built-in), or you check that the remaining quantity hasn't changed (i.e. round-trip it). It is very standard "unit of work" functionality that exists in many applications.
Klods points are all fair - there are lots of ways to limit it happening from a player's perspective, and I do all of these. But statistically, take enough spots (I take many) and it will still happen at some point, and when it does, it's a right royal pain in the backside. It is very fixable (or "changeable" depending if it's thought of as deliberate). I buy into there not being compelling enough reasons to "fix" given that it's pretty rare, but it's definitely a simple fix if they want to.
I am pretty sure the "fix" already exists in some places in this app anyway. I did 159/160 on GBG, took the 160th at the same time as somebody else and was presented with "this sector has already been closed" rather than getting a reward and/or it locked for twice as long. Similarly I bet there aren't double rewards if two people click "motivate" on the last remaining unmotivated building in someone's city.
Even in GBG problem is there, but you never realize it. You are trying to increment from 124 to 125, but after you finish the fight it becomes 135 or 128. Because, someone doing battles with you. At the 159/160 scenario, it alert because, it is locked. Same cannot be done in GB. To get the same logic, it has to be with user actions. There is a possibility where both person has same timestamp (very rare- but it is possible to get that scenario on how close the milliseconds are calculated).
Just forgot the problem for a minute, take the normal usecase of 1.9 thread, you are trying to take 1st spot, no one else is there and you took it without any trouble. If the fix provided for it, when you apply for 1st spot, it will go check for spot taken already or not. By keeping the 5 row numbered mechanism, it will go and check the spot (it is a delay for sure). But currently, you never confirmed the UI about which spot you are taking. You just added the fps and it picked the next available slots. Did anywhere mention like reserving the 1st spot, actually no.
It just takes the next available spot. That's the solution and problem as well !! how much fps spending from our side if the next available spot can accommodate the fps, it will get placed without our confirmation. You cannot prevent it by without changing the User interface for booking the spots.
happy forging!! pirates are calling me from hideouts to spin the wheel!!