MCPcopy Create free account
hub / github.com/Tencent/phxsql / LoadFromCheckPointFileList

Method LoadFromCheckPointFileList

phxbinlogsvr/core/storage/checkpoint_manager.cpp:278–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

276}
277
278int CheckPointManager::LoadFromCheckPointFileList(const string &datadir, EventData *header, MasterInfo *masterinfo,
279 EventDataInfo *headerdatainfo) {
280 EventFileManager eventfilemanager(option_, datadir);
281 int ret = eventfilemanager.OpenOldestFile();
282 if (ret) {
283 return ret;
284 }
285 EventData curheader, curfooter;
286 string curfilename;
287 while (1) {
288 EventData eventdata;
289 EventDataInfo eventdatainfo;
290 ret = eventfilemanager.ReadData(&eventdata, &eventdatainfo);
291 if (ret == OK) {
292 if (eventdata.gtid().empty()) {
293 if (eventdatainfo.file_name() != curfilename) {
294 curheader = eventdata;
295 //header
296 LogVerbose("%s get header", __func__);
297 if (curfooter.event_data_file().empty()) {
298 //first file
299 event_storage_->SwitchNewFile(curheader, false, NULL);
300 LogVerbose("%s switch first file %s to %s,", __func__, curheader.event_data_file().c_str(),
301 eventdatainfo.file_name().c_str());
302 }
303 } else {
304 LogVerbose("%s get footer", __func__);
305 curfooter = eventdata;
306 event_storage_->SwitchNewFile(curfooter, true, headerdatainfo);
307 LogVerbose("%s switch file %s to new file %s, add footer", __func__,
308 curfooter.event_data_file().c_str(), headerdatainfo->file_name().c_str());
309 }
310 curfilename = eventdatainfo.file_name();
311 } else {
312 int ret = event_storage_->AddEvent(eventdata.gtid(), eventdata, false);
313 if (ret) {
314 return ret;
315 }
316 }
317 } else if (ret == DATA_EMPTY) {
318 *header = curfooter;
319
320 ret = CheckPointManager::GetMasterInfoFromHeader(curfooter, masterinfo);
321 if (ret == OK) {
322 LogVerbose("%s get master info, master ip %s version %lu", __func__,
323 Utils::GetIP(masterinfo->svr_id()).c_str(), masterinfo->version());
324 } else {
325 ColorLogWarning("%s parse header fail", __func__);
326 }
327 break;
328 } else {
329 break;
330 }
331 }
332 ColorLogInfo("%s load backup checkpoint done from %s, header instanceid %lu file_name %s master varion %lu",
333 __func__, datadir.c_str(), header->instance_id(), headerdatainfo->file_name().c_str(),
334 masterinfo->version());
335 return ret;

Callers

nothing calls this directly

Calls 7

LogVerboseFunction · 0.85
ColorLogWarningFunction · 0.85
ColorLogInfoFunction · 0.85
OpenOldestFileMethod · 0.80
SwitchNewFileMethod · 0.80
AddEventMethod · 0.80
ReadDataMethod · 0.45

Tested by

no test coverage detected