diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 416d67aec39..bf07d56565a 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -1969,110 +1969,6 @@ try_again: return(0); } -#ifdef HAVE_REPLICATION -/********************************************************************* -In synchronous replication, reports to InnoDB up to which binlog position -we have sent the binlog to the slave. Note that replication is synchronous -for one slave only. For other slaves, we do nothing in this function. This -function is used in a replication master. */ - -int -innobase_repl_report_sent_binlog( -/*=============================*/ - /* out: 0 */ - THD* thd, /* in: thread doing the binlog communication to - the slave */ - char* log_file_name, /* in: binlog file name */ - my_off_t end_offset) /* in: the offset in the binlog file up to - which we sent the contents to the slave */ -{ - int cmp; - ibool can_release_threads = 0; - - if (!innodb_inited) { - - return 0; - } - - /* If synchronous replication is not switched on, or this thd is - sending binlog to a slave where we do not need synchronous replication, - then return immediately */ - - if (thd->server_id != thd->variables.sync_replication_slave_id) { - - /* Do nothing */ - - return(0); - } - - pthread_mutex_lock(&innobase_repl_cond_mutex); - - if (innobase_repl_state == 0) { - - ut_print_timestamp(stderr); - sql_print_warning("Switching MySQL synchronous replication on " - "again at binlog file %s, position %lu", - log_file_name, (ulong) end_offset); - - innobase_repl_state = 1; - } - - /* The position should increase monotonically, since just one thread - is sending the binlog to the slave for which we want synchronous - replication. Let us check this, and print an error to the .err log - if that is not the case. */ - - if (innobase_repl_file_name_inited) { - cmp = strcmp(log_file_name, innobase_repl_file_name); - - if (cmp < 0 - || (cmp == 0 && end_offset < innobase_repl_pos)) { - - ut_print_timestamp(stderr); - sql_print_error("MySQL synchronous replication has " - "sent binlog to the slave up to file " - "%s, position %lu, but now MySQL " - "reports that it sent the binlog only " - "up to file %s, position %lu", - innobase_repl_file_name, - (ulong) innobase_repl_pos, - log_file_name, (ulong) end_offset); - } - } - - strcpy(innobase_repl_file_name, log_file_name); - innobase_repl_pos = end_offset; - innobase_repl_file_name_inited = 1; - - if (innobase_repl_n_wait_threads > 0) { - /* Let us check if some of the waiting threads doing a trx - commit can now proceed */ - - cmp = strcmp(innobase_repl_file_name, - innobase_repl_wait_file_name); - if (cmp > 0 - || (cmp == 0 && innobase_repl_pos - >= innobase_repl_wait_pos)) { - - /* Yes, at least one waiting thread can now proceed: - let us release all waiting threads with a broadcast */ - - can_release_threads = 1; - - innobase_repl_wait_file_name_inited = 0; - } - } - - pthread_mutex_unlock(&innobase_repl_cond_mutex); - - if (can_release_threads) { - - pthread_cond_broadcast(&innobase_repl_cond); - } - - return(0); -} -#endif /* HAVE_REPLICATION */ /********************************************************************* Rolls back a transaction or the latest SQL statement. */ diff --git a/sql/handler.cc b/sql/handler.cc index 7b232f343c0..c53ee4153f9 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -3316,56 +3316,3 @@ int handler::ha_delete_row(const byte *buf) #endif return 0; } - - -#ifdef HAVE_REPLICATION -/* - Reports to table handlers up to which position we have sent the binlog - to a slave in replication - - SYNOPSIS - ha_repl_report_sent_binlog() - thd thread doing the binlog communication to the slave - log_file_name binlog file name - end_offse t the offset in the binlog file up to which we sent the - contents to the slave - - NOTES - Only works for InnoDB at the moment - - RETURN VALUE - Always 0 (= success) -*/ - -int ha_repl_report_sent_binlog(THD *thd, char *log_file_name, - my_off_t end_offset) -{ -#ifdef WITH_INNOBASE_STORAGE_ENGINE - innobase_repl_report_sent_binlog(thd, log_file_name, end_offset); -#endif - return 0; -} - - -/* - Reports to table handlers that we stop replication to a specific slave - - SYNOPSIS - ha_repl_report_replication_stop() - thd thread doing the binlog communication to the slave - - NOTES - Does nothing at the moment - - RETURN VALUE - Always 0 (= success) - - PARAMETERS -*/ - -int ha_repl_report_replication_stop(THD *thd) -{ - return 0; -} -#endif /* HAVE_REPLICATION */ - diff --git a/sql/handler.h b/sql/handler.h index d564c7ee28e..ef7c206486a 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1605,11 +1605,6 @@ void trans_register_ha(THD *thd, bool all, handlerton *ht); #define trans_need_2pc(thd, all) ((total_ha_2pc > 1) && \ !((all ? &thd->transaction.all : &thd->transaction.stmt)->no_2pc)) -/* semi-synchronous replication */ -int ha_repl_report_sent_binlog(THD *thd, char *log_file_name, - my_off_t end_offset); -int ha_repl_report_replication_stop(THD *thd); - #ifdef HAVE_NDB_BINLOG int ha_reset_logs(THD *thd); int ha_binlog_index_purge_file(THD *thd, const char *file); diff --git a/sql/sql_class.cc b/sql/sql_class.cc index ee0f4e8ad1f..123152c95ec 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -961,14 +961,12 @@ bool select_send::send_data(List &items) return 0; } -#ifdef WITH_INNOBASE_STORAGE_ENGINE /* We may be passing the control from mysqld to the client: release the InnoDB adaptive hash S-latch to avoid thread deadlocks if it was reserved by thd */ - ha_release_temporary_latches(thd); -#endif + ha_release_temporary_latches(thd); List_iterator_fast li(items); Protocol *protocol= thd->protocol; @@ -998,12 +996,12 @@ bool select_send::send_data(List &items) bool select_send::send_eof() { -#ifdef WITH_INNOBASE_STORAGE_ENGINE - /* We may be passing the control from mysqld to the client: release the - InnoDB adaptive hash S-latch to avoid thread deadlocks if it was reserved - by thd */ - ha_release_temporary_latches(thd); -#endif + /* + We may be passing the control from mysqld to the client: release the + InnoDB adaptive hash S-latch to avoid thread deadlocks if it was reserved + by thd + */ + ha_release_temporary_latches(thd); /* Unlock tables before sending packet to gain some speed */ if (thd->lock) diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 743a0a6b565..e900d33f743 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -386,9 +386,6 @@ impossible position"; goto err; } - if (thd->variables.sync_replication) - ha_repl_report_sent_binlog(thd, log_file_name, pos); - /* We need to start a packet with something other than 255 to distinguish it from error @@ -475,9 +472,6 @@ impossible position"; goto err; } - if (thd->variables.sync_replication) - ha_repl_report_sent_binlog(thd, log_file_name, my_b_tell(&log)); - /* No need to save this event. We are only doing simple reads (no real parsing of the events) so we don't need it. And so @@ -536,9 +530,6 @@ impossible position"; goto err; } - if (thd->variables.sync_replication) - ha_repl_report_sent_binlog(thd, log_file_name, my_b_tell(&log)); - DBUG_PRINT("info", ("log event code %d", (*packet)[LOG_EVENT_OFFSET+1] )); if ((*packet)[LOG_EVENT_OFFSET+1] == LOAD_EVENT) @@ -652,9 +643,6 @@ impossible position"; goto err; } - if (thd->variables.sync_replication) - ha_repl_report_sent_binlog(thd, log_file_name, my_b_tell(&log)); - if ((*packet)[LOG_EVENT_OFFSET+1] == LOAD_EVENT) { if (send_file(thd)) @@ -721,18 +709,12 @@ impossible position"; goto err; } - if (thd->variables.sync_replication) - ha_repl_report_sent_binlog(thd, log_file_name, 0); - packet->length(0); packet->append('\0'); } } end: - if (thd->variables.sync_replication) - ha_repl_report_replication_stop(thd); - end_io_cache(&log); (void)my_close(file, MYF(MY_WME)); @@ -744,9 +726,6 @@ end: DBUG_VOID_RETURN; err: - if (thd->variables.sync_replication) - ha_repl_report_replication_stop(thd); - thd->proc_info = "Waiting to finalize termination"; end_io_cache(&log); /*