#At bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-maria/ based on revid:sanja@stripped
2700 Guilhem Bichot 2008-11-20
During Maria's checkpoint, use the proper mutex to read transaction's short_id
modified:
storage/maria/trnman.c
per-file messages:
storage/maria/trnman.c
During Maria's checkpoint, we walk the list of active transactions; in this list we may find a transaction with a short_id of 0 which means "uninitialized" (is being created right now) and want to ignore this transaction. Such short_id is set under trn->state_lock, so use this mutex to reliably read short_id during checkpoint.
=== modified file 'storage/maria/trnman.c'
--- a/storage/maria/trnman.c 2008-11-05 21:17:09 +0000
+++ b/storage/maria/trnman.c 2008-11-20 14:11:00 +0000
@@ -682,7 +682,10 @@ my_bool trnman_collect_transactions(LEX_
*/
uint sid;
LSN rec_lsn, undo_lsn, first_undo_lsn;
- if ((sid= trn->short_id) == 0)
+ pthread_mutex_lock(&trn->state_lock);
+ sid= trn->short_id;
+ pthread_mutex_unlock(&trn->state_lock);
+ if (sid == 0)
{
/*
Not even inited, has done nothing. Or it is the
| Thread |
|---|
| • bzr commit into MySQL/Maria:mysql-maria branch (guilhem:2700) | Guilhem Bichot | 20 Nov |