/* The following call prints an error message */
os_file_get_last_error(TRUE);
ib_logf(IB_LOG_LEVEL_ERROR,
"cannot create \'%s\'\n", log_bmp_sys->out.name);
log_bmp_sys->out.file = -1;
return FALSE;
}
The immediate fix is to ignore file-not-found for the delete attempt. This would be correct, but the fact that the file disappears between checking and deleting is still very suspicious and needs investigating.
The code path in question must be this
- a call to log_online_ should_ overwrite( bitmap file) finding a 0-sized file :
/* Currently, it's OK to overwrite 0-sized files only */ get_status( path, &file_info, false);
success = os_file_
return success && file_info.size == 0LL;
- then log_online_ start_bitmap_ file() trying to delete it and failing because the file is not found, and then aborting the file create.
/* Check for an old file that should be deleted first */ should_ overwrite( log_bmp_ sys->out. name)) {
if (log_online_
success = static_cast<ibool>( delete( innodb_ file_bmp_ key,
log_ bmp_sys- >out.name) );
os_file_
}
...
if (UNIV_UNLIKELY( !success) ) {
/* The following call prints an error message */ get_last_ error(TRUE) ; IB_LOG_ LEVEL_ERROR, sys->out. name); sys->out. file = -1;
os_file_
ib_logf(
"cannot create \'%s\'\n", log_bmp_
log_bmp_
return FALSE;
}
The immediate fix is to ignore file-not-found for the delete attempt. This would be correct, but the fact that the file disappears between checking and deleting is still very suspicious and needs investigating.