fix: reconnect to DB after long backup upload in Google Drive integra…#18
Open
kaulith wants to merge 1 commit into
Open
fix: reconnect to DB after long backup upload in Google Drive integra…#18kaulith wants to merge 1 commit into
kaulith wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #17
Problem
upload_system_backup_to_google_drive()runsmysqldumpas a subprocess and uploads large files to Google Drive. Both operations take significant time with zero DB activity.MySQL's
wait_timeoutkills the idle connection.When the function reaches
frappe.db.set_single_value("Google Drive", "last_backup_on", ...),the write fails on the dead connection.
This causes
last_backup_onto never update even though backups reach Google Drive successfully.Fix
Wrap the
set_single_valuecall in a try/except that reconnects on failure:Testing
Tested with a
4.4 GBdatabase backup file.Without the fix, the RQ job fails with
InterfaceError(0, '').With the fix,
last_backup_onupdates correctly after a51-minutejob (well beyond MySQL's600s/1500wait_timeout).