OpenTenBase / OpenTenBase/TXSQL
BUG#34930969: Previous_gtids miss gtid when binlog_order_commits off
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C++
- Estrellas
- 338
- Forks
- 235
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
Problem
When binlog_order_commits is turned off, binlog rotate will wait for m_prep_xids to decrease to zero. However, m_prep_xids was decreased before updating the thread GTID to gtid_executed in MYSQL_BIN_LOG::finish_commit, causing GTIDs to be missed in the next binlog file Previous_gtids event.
Fix
The core fix moves dec_prep_xids to be called after gtid_state->update_on_commit in MYSQL_BIN_LOG::finish_commit. This ensures that when binlog rotate waits for m_prep_xids to reach zero, all GTIDs have already been registered in gtid_executed.
Additionally:
- Added
DEBUG_SYNCpointafter_dec_prep_xidsto enable deterministic testing - Added MTR test case
rpl_previous_gtidsto verify the fix
Commit
https://github.com/xyw0537/TXSQL/commit/ae7de225c2a
Branch: bugfix/previous_gtids_miss_gtid_binlog_order_commits_off
Upstream Reference
https://github.com/mysql/mysql-server/commit/a3faa6f8799e6c7c610245d2899386131731fb41
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza localizando MYSQL_BIN_LOG::finish_commit e inspecciona el orden de dec_prep_xids y gtid_state->update_on_commit. Revisa el punto DEBUG_SYNC after_dec_prep_xids y el caso de prueba MTR rpl_previous_gtids. Se considera terminado cuando la prueba verifica que Previous_gtids incluye todos los GTID confirmados cuando binlog_order_commits está desactivado.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp, mysql
- Área
- databases
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100