Commit fd8513fa authored by unknown's avatar unknown
Browse files

Refactored some code to remove ifdef and removed dead code related to un-useable sync code.


sql/ha_innodb.cc:
  Removing dead code
sql/handler.cc:
  Removing dead code
sql/handler.h:
  Removing Dead code
sql/sql_class.cc:
  Removing unneeded ifdef code.
sql/sql_repl.cc:
  Removing dead code.
parent 5ae7cf46
Loading
Loading
Loading
Loading
+0 −104
Original line number Diff line number Diff line
@@ -1969,110 +1969,6 @@ innobase_commit_complete(
	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. */
+0 −53
Original line number Diff line number Diff line
@@ -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 */
+0 −5
Original line number Diff line number Diff line
@@ -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);
+7 −9
Original line number Diff line number Diff line
@@ -961,14 +961,12 @@ bool select_send::send_data(List<Item> &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

  List_iterator_fast<Item> li(items);
  Protocol *protocol= thd->protocol;
@@ -998,12 +996,12 @@ bool select_send::send_data(List<Item> &items)

bool select_send::send_eof()
{
#ifdef WITH_INNOBASE_STORAGE_ENGINE
  /* We may be passing the control from mysqld to the client: release the
  /* 
    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 */
    by thd 
  */
  ha_release_temporary_latches(thd);
#endif

  /* Unlock tables before sending packet to gain some speed */
  if (thd->lock)
+0 −21
Original line number Diff line number Diff line
@@ -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 @@ impossible position";
  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);
  /*