~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_repl.cc

  • Committer: Brian Aker
  • Date: 2008-10-08 02:16:25 UTC
  • Revision ID: brian@tangent.org-20081008021625-3756823nqs1phvsn
More effort around master.info (and relay.info)

Show diffs side-by-side

added added

removed removed

Lines of Context:
848
848
    thread_mask&= thd->lex->slave_thd_opt;
849
849
  if (thread_mask) //some threads are stopped, start them
850
850
  {
851
 
    if (init_master_info(mi,master_info_file,relay_log_info_file, 0,
852
 
                         thread_mask))
 
851
    if (mi->init_master_info(master_info_file, relay_log_info_file, 0, thread_mask))
853
852
      slave_errno=ER_MASTER_INFO;
854
 
    else if (server_id_supplied && *mi->host)
 
853
    else if (server_id_supplied && *mi->getHostname())
855
854
    {
856
855
      /*
857
856
        If we will start SQL thread we will care about UNTIL options If
1038
1037
    goto err;
1039
1038
 
1040
1039
  /* Clear master's log coordinates */
1041
 
  init_master_log_pos(mi);
 
1040
  mi->init_master_log_pos();
1042
1041
  /*
1043
1042
     Reset errors (the idea is that we forget about the
1044
1043
     old master).
1047
1046
  mi->rli.clear_until_condition();
1048
1047
 
1049
1048
  // close master_info_file, relay_log_info_file, set mi->inited=rli->inited=0
1050
 
  end_master_info(mi);
 
1049
  mi->end_master_info();
1051
1050
  // and delete these two files
1052
1051
  fn_format(fname, master_info_file, mysql_data_home, "", 4+32);
1053
1052
  if (!stat(fname, &stat_area) && my_delete(fname, MYF(MY_WME)))
1137
1136
  thd_proc_info(thd, "Changing master");
1138
1137
  LEX_MASTER_INFO* lex_mi= &thd->lex->mi;
1139
1138
  // TODO: see if needs re-write
1140
 
  if (init_master_info(mi, master_info_file, relay_log_info_file, 0,
1141
 
                       thread_mask))
 
1139
  if (mi->init_master_info(master_info_file, relay_log_info_file, 0, thread_mask))
1142
1140
  {
1143
1141
    my_message(ER_MASTER_INFO, ER(ER_MASTER_INFO), MYF(0));
1144
1142
    unlock_slave_threads(mi);
1163
1161
  }
1164
1162
 
1165
1163
  if (lex_mi->log_file_name)
1166
 
    strmake(mi->master_log_name, lex_mi->log_file_name,
1167
 
            sizeof(mi->master_log_name)-1);
 
1164
    mi->setLogName(lex_mi->log_file_name);
1168
1165
  if (lex_mi->pos)
1169
1166
  {
1170
1167
    mi->master_log_pos= lex_mi->pos;
1171
1168
  }
1172
1169
 
1173
1170
  if (lex_mi->host)
1174
 
    strmake(mi->host, lex_mi->host, sizeof(mi->host)-1);
 
1171
    mi->setHost(lex_mi->host, lex_mi->port);
1175
1172
  if (lex_mi->user)
1176
 
    strmake(mi->user, lex_mi->user, sizeof(mi->user)-1);
 
1173
    mi->setUsername(lex_mi->user);
1177
1174
  if (lex_mi->password)
1178
 
    strmake(mi->password, lex_mi->password, sizeof(mi->password)-1);
1179
 
  if (lex_mi->port)
1180
 
    mi->port = lex_mi->port;
 
1175
    mi->setPassword(lex_mi->password);
1181
1176
  if (lex_mi->connect_retry)
1182
1177
    mi->connect_retry = lex_mi->connect_retry;
1183
1178
  if (lex_mi->heartbeat_opt != LEX_MASTER_INFO::LEX_MI_UNCHANGED)
1190
1185
  if (lex_mi->relay_log_name)
1191
1186
  {
1192
1187
    need_relay_log_purge= 0;
1193
 
    strmake(mi->rli.group_relay_log_name,lex_mi->relay_log_name,
1194
 
            sizeof(mi->rli.group_relay_log_name)-1);
1195
 
    strmake(mi->rli.event_relay_log_name,lex_mi->relay_log_name,
1196
 
            sizeof(mi->rli.event_relay_log_name)-1);
 
1188
    mi->rli.event_relay_log_name.assign(lex_mi->relay_log_name);
1197
1189
  }
1198
1190
 
1199
1191
  if (lex_mi->relay_log_pos)
1230
1222
     mi->master_log_pos = ((BIN_LOG_HEADER_SIZE > mi->rli.group_master_log_pos)
1231
1223
                           ? BIN_LOG_HEADER_SIZE
1232
1224
                           : mi->rli.group_master_log_pos);
1233
 
     strmake(mi->master_log_name, mi->rli.group_master_log_name,
1234
 
             sizeof(mi->master_log_name)-1);
 
1225
     mi->setLogName(mi->rli.group_master_log_name.c_str());
1235
1226
  }
1236
1227
  /*
1237
1228
    Relay log's IO_CACHE may not be inited, if rli->inited==0 (server was never
1238
1229
    a slave before).
1239
1230
  */
1240
 
  if (flush_master_info(mi, 0))
 
1231
  if (mi->flush_master_info(0))
1241
1232
  {
1242
1233
    my_error(ER_RELAY_LOG_INIT, MYF(0), "Failed to flush master info file");
1243
1234
    unlock_slave_threads(mi);
1262
1253
    relay_log_purge= 0;
1263
1254
    /* Relay log is already initialized */
1264
1255
    if (init_relay_log_pos(&mi->rli,
1265
 
                           mi->rli.group_relay_log_name,
 
1256
                           mi->rli.group_relay_log_name.c_str(),
1266
1257
                           mi->rli.group_relay_log_pos,
1267
1258
                           0 /*no data lock*/,
1268
1259
                           &msg, 0))
1283
1274
    That's why we always save good coords in rli.
1284
1275
  */
1285
1276
  mi->rli.group_master_log_pos= mi->master_log_pos;
1286
 
  strmake(mi->rli.group_master_log_name,mi->master_log_name,
1287
 
          sizeof(mi->rli.group_master_log_name)-1);
 
1277
  mi->rli.group_master_log_name.assign(mi->master_log_name);
1288
1278
 
1289
 
  if (!mi->rli.group_master_log_name[0]) // uninitialized case
1290
 
    mi->rli.group_master_log_pos=0;
 
1279
  if (mi->rli.group_master_log_name.size() == 0) // uninitialized case
 
1280
    mi->rli.group_master_log_pos= 0;
1291
1281
 
1292
1282
  pthread_mutex_lock(&mi->rli.data_lock);
1293
1283
  mi->rli.abort_pos_wait++; /* for MASTER_POS_WAIT() to abort */