MDEV-28178 Windows : sporadic ER_ERROR_ON_RENAME .. (errno: 13 "Permission denied")
On affected machine, the error happens sporadically in innodb.instant_alter_limit. Procmon shows SetRenameInformationFile failing with ERROR_ACCESS_DENIED. In this case, the destination file was previously opened rsp oplocked by Windows defender antivirus. The fix is to retry MoveFileEx on ERROR_ACCESS_DENIED.
This commit is contained in:
parent
e048289e55
commit
739002eec9
@ -46,12 +46,15 @@ static BOOL win_rename_with_retries(const char *from, const char *to)
|
|||||||
|
|
||||||
for (int retry= RENAME_MAX_RETRIES; retry--;)
|
for (int retry= RENAME_MAX_RETRIES; retry--;)
|
||||||
{
|
{
|
||||||
DWORD ret = MoveFileEx(from, to,
|
BOOL ret= MoveFileEx(from, to,
|
||||||
MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING);
|
MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING);
|
||||||
|
|
||||||
DBUG_ASSERT(fp == NULL || (ret == FALSE && GetLastError() == ERROR_SHARING_VIOLATION));
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
if (!ret && (GetLastError() == ERROR_SHARING_VIOLATION))
|
DWORD last_error= GetLastError();
|
||||||
|
if (last_error == ERROR_SHARING_VIOLATION ||
|
||||||
|
last_error == ERROR_ACCESS_DENIED)
|
||||||
{
|
{
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user