`--resume` without `--execute` drops the ghost table it correctly skipped altering
Les mainteneurs répondent en général sous 10 jours
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 86/100
Piste de recherche
Commencez dans go/logic/migrator.go à finalCleanup et suivez l’état Noop et Resume pendant la séquence documentée de checkpoint et de resume. Reproduisez un dry-run de resume après une migration execute interrompue, puis vérifiez que la table fantôme existante reste disponible pour une exécution ultérieure avec --resume --execute.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
Running a checkpoint/resume migration with gh-ost --resume but without --execute
(i.e. a dry-run resume) correctly skips re-applying the ALTER to the ghost table, but
finalCleanup still drops the ghost table at the end, destroying the progress from the
interrupted real migration.
Steps to reproduce
- Start a migration with
--checkpointand--execute. - Interrupt it partway through row copy.
- Resume with
--resumebut omit--execute(dry-run resume). - Observe the ghost table is dropped even though no data was copied or altered in this run.
Expected behavior
A dry-run resume should not destroy the ghost table produced by the previous real run,
since it did none of the work that produced it and a subsequent --resume --execute
should still be able to use it.
Root cause
In finalCleanup (go/logic/migrator.go), the ghost table drop is gated only on
migrationContext.Noop, not on whether this is a resume:
if mgtr.migrationContext.Noop {
mgtr.applier.DropGhostTable()
}
This doesn't account for Resume=true, where the ghost table was not created by
this invocation and represents real, previously-copied data.
Workaround
Skip the dry-run resume step; go straight to --resume --execute.
- Langage dominant
- Go
- Étoiles
- 13.6k
- Forks
- 1.4k
- Merge moyen
- 9 j 19 h
- PR mergées (30 j)
- 1
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de github/gh-ost
-
[Suggestion] Apply simple validation to alter commandPeut-être pris @drkemp187 l’a pris il y a 106 jours. Ouverteenhancement good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
github/gh-ost#1431 · 4 commentaires ·
Les mainteneurs répondent en général sous 10 jours
-
Migration hangs when --attempt-instant-ddl succeedsPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
Les mainteneurs répondent en général sous 10 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
Les mainteneurs répondent en général sous 10 jours
-
Atomic cut-over always fails on MySQL 9.1+: information_schema.processlist errors out (3854) while another session runs a non-BMP utf8mb4 statementPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
github/gh-ost#1780 · 1 commentaire ·
Les mainteneurs répondent en général sous 10 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 10 jours
Toutes les issues de github/gh-ost
Issues similaires
-
type:bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
nightgauge/nightgauge#3266 ·
Les mainteneurs répondent en général sous 1 jour
-
area: ai-models priority: normal
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
prime-radiant-inc/evener#6325 ·
Les mainteneurs répondent en général sous 1 jour
-
team:library-maintainers
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
padok-team/burrito#1208 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
bazel-contrib/rules_go#4784 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour