Binlog server: handle filestem in blr_handle_missing_files()

Routine blr_handle_missing_files() is called by
blr_handle_fake_rotate().

Field ‘filestem’ is updated in order to avoid wrong file name creation.

Additionally router is not creating any missing filenames if
router->binlog_name is empty (no previous binlog files)
This commit is contained in:
MassimilianoPinto 2017-08-18 09:45:10 +02:00
parent 6cc3986db5
commit 7c296d746f
2 changed files with 21 additions and 0 deletions

View File

@ -1098,6 +1098,8 @@ createInstance(SERVICE *service, char **options)
/* Force STOPPED state */
inst->master_state = BLRM_SLAVE_STOPPED;
/* Set current binlog file to empy value */
*inst->binlog_name = 0;
/* Set mysql_errno and error message */
inst->m_errno = BINLOG_FATAL_ERROR_READING;
inst->m_errmsg = MXS_STRDUP_A("HY000 Cannot find any GTID"

View File

@ -3370,7 +3370,26 @@ static bool blr_handle_missing_files(ROUTER_INSTANCE *router,
{
return false;
}
if (router->fileroot)
{
MXS_FREE(router->fileroot);
}
/* set filestem */
router->fileroot = MXS_STRNDUP_A(new_file, fptr - new_file);
new_fseqno = atol(fptr + 1);
if (!*router->binlog_name)
{
MXS_INFO("Fake ROTATE_EVENT comes with %s log file."
" Current router binlog file has not been set yet."
" Skipping creation of empty files"
" before sequence %" PRIu32 "",
new_file,
new_fseqno);
return true;
}
if (*router->binlog_name &&
(fptr = strrchr(router->binlog_name, '.')) == NULL)
{