injectHeartbeat writing failed on teardown

Abierto
#1,663 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 10 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
58/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
go, mysql
Área
database

Línea de trabajo

Empieza en go/logic/migrator.go, en finalCleanup y teardown, y sigue dónde se detiene injectHeartbeat durante el flujo de dry-run. Reproduce el problema con una limpieza lenta o un esquema grande y verifica que las escrituras de heartbeat se detengan antes de eliminar la tabla _ghc, sin los errores de teardown reportados.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

Hi all!

Environment:
Azure Mysql Flexible Sever, 8.0.44-azure
gh-ost 1.1.8

We have an instance with a number of partitioned tables and a large schema metadata. With this setup, the dry run check fails with the following errors (from the first to the last):

Closed streamer connection. err=<nil>
Dropping table `<redacted>_ghc`
Table dropped
Error 1146 (42S02): Table '<redacted>_ghc' doesn't exist
...
Error 1146 (42S02): Table '<redacted>_ghc' doesn't exist
...
injectHeartbeat writing failed 61 times, last error: Error 1146 (42S02): Table '<redacted>_ghc' doesn't exist

It appears that on slow disks/thousands of tables, finalCleanup is executed too early and drops the table before teardown (where injectHeartbeat actually stops). And deleting a '_ghc' table takes longer than default-retries (60) * heartbeat-interval-millis (100 ms).

Currently, this can be fixed by increasing default-retries or heartbeat-interval-millis (or both), but this seems like a workaround.

Is it possible to fix the order of execution?

Thanks in advance!

Lenguaje dominante
Go
Estrellas
13.6k
Forks
1.4k
Merge medio
9 d 19 h
PR fusionados (30 d)
1

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de github/gh-ost

Todos los issues de github/gh-ost

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.