Endless loop on recovery
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
PBXT |
Fix Committed
|
Undecided
|
Vladimir Kolesnikov |
Bug Description
When PBXT did a recovery after kill -9, it entered into an endless loop as follows:
2111 while (!xt_xn_
2112 xt_lock_mutex(self, &db->db_sw_lock);
2113 pushr_(
2114 xt_wakeup_
2115 freer_(); // xt_unlock_
2116 xt_sleep_
2117 now = time(NULL);
2118 if (abort_time && now >= then + abort_time) {
2122 if (now >= then + 2) {
2123 if (!message) {
2111 while (!xt_xn_
Changed in pbxt: | |
status: | Confirmed → In Progress |
Philip,
is this repeatable?
according to the stack dump It looks like this happens right after recovery when sweeper removes uncommitted transactions after replaying the log. It might be possible to reproduce the problem by simply re-executing SQL commands from thr query log and killing server immediately afterwards. If you can repeat the problem please attach the database or instrcutions how to repeat.
We have a script that runs dbt2 test and kills server after a random period of time during the test. I was not able to reproduce the problem using that script.
Thanks.