Refine wait_timeout override to be at cut-over only#1406
Refine wait_timeout override to be at cut-over only#1406timvaillancourt merged 2 commits intogithub:masterfrom
wait_timeout override to be at cut-over only#1406Conversation
wait_timeout override to be at cut-over only
shlomi-noach
left a comment
There was a problem hiding this comment.
Nice work and in particular great analysis of this stalemate situation! This looks generally correct, but see inline comments:
- It break
gh-ostfor existing users - It adds variables where I think we can do without
- It adds code complexity which we can delegate to MySQL.
|
@shlomi-noach I'm curious about your feedback on one consequence of this change Following this PR, it is possible for the session holding the If understand this right, the lock-session hitting -initially-drop-old-table
Drop a possibly existing OLD table (remains from a previous run?) before beginning operation. Default is to panic and abort if such table existsWould |
No, actually. The The next cut-over attempt will first, before placing any locks, attempt to This should be safe. |
@shlomi-noach that makes sense (eventually)! Thanks for the validations and explanations |
|
@shlomi-noach / @meiji163: I believe I've addressed the PR suggestions and this is ready for another review 🙇 |
4d670bd to
d0854d6
Compare
c660492 to
59db6fa
Compare
Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com>
|
Merging. @shlomi-noach let me know if I missed something and I'll make a follow-up PR 👍 |
Related issue: #1407
Description
This PR refines #1401 by overriding the session
wait_timeoutonly where it is needed - at the cut-over time where an idle connection could lead to potentially-long table lock if thegh-ostprocess (or host running it) "freezes"/"stalls" at the cut-over stageThe change (at cut-over only):
wait_timeoutis fetched (via an existingselectthat fetchedtime_zone)wait_timeoutis set to be 3 x the lock-wait timeoutgh-oststalls with a still-active connection herewait_timeoutis restored to what it was set to pre-cut-overThe
--mysql-wait-timeoutflag added in #1401 is removed because it is no longer needed. No release has been cut since #1401, so this isn't necessarily a breaking changescript/cibuildreturns with no formatting errors, build errors or unit test errors.