diff options
-rw-r--r-- | innobase/include/ut0ut.h | 7 | ||||
-rw-r--r-- | innobase/log/log0log.c | 8 | ||||
-rw-r--r-- | innobase/srv/srv0start.c | 6 | ||||
-rw-r--r-- | innobase/ut/ut0ut.c | 37 |
4 files changed, 53 insertions, 5 deletions
diff --git a/innobase/include/ut0ut.h b/innobase/include/ut0ut.h index f2c4781c167..1e93a2b8a36 100644 --- a/innobase/include/ut0ut.h +++ b/innobase/include/ut0ut.h @@ -136,6 +136,13 @@ ut_difftime( /* out: time2 - time1 expressed in seconds */ ib_time_t time2, /* in: time */ ib_time_t time1); /* in: time */ +/************************************************************** +Prints a timestamp to a file. */ + +void +ut_print_timestamp( +/*===============*/ + FILE* file); /* in: file where to print */ /***************************************************************** Runs an idle loop on CPU. The argument gives the desired delay in microseconds on 100 MHz Pentium + Visual C++. */ diff --git a/innobase/log/log0log.c b/innobase/log/log0log.c index 46fcf400d34..31cf595e59e 100644 --- a/innobase/log/log0log.c +++ b/innobase/log/log0log.c @@ -2634,8 +2634,9 @@ logs_empty_and_mark_files_at_shutdown(void) { dulint lsn; ulint arch_log_no; - - fprintf(stderr, "InnoDB: Starting shutdown...\n"); + + ut_print_timestamp(stderr); + fprintf(stderr, " InnoDB: Starting shutdown...\n"); /* Wait until the master thread and all other operations are idle: our algorithm only works if the server is idle at shutdown */ @@ -2725,7 +2726,8 @@ loop: fil_flush_file_spaces(FIL_TABLESPACE); - fprintf(stderr, "InnoDB: Shutdown completed\n"); + ut_print_timestamp(stderr); + fprintf(stderr, " InnoDB: Shutdown completed\n"); } /********************************************************** diff --git a/innobase/srv/srv0start.c b/innobase/srv/srv0start.c index 29ddf2a21c8..b584b663e43 100644 --- a/innobase/srv/srv0start.c +++ b/innobase/srv/srv0start.c @@ -813,7 +813,8 @@ innobase_start_or_create_for_mysql(void) /* Create the thread which watches the timeouts for lock waits */ os_thread_create(&srv_lock_timeout_monitor_thread, NULL, thread_ids + 2 + SRV_MAX_N_IO_THREADS); - fprintf(stderr, "InnoDB: Started\n"); + ut_print_timestamp(stderr); + fprintf(stderr, " InnoDB: Started\n"); srv_was_started = TRUE; srv_is_being_started = FALSE; @@ -835,8 +836,9 @@ innobase_shutdown_for_mysql(void) { if (!srv_was_started) { if (srv_is_being_started) { + ut_print_timestamp(stderr); fprintf(stderr, - "InnoDB: Warning: shutting down not properly started database\n"); + " InnoDB: Warning: shutting down a not properly started database\n"); } return(DB_SUCCESS); } diff --git a/innobase/ut/ut0ut.c b/innobase/ut/ut0ut.c index cfd714fc275..cae0c3819f3 100644 --- a/innobase/ut/ut0ut.c +++ b/innobase/ut/ut0ut.c @@ -49,6 +49,43 @@ ut_difftime( return(difftime(time2, time1)); } +/************************************************************** +Prints a timestamp to a file. */ + +void +ut_print_timestamp( +/*===============*/ + FILE* file) /* in: file where to print */ +{ + struct tm* cal_tm_ptr; + struct tm cal_tm; + time_t tm; + + try_again: + time(&tm); + + cal_tm_ptr = localtime(&tm); + + memcpy(&cal_tm, cal_tm_ptr, sizeof(struct tm)); + + /* In theory localtime may return a wrong result because its return + struct is not protected with a mutex */ + + if (difftime(tm, mktime(&cal_tm)) > 0.5 + || difftime(tm, mktime(&cal_tm)) < -0.5) { + + goto try_again; + } + + fprintf(file,"%02d%02d%02d %2d:%02d:%02d", + cal_tm.tm_year % 100, + cal_tm.tm_mon+1, + cal_tm.tm_mday, + cal_tm.tm_hour, + cal_tm.tm_min, + cal_tm.tm_sec); +} + /***************************************************************** Runs an idle loop on CPU. The argument gives the desired delay in microseconds on 100 MHz Pentium + Visual C++. */ |