Closed ctm closed 3 years ago
FWIW, it was AIYAH❗
's quit that killed mb2:
1509253 | 2021-03-05 23:32:23.006526+00 | 1 | "Quit" | 5954359414818829181 | 2021-03-05 23:32:23.008174+00
I know the above session id is his. My quit came in earlier:
1509248 | 2021-03-05 23:30:46.380184+00 | 1 | "Quit" | 2966088904328274233 | 2021-03-05 23:30:46.380475+00
so it's quite possible that my quit "worked". I don't see an entry in pay_outs
for me, but the rule might be that people with no chips get no pay_outs. I do see that my players
row was not updated after I quit, but again that might be because I quit with 0 chips:
mb2=> select * from pay_outs order by id desc limit 1;
select * from pay_outs order by id desc limit 1;
id | event_id | player_id | rank | pay_out | created_at
------+----------+-----------+------+---------+-------------------------------
2221 | 1922 | 6 | 1 | 550 | 2021-03-05 05:46:43.446539+00
mb2=> select updated_at from players where id = 10;
select updated_at from players where id = 10;
updated_at
-------------------------------
2021-03-05 23:13:26.047875+00
(1 row)
At this point, it probably makes sense to just try to recreate the situation locally. I think it's probably just a matter of two players start, one (the better, smarter and more good looking!) wins. The other quits (perhaps it matters that the quitter closes his table first, but it probably doesn't) and then the winner quits.
My guess is I can reproduce it trivially, in which case I can add some instrumentation and figure out exactly what is happening. However, this evening's tournament starts in a half hour, so I might not get this finished by then.
I'm an idiot:
fn begin_hand(&mut self) {
self.between_hands = false;
...
if self.n_players_in_next_hand() < 2 {
self.paused_due_to_too_few_players = true;
self.table_message(TableMessage::PausedTooFewPlayers);
self.send_status(None);
return;
}
I could have saved a lot of time by just glancing at the code before writing up this issue. Oh well. I may be able to deploy my fix before this evening's game, but it will be close.
Deploying now.
During devctm.com's first ring game, mb2 coughed up this:
The code in question:
Specifically, it's dying on the
self.n_not_all_in -= 1;
line. One possibility is thatbetween_hands
is false even though logically we're between hands.If I slog through the database and pay attention to timestamps I should be able to figure out what happened. If so, there's probably a trivial fix. The biggest question is which of the two of us (
deadhead
orAIYAH❗
quit.