diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2022-12-13 11:37:33 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2022-12-13 11:37:33 +0200 |
commit | fdf43b5c78c4aeb26efdbef3172746e007ab6f1d (patch) | |
tree | 7497fd0a024da01b2ade9c45e484a9d004a3f13b /mysys/my_rename.c | |
parent | 382e85fe70cfffb6c7190c627647c19aed3912a5 (diff) | |
parent | 8f30973234de520d95dfccca8409e5802b845331 (diff) | |
download | mariadb-git-fdf43b5c78c4aeb26efdbef3172746e007ab6f1d.tar.gz |
Merge 10.3 into 10.4
Diffstat (limited to 'mysys/my_rename.c')
-rw-r--r-- | mysys/my_rename.c | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/mysys/my_rename.c b/mysys/my_rename.c index 389994b9a09..0c8f2530d6f 100644 --- a/mysys/my_rename.c +++ b/mysys/my_rename.c @@ -34,41 +34,24 @@ */ static BOOL win_rename_with_retries(const char *from, const char *to) { -#ifndef DBUG_OFF - FILE *fp = NULL; - DBUG_EXECUTE_IF("rename_sharing_violation", - { - fp= fopen(from, "r"); - DBUG_ASSERT(fp); - } - ); -#endif + DBUG_INJECT_FILE_SHARING_VIOLATION(from); - for (int retry= RENAME_MAX_RETRIES; retry--;) + for (int retry= FILE_SHARING_VIOLATION_RETRIES; retry--;) { BOOL ret= MoveFileEx(from, to, MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING); + DBUG_CLEAR_FILE_SHARING_VIOLATION(); + if (ret) return ret; DWORD last_error= GetLastError(); + if (last_error == ERROR_SHARING_VIOLATION || last_error == ERROR_ACCESS_DENIED) { -#ifndef DBUG_OFF - /* - If error was injected in via DBUG_EXECUTE_IF, close the file - that is causing ERROR_SHARING_VIOLATION, so that retry succeeds. - */ - if (fp) - { - fclose(fp); - fp= NULL; - } -#endif - - Sleep(10); + Sleep(FILE_SHARING_VIOLATION_DELAY_MS); } else return ret; |