Loading innobase/include/sync0arr.h +3 −1 Original line number Diff line number Diff line Loading @@ -97,9 +97,11 @@ sync_arr_wake_threads_if_sema_free(void); /************************************************************************** Prints warnings of long semaphore waits to stderr. */ void ibool sync_array_print_long_waits(void); /*=============================*/ /* out: TRUE if fatal semaphore wait threshold was exceeded */ /************************************************************************ Validates the integrity of the wait array. Checks that the number of reserved cells equals the count variable. */ Loading innobase/srv/srv0srv.c +16 −4 Original line number Diff line number Diff line Loading @@ -1820,7 +1820,8 @@ srv_error_monitor_thread( /* in: a dummy parameter required by os_thread_create */ { ulint cnt = 0; /* number of successive fatal timeouts observed */ ulint fatal_cnt = 0; dulint old_lsn; dulint new_lsn; Loading @@ -1833,8 +1834,6 @@ srv_error_monitor_thread( loop: srv_error_monitor_active = TRUE; cnt++; /* Try to track a strange bug reported by Harald Fuchs and others, where the lsn seems to decrease at times */ Loading @@ -1861,7 +1860,20 @@ srv_error_monitor_thread( srv_refresh_innodb_monitor_stats(); } sync_array_print_long_waits(); if (sync_array_print_long_waits()) { fatal_cnt++; if (fatal_cnt > 5) { fprintf(stderr, "InnoDB: Error: semaphore wait has lasted > %lu seconds\n" "InnoDB: We intentionally crash the server, because it appears to be hung.\n", srv_fatal_semaphore_wait_threshold); ut_error; } } else { fatal_cnt = 0; } /* Flush stderr so that a database user gets the output to possible MySQL error file */ Loading innobase/sync/sync0arr.c +7 −8 Original line number Diff line number Diff line Loading @@ -894,15 +894,18 @@ sync_arr_wake_threads_if_sema_free(void) /************************************************************************** Prints warnings of long semaphore waits to stderr. */ void ibool sync_array_print_long_waits(void) /*=============================*/ /* out: TRUE if fatal semaphore wait threshold was exceeded */ { sync_cell_t* cell; ibool old_val; ibool noticed = FALSE; ulint i; ulint fatal_timeout = srv_fatal_semaphore_wait_threshold; ibool fatal = FALSE; for (i = 0; i < sync_primary_wait_array->n_cells; i++) { Loading @@ -919,13 +922,7 @@ sync_array_print_long_waits(void) if (cell->wait_object != NULL && difftime(time(NULL), cell->reservation_time) > fatal_timeout) { fprintf(stderr, "InnoDB: Error: semaphore wait has lasted > %lu seconds\n" "InnoDB: We intentionally crash the server, because it appears to be hung.\n", fatal_timeout); ut_error; fatal = TRUE; } } Loading Loading @@ -953,6 +950,8 @@ sync_array_print_long_waits(void) fprintf(stderr, "InnoDB: ###### Diagnostic info printed to the standard error stream\n"); } return(fatal); } /************************************************************************** Loading scripts/mysqlhotcopy.sh +4 −4 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ use File::Path; use DBI; use Sys::Hostname; use File::Copy; use File::Temp; use File::Temp qw(tempfile); =head1 NAME Loading Loading @@ -39,7 +39,7 @@ WARNING: THIS PROGRAM IS STILL IN BETA. Comments/patches welcome. # Documentation continued at end of file my $VERSION = "1.21"; my $VERSION = "1.22"; my $opt_tmpdir = $ENV{TMPDIR} || "/tmp"; Loading Loading @@ -655,7 +655,7 @@ sub copy_index } elsif ($opt{method} =~ /^scp\b/) { my ($fh, $tmp)=tempfile('mysqlhotcopy-XXXXXX', DIR => $opt_tmpdir); my ($fh, $tmp)= tempfile('mysqlhotcopy-XXXXXX', DIR => $opt_tmpdir) or die "Can\'t create/open file in $opt_tmpdir\n"; if (syswrite($fh,$buff) != length($buff)) { Loading Loading
innobase/include/sync0arr.h +3 −1 Original line number Diff line number Diff line Loading @@ -97,9 +97,11 @@ sync_arr_wake_threads_if_sema_free(void); /************************************************************************** Prints warnings of long semaphore waits to stderr. */ void ibool sync_array_print_long_waits(void); /*=============================*/ /* out: TRUE if fatal semaphore wait threshold was exceeded */ /************************************************************************ Validates the integrity of the wait array. Checks that the number of reserved cells equals the count variable. */ Loading
innobase/srv/srv0srv.c +16 −4 Original line number Diff line number Diff line Loading @@ -1820,7 +1820,8 @@ srv_error_monitor_thread( /* in: a dummy parameter required by os_thread_create */ { ulint cnt = 0; /* number of successive fatal timeouts observed */ ulint fatal_cnt = 0; dulint old_lsn; dulint new_lsn; Loading @@ -1833,8 +1834,6 @@ srv_error_monitor_thread( loop: srv_error_monitor_active = TRUE; cnt++; /* Try to track a strange bug reported by Harald Fuchs and others, where the lsn seems to decrease at times */ Loading @@ -1861,7 +1860,20 @@ srv_error_monitor_thread( srv_refresh_innodb_monitor_stats(); } sync_array_print_long_waits(); if (sync_array_print_long_waits()) { fatal_cnt++; if (fatal_cnt > 5) { fprintf(stderr, "InnoDB: Error: semaphore wait has lasted > %lu seconds\n" "InnoDB: We intentionally crash the server, because it appears to be hung.\n", srv_fatal_semaphore_wait_threshold); ut_error; } } else { fatal_cnt = 0; } /* Flush stderr so that a database user gets the output to possible MySQL error file */ Loading
innobase/sync/sync0arr.c +7 −8 Original line number Diff line number Diff line Loading @@ -894,15 +894,18 @@ sync_arr_wake_threads_if_sema_free(void) /************************************************************************** Prints warnings of long semaphore waits to stderr. */ void ibool sync_array_print_long_waits(void) /*=============================*/ /* out: TRUE if fatal semaphore wait threshold was exceeded */ { sync_cell_t* cell; ibool old_val; ibool noticed = FALSE; ulint i; ulint fatal_timeout = srv_fatal_semaphore_wait_threshold; ibool fatal = FALSE; for (i = 0; i < sync_primary_wait_array->n_cells; i++) { Loading @@ -919,13 +922,7 @@ sync_array_print_long_waits(void) if (cell->wait_object != NULL && difftime(time(NULL), cell->reservation_time) > fatal_timeout) { fprintf(stderr, "InnoDB: Error: semaphore wait has lasted > %lu seconds\n" "InnoDB: We intentionally crash the server, because it appears to be hung.\n", fatal_timeout); ut_error; fatal = TRUE; } } Loading Loading @@ -953,6 +950,8 @@ sync_array_print_long_waits(void) fprintf(stderr, "InnoDB: ###### Diagnostic info printed to the standard error stream\n"); } return(fatal); } /************************************************************************** Loading
scripts/mysqlhotcopy.sh +4 −4 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ use File::Path; use DBI; use Sys::Hostname; use File::Copy; use File::Temp; use File::Temp qw(tempfile); =head1 NAME Loading Loading @@ -39,7 +39,7 @@ WARNING: THIS PROGRAM IS STILL IN BETA. Comments/patches welcome. # Documentation continued at end of file my $VERSION = "1.21"; my $VERSION = "1.22"; my $opt_tmpdir = $ENV{TMPDIR} || "/tmp"; Loading Loading @@ -655,7 +655,7 @@ sub copy_index } elsif ($opt{method} =~ /^scp\b/) { my ($fh, $tmp)=tempfile('mysqlhotcopy-XXXXXX', DIR => $opt_tmpdir); my ($fh, $tmp)= tempfile('mysqlhotcopy-XXXXXX', DIR => $opt_tmpdir) or die "Can\'t create/open file in $opt_tmpdir\n"; if (syswrite($fh,$buff) != length($buff)) { Loading