ctm / mb2-doc

Mb2, poker software
https://devctm.com
7 stars 2 forks source link

Tournament hung at break time #1249

Closed ctm closed 9 months ago

ctm commented 9 months ago

Fix whatever bug caused this evening's BDSM tournament to hang.

At five of the hour, a hand finished, but we were never told we were on break AFAIK, and we never got a counter. Five minutes later the game didn't resume. There had been a table split earlier due to late registration and I assume that some sort of bookkeeping wasn't done properly and that the tournament paused the sole active table waiting for a zombie table to finish its hand.

I can check the logs for various things, but there was no panic so this one may be tough to track down.

ctm commented 9 months ago

The tournament definitely knew that the new table (5501) had finished and that break time had occurred, because it sent the proper messages.

select public_table_messages.id, received_at at time zone 'MST', table_id, message from public_table_messages join tables on public_table_messages.table_id = tables.id and event_id = 4914 where player_id IS NULL order by received_at;
...
 10122433 | 2023-11-29 18:39:24.081714 |     5501 | "TableFinished"
...
 10123114 | 2023-11-29 18:54:59.779168 |     5500 | "ThisTableIsOnBreak"

I'll have to look closely at the code that waits for each hand to finish.

ctm commented 9 months ago

Found it:

        if self.need_to_split {
            self.silently_fold_all_but_blinds();
            self.todo(NextAction::TryToPlaceLateRegistrants);
        } else if self.notify_tournament_of_finished_hand {
            self.todo(NextAction::HandFinished);
            self.notify_tournament_of_finished_hand = false;
        }

Obviously need_to_split was true, which means there are two bugs: need_to_split isn't being reset and HandFinished isn't being sent when need_to_split is set.

What was I thinking!?

ctm commented 9 months ago

Fixed. Deploying now.