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 @@ ...@@ -43,7 +43,12 @@
#define SD_LISTEN_FDS_START (0) #define SD_LISTEN_FDS_START (0)
#define sd_notify(X, Y) #define sd_notify(X, Y)
#define sd_notifyf(E, F, ...) #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
#endif /* MY_SERVICE_MANAGER_INCLUDED */ #endif /* MY_SERVICE_MANAGER_INCLUDED */
...@@ -2752,6 +2752,12 @@ void mysqld_win_set_startup_complete() ...@@ -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) void mysqld_win_set_service_name(const char *name)
{ {
if (stricmp(name, "mysql")) if (stricmp(name, "mysql"))
......
...@@ -968,6 +968,7 @@ extern int mysqld_main(int argc, char **argv); ...@@ -968,6 +968,7 @@ extern int mysqld_main(int argc, char **argv);
extern HANDLE hEventShutdown; extern HANDLE hEventShutdown;
extern void mysqld_win_initiate_shutdown(); extern void mysqld_win_initiate_shutdown();
extern void mysqld_win_set_startup_complete(); 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_set_service_status_callback(void (*)(DWORD, DWORD, DWORD));
extern void mysqld_win_set_service_name(const char *name); extern void mysqld_win_set_service_name(const char *name);
#endif #endif
......
...@@ -81,7 +81,8 @@ static void report_svc_status(DWORD current_state, DWORD exit_code, DWORD wait_h ...@@ -81,7 +81,8 @@ static void report_svc_status(DWORD current_state, DWORD exit_code, DWORD wait_h
return; return;
static DWORD check_point= 1; 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; svc_status.dwWaitHint= wait_hint;
if (exit_code) 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