Commit 5a4a3707 authored by Vladislav Vaintroub's avatar Vladislav Vaintroub

MDEV-10183 implement service_manager_extend_timeout on Windows

The implementation calls SetServiceStatus() with updated
SERVICE_STATUS::dwHint and SERVICE_STATUS::dwCheckpoint
parent 284ff64c
......@@ -43,7 +43,12 @@
#define SD_LISTEN_FDS_START (0)
#define sd_notify(X, Y)
#define sd_notifyf(E, F, ...)
#define service_manager_extend_timeout(I, FMTSTR, ...)
#ifdef _WIN32
#define service_manager_extend_timeout(I, F, ...) \
mysqld_win_extend_service_timeout(I)
#else
#define service_manager_extend_timeout(I, FMTSTR, ...)
#endif
#endif
#endif /* MY_SERVICE_MANAGER_INCLUDED */
......@@ -2752,6 +2752,12 @@ void mysqld_win_set_startup_complete()
}
void mysqld_win_extend_service_timeout(DWORD sec)
{
my_report_svc_status((DWORD)-1, 0, 2*1000*sec);
}
void mysqld_win_set_service_name(const char *name)
{
if (stricmp(name, "mysql"))
......
......@@ -968,6 +968,7 @@ extern int mysqld_main(int argc, char **argv);
extern HANDLE hEventShutdown;
extern void mysqld_win_initiate_shutdown();
extern void mysqld_win_set_startup_complete();
extern void mysqld_win_extend_service_timeout(DWORD sec);
extern void mysqld_set_service_status_callback(void (*)(DWORD, DWORD, DWORD));
extern void mysqld_win_set_service_name(const char *name);
#endif
......
......@@ -81,7 +81,8 @@ static void report_svc_status(DWORD current_state, DWORD exit_code, DWORD wait_h
return;
static DWORD check_point= 1;
svc_status.dwCurrentState= current_state;
if (current_state != (DWORD)-1)
svc_status.dwCurrentState= current_state;
svc_status.dwWaitHint= wait_hint;
if (exit_code)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment