CUBRID Engine  latest
log_recovery.c File Reference
#include "config.h"
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <assert.h>
#include "log_2pc.h"
#include "log_append.hpp"
#include "log_impl.h"
#include "log_lsa.hpp"
#include "log_manager.h"
#include "log_record.hpp"
#include "log_system_tran.hpp"
#include "log_volids.hpp"
#include "recovery.h"
#include "error_manager.h"
#include "system_parameter.h"
#include "message_catalog.h"
#include "msgcat_set_log.hpp"
#include "object_representation.h"
#include "slotted_page.h"
#include "boot_sr.h"
#include "locator_sr.h"
#include "page_buffer.h"
#include "porting_inline.hpp"
#include "log_compress.h"
#include "thread_entry.hpp"
#include "thread_manager.hpp"

Go to the source code of this file.

Functions

static void log_rv_undo_record (THREAD_ENTRY *thread_p, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, LOG_RCVINDEX rcvindex, const VPID *rcv_vpid, LOG_RCV *rcv, const LOG_LSA *rcv_lsa_ptr, LOG_TDES *tdes, LOG_ZIP *undo_unzip_ptr)
 
static void log_rv_redo_record (THREAD_ENTRY *thread_p, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, int(*redofun)(THREAD_ENTRY *thread_p, LOG_RCV *), LOG_RCV *rcv, LOG_LSA *rcv_lsa_ptr, int undo_length, char *undo_data, LOG_ZIP *redo_unzip_ptr)
 
static bool log_rv_find_checkpoint (THREAD_ENTRY *thread_p, VOLID volid, LOG_LSA *rcv_lsa)
 
static bool log_rv_get_unzip_log_data (THREAD_ENTRY *thread_p, int length, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, LOG_ZIP *undo_unzip_ptr)
 
static int log_rv_analysis_undo_redo (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_dummy_head_postpone (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_postpone (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_run_postpone (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, LOG_LSA *check_point)
 
static int log_rv_analysis_compensate (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa, LOG_PAGE *log_page_p)
 
static int log_rv_analysis_will_commit (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_commit_with_postpone (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa, LOG_PAGE *log_page_p)
 
static int log_rv_analysis_sysop_start_postpone (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa, LOG_PAGE *log_page_p)
 
static int log_rv_analysis_atomic_sysop_start (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_complete (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, LOG_LSA *prev_lsa, bool is_media_crash, time_t *stop_at, bool *did_incom_recovery)
 
static int log_rv_analysis_sysop_end (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa, LOG_PAGE *log_page_p)
 
static int log_rv_analysis_start_checkpoint (LOG_LSA *log_lsa, LOG_LSA *start_lsa, bool *may_use_checkpoint)
 
static int log_rv_analysis_end_checkpoint (THREAD_ENTRY *thread_p, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, LOG_LSA *check_point, LOG_LSA *start_redo_lsa, bool *may_use_checkpoint, bool *may_need_synch_checkpoint_2pc)
 
static int log_rv_analysis_save_point (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_2pc_prepare (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_2pc_start (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_2pc_commit_decision (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_2pc_abort_decision (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_2pc_commit_inform_particps (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_2pc_abort_inform_particps (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_2pc_recv_ack (THREAD_ENTRY *thread_p, int tran_id, LOG_LSA *log_lsa)
 
static int log_rv_analysis_log_end (int tran_id, LOG_LSA *log_lsa)
 
static void log_rv_analysis_record (THREAD_ENTRY *thread_p, LOG_RECTYPE log_type, int tran_id, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, LOG_LSA *check_point, LOG_LSA *prev_lsa, LOG_LSA *start_lsa, LOG_LSA *start_redo_lsa, bool is_media_crash, time_t *stop_at, bool *did_incom_recovery, bool *may_use_checkpoint, bool *may_need_synch_checkpoint_2pc)
 
static bool log_is_page_of_record_broken (THREAD_ENTRY *thread_p, const LOG_LSA *log_lsa, const LOG_RECORD_HEADER *log_rec_header)
 
static void log_recovery_analysis (THREAD_ENTRY *thread_p, LOG_LSA *start_lsa, LOG_LSA *start_redolsa, LOG_LSA *end_redo_lsa, bool ismedia_crash, time_t *stopat, bool *did_incom_recovery, INT64 *num_redo_log_records)
 
static bool log_recovery_needs_skip_logical_redo (THREAD_ENTRY *thread_p, TRANID tran_id, LOG_RECTYPE log_rtype, LOG_RCVINDEX rcv_index, const LOG_LSA *lsa)
 
static void log_recovery_redo (THREAD_ENTRY *thread_p, const LOG_LSA *start_redolsa, const LOG_LSA *end_redo_lsa, time_t *stopat)
 
static void log_recovery_abort_interrupted_sysop (THREAD_ENTRY *thread_p, LOG_TDES *tdes, const LOG_LSA *postpone_start_lsa)
 
static void log_recovery_finish_sysop_postpone (THREAD_ENTRY *thread_p, LOG_TDES *tdes)
 
static void log_recovery_finish_postpone (THREAD_ENTRY *thread_p, LOG_TDES *tdes)
 
static void log_recovery_finish_all_postpone (THREAD_ENTRY *thread_p)
 
static void log_recovery_abort_atomic_sysop (THREAD_ENTRY *thread_p, LOG_TDES *tdes)
 
static void log_recovery_abort_all_atomic_sysops (THREAD_ENTRY *thread_p)
 
static void log_recovery_undo (THREAD_ENTRY *thread_p)
 
static void log_recovery_notpartof_archives (THREAD_ENTRY *thread_p, int start_arv_num, const char *info_reason)
 
static bool log_unformat_ahead_volumes (THREAD_ENTRY *thread_p, VOLID volid, VOLID *start_volid)
 
static void log_recovery_notpartof_volumes (THREAD_ENTRY *thread_p)
 
static void log_recovery_resetlog (THREAD_ENTRY *thread_p, const LOG_LSA *new_append_lsa, const LOG_LSA *new_prev_lsa)
 
static int log_recovery_find_first_postpone (THREAD_ENTRY *thread_p, LOG_LSA *ret_lsa, LOG_LSA *start_postpone_lsa, LOG_TDES *tdes)
 
static int log_rv_record_modify_internal (THREAD_ENTRY *thread_p, LOG_RCV *rcv, bool is_undo)
 
static int log_rv_undoredo_partial_changes_recursive (THREAD_ENTRY *thread_p, OR_BUF *rcv_buf, RECDES *record, bool is_undo)
 
STATIC_INLINE PAGE_PTR log_rv_redo_fix_page (THREAD_ENTRY *thread_p, const VPID *vpid_rcv, LOG_RCVINDEX rcvindex) __attribute__((ALWAYS_INLINE))
 
static void log_rv_simulate_runtime_worker (THREAD_ENTRY *thread_p, LOG_TDES *tdes)
 
static void log_rv_end_simulation (THREAD_ENTRY *thread_p)
 
void log_recovery (THREAD_ENTRY *thread_p, int ismedia_crash, time_t *stopat)
 
LOG_LSAlog_startof_nxrec (THREAD_ENTRY *thread_p, LOG_LSA *lsa, bool canuse_forwaddr)
 
int log_rv_undoredo_record_partial_changes (THREAD_ENTRY *thread_p, char *rcv_data, int rcv_data_length, RECDES *record, bool is_undo)
 
int log_rv_redo_record_modify (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int log_rv_undo_record_modify (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
char * log_rv_pack_redo_record_changes (char *ptr, int offset_to_data, int old_data_size, int new_data_size, char *new_data)
 
char * log_rv_pack_undo_record_changes (char *ptr, int offset_to_data, int old_data_size, int new_data_size, char *old_data)
 

Function Documentation

static bool log_is_page_of_record_broken ( THREAD_ENTRY thread_p,
const LOG_LSA log_lsa,
const LOG_RECORD_HEADER log_rec_header 
)
static
void log_recovery ( THREAD_ENTRY thread_p,
int  ismedia_crash,
time_t *  stopat 
)

Definition at line 648 of file log_recovery.c.

References log_header::append_lsa, ARG_FILE_LINE, assert, log_rec_header::back_lsa, boot_reset_db_parm(), log_header::chkpt_lsa, log_global::chkpt_redo_lsa, ER_FATAL_ERROR_SEVERITY, ER_LOG_CORRUPTED_DB_DUE_CRASH_NOLOGGING, er_log_debug, ER_LOG_RECOVERY_FINISHED, ER_LOG_RECOVERY_STARTED, ER_LOG_UNKNOWN_TRANINDEX, ER_NOTIFICATION_SEVERITY, er_set(), fileio_map_mounted(), fileio_synchronize_all(), log_global::final_restored_lsa, log_header::has_logging_been_skipped, log_global::hdr, heap_classrepr_restart_cache(), locator_initialize(), log_2pc_recovery(), log_append_empty_record(), LOG_APPEND_PTR(), LOG_CS_ENTER(), LOG_CS_EXIT(), LOG_CS_OWN_WRITE_MODE(), LOG_DUMMY_CRASH_RECOVERY, LOG_FIND_TDES(), LOG_FIND_THREAD_TRAN_INDEX, log_Gl, LOG_HAS_LOGGING_BEEN_IGNORED, log_recovery_analysis(), LOG_RECOVERY_ANALYSIS_PHASE, LOG_RECOVERY_FINISH_2PC_PHASE, log_recovery_notpartof_volumes(), log_recovery_redo(), LOG_RECOVERY_REDO_PHASE, log_recovery_undo(), LOG_RECOVERY_UNDO_PHASE, LOG_RESET_PREV_LSA(), log_rv_find_checkpoint(), LOG_SET_CURRENT_TRAN_INDEX, logpb_checkpoint(), logpb_decache_archive_info(), logpb_fatal_error(), logpb_fetch_start_append_page(), logpb_flush_header(), logpb_flush_pages_direct(), logtb_set_num_loose_end_trans(), LSA_AS_ARGS, LSA_COPY(), NO_ERROR, NULL, NULL_VOLID, trantable::num_coord_loose_end_indices, trantable::num_prepared_loose_end_indices, log_lsa::pageid, pgbuf_flush_all(), log_global::rcv_phase, log_global::rcv_phase_lsa, log_system_tdes::rv_final(), log_tdes::state, log_tdes::tail_lsa, TRAN_ACTIVE, TRAN_RECOVERY, log_global::trantable, and vacuum_notify_server_crashed().

Referenced by log_initialize_internal().

Here is the caller graph for this function:

static void log_recovery_analysis ( THREAD_ENTRY thread_p,
LOG_LSA start_lsa,
LOG_LSA start_redolsa,
LOG_LSA end_redo_lsa,
bool  ismedia_crash,
time_t *  stopat,
bool did_incom_recovery,
INT64 *  num_redo_log_records 
)
static

Definition at line 2413 of file log_recovery.c.

References _er_log_debug(), log_header::append_lsa, log_page::area, ARG_FILE_LINE, assert, assert_release, log_hdrpage::checksum, CTIME_MAX, DB_ALIGN, DOUBLE_ALIGNMENT, er_errid(), er_log_debug, ER_TDE_CIPHER_IS_NOT_LOADED, fileio_page_hexa_dump(), log_rec_header::forw_lsa, free_and_init, log_page::hdr, log_global::hdr, i, if(), IO_MAX_PAGE_SIZE, log_lsa::is_null(), LOG_2PC_PREPARE, log_2pc_recovery_analysis_info(), LOG_2PC_RECV_ACK, LOG_2PC_START, LOG_COMPENSATE, LOG_CS_FORCE_USE, LOG_DBEXTERN_REDO_DATA, LOG_DIFF_UNDOREDO_DATA, LOG_END_OF_LOG, LOG_FIND_TDES(), LOG_GET_LOG_RECORD_HEADER, log_Gl, log_is_page_of_record_broken(), LOG_ISTRAN_2PC, LOG_MVCC_DIFF_UNDOREDO_DATA, LOG_MVCC_REDO_DATA, LOG_MVCC_UNDOREDO_DATA, LOG_PAGE_INIT_VALUE, LOG_PAGESIZE, LOG_READ_ADD_ALIGN, LOG_READ_ADVANCE_WHEN_DOESNT_FIT, log_recovery_resetlog(), LOG_REDO_DATA, LOG_RESET_APPEND_LSA(), LOG_RUN_POSTPONE, log_rv_analysis_record(), log_startof_nxrec(), LOG_UNDOREDO_DATA, LOGAREA_SIZE, log_hdrpage::logical_pageid, logpb_copy_from_log(), logpb_fatal_error(), logpb_fetch_page(), logpb_is_page_in_archive(), logpb_page_check_corruption(), logpb_page_get_first_null_block_lsa(), logpb_write_page_to_disk(), logtb_find_tran_index(), LSA_COPY(), LSA_EQ(), LSA_GT(), LSA_ISNULL(), LSA_SET_NULL(), MAX_ALIGNMENT, MSGCAT_CATALOG_CUBRID, MSGCAT_LOG_INCOMPLTE_MEDIA_RECOVERY, MSGCAT_LOG_STARTS, msgcat_message(), MSGCAT_SET_LOG, log_global::mvcc_table, log_header::next_trid, NO_ERROR, log_rec_chkpt::ntrans, NULL, NULL_OFFSET, NULL_PAGEID, NULL_TRAN_INDEX, log_lsa::offset, log_hdrpage::offset, ONE_K, log_lsa::pageid, log_rec_header::prev_tranlsa, prm_get_bool_value(), PRM_ID_LOG_TRACE_DEBUG, PRM_ID_LOGPB_LOGGING_DEBUG, PTR_ALIGN, mvcctable::reset_start_mvccid(), log_lsa::set_null(), log_tdes::tail_lsa, log_rec_header::trid, log_rec_header::type, and log_tdes::undo_nxlsa.

Referenced by log_recovery().

Here is the caller graph for this function:

static bool log_recovery_needs_skip_logical_redo ( THREAD_ENTRY thread_p,
TRANID  tran_id,
LOG_RECTYPE  log_rtype,
LOG_RCVINDEX  rcv_index,
const LOG_LSA lsa 
)
static
static void log_recovery_redo ( THREAD_ENTRY thread_p,
const LOG_LSA start_redolsa,
const LOG_LSA end_redo_lsa,
time_t *  stopat 
)
static

Definition at line 3044 of file log_recovery.c.

References _er_log_debug(), log_2pc_coordinator::ack_received, log_page::area, ARG_FILE_LINE, assert, log_rec_donetime::at_time, log_tdes::client, log_tdes::coord, global_unique_stats_table::curr_rcv_rec_lsa, log_rec_undoredo::data, log_rec_redo::data, log_rec_compensate::data, log_rec_run_postpone::data, log_zip::data_length, ER_ERROR_SEVERITY, er_log_debug, ER_LOG_PAGE_CORRUPTED, er_set(), log_rec_header::forw_lsa, GET_ZIP_LEN, log_rec_2pc_start::gtrid, log_tdes::gtrid, log_page::hdr, log_global::hdr, i, if(), IO_MAX_PAGE_SIZE, log_rec_redo::length, log_rcv::length, log_rec_dbout_redo::length, log_rec_compensate::length, log_rec_run_postpone::length, LOG_2PC_ABORT_DECISION, LOG_2PC_ABORT_INFORM_PARTICPS, log_2pc_alloc_coord_info(), LOG_2PC_COMMIT_DECISION, LOG_2PC_COMMIT_INFORM_PARTICPS, LOG_2PC_DONT_OBTAIN_LOCKS, LOG_2PC_OBTAIN_LOCKS, LOG_2PC_PREPARE, log_2pc_read_prepare(), LOG_2PC_RECV_ACK, LOG_2PC_START, LOG_ABORT, LOG_COMMIT, LOG_COMMIT_WITH_POSTPONE, LOG_COMPENSATE, LOG_CS_FORCE_USE, log_zip::log_data, LOG_DBEXTERN_REDO_DATA, LOG_DIFF_UNDOREDO_DATA, LOG_DUMMY_CRASH_RECOVERY, LOG_DUMMY_GENERIC, LOG_DUMMY_HA_SERVER_STATE, LOG_DUMMY_HEAD_POSTPONE, LOG_DUMMY_OVF_RECORD, LOG_END_CHKPT, LOG_END_OF_LOG, LOG_FIND_TDES(), LOG_GET_LOG_RECORD_HEADER, log_Gl, LOG_ISTRAN_2PC, LOG_LARGER_LOGREC_TYPE, LOG_MVCC_DIFF_UNDOREDO_DATA, LOG_MVCC_REDO_DATA, LOG_MVCC_UNDO_DATA, LOG_MVCC_UNDOREDO_DATA, LOG_PAGESIZE, LOG_POSTPONE, LOG_READ_ADD_ALIGN, LOG_READ_ADVANCE_WHEN_DOESNT_FIT, LOG_READ_ALIGN, log_recovery_abort_all_atomic_sysops(), log_recovery_finish_all_postpone(), log_recovery_needs_skip_logical_redo(), LOG_REDO_DATA, LOG_REPLICATION_DATA, LOG_REPLICATION_STATEMENT, LOG_RUN_POSTPONE, log_rv_get_unzip_log_data(), log_rv_redo_fix_page(), log_rv_redo_record(), LOG_SAVEPOINT, LOG_SMALLER_LOGREC_TYPE, LOG_START_CHKPT, log_state_string(), LOG_SYSOP_ATOMIC_START, LOG_SYSOP_END, LOG_SYSOP_END_LOGICAL_MVCC_UNDO, LOG_SYSOP_START_POSTPONE, LOG_SYSTEM_TRAN_INDEX, log_to_string(), LOG_UNDO_DATA, LOG_UNDOREDO_DATA, LOG_WILL_COMMIT, log_zip_alloc(), log_zip_free(), LOGAREA_SIZE, logpb_copy_from_log(), logpb_fatal_error(), logpb_fetch_page(), logpb_flush_header(), logpb_flush_pages_direct(), logpb_is_page_in_archive(), logpb_vacuum_reset_log_header_cache(), logtb_find_tran_index(), logtb_free_tran_index(), LSA_AS_ARGS, LSA_COPY(), LSA_EQ(), LSA_GT(), LSA_ISNULL(), LSA_LE(), LSA_SET_NULL(), MAX_ALIGNMENT, log_rcv::mvcc_id, MVCC_ID_PRECEDES, log_header::mvcc_next_id, log_header::mvcc_op_log_lsa, log_global::mvcc_table, log_rec_mvcc_undoredo::mvccid, log_rec_mvcc_undo::mvccid, log_rec_mvcc_redo::mvccid, MVCCID_FORWARD, MVCCID_NULL, NO_ERROR, NULL, NULL_OFFSET, NULL_PAGEID, NULL_TRAN_INDEX, NULL_VOLID, log_2pc_coordinator::num_particps, log_rec_2pc_start::num_particps, log_lsa::offset, log_hdrpage::offset, log_data::offset, log_rcv::offset, log_lsa::pageid, log_data::pageid, vpid::pageid, log_rec_2pc_start::particp_id_length, log_rec_2pc_particp_ack::particp_index, pgbuf_flush_all(), pgbuf_get_lsa(), pgbuf_unfix, log_rcv::pgptr, prm_get_bool_value(), PRM_ID_LOG_BTREE_OPS, PRM_ID_LOG_TRACE_DEBUG, PTR_ALIGN, log_data::rcvindex, log_rec_dbout_redo::rcvindex, log_rec_mvcc_redo::redo, mvcctable::reset_start_mvccid(), log_rec_undoredo::rlength, RV_fun, rv_rcvindex_string(), RVBT_RECORD_MODIFY_COMPENSATE, RVVAC_COMPLETE, clientids::set_system_internal_with_user(), log_tdes::state, TRAN_ACTIVE, TRAN_UNACTIVE_2PC_PREPARE, TRAN_UNACTIVE_UNILATERALLY_ABORTED, log_rec_header::trid, log_tdes::trid, log_rec_header::type, log_rec_sysop_end::type, log_rec_undoredo::ulength, log_rec_compensate::undo_nxlsa, log_rec_mvcc_undoredo::undoredo, log_global::unique_stats_table, log_rec_2pc_start::user_name, log_data::volid, vpid::volid, and VPID_SET_NULL.

Referenced by log_recovery().

Here is the caller graph for this function:

static void log_recovery_resetlog ( THREAD_ENTRY thread_p,
const LOG_LSA new_append_lsa,
const LOG_LSA new_prev_lsa 
)
static

Definition at line 5241 of file log_recovery.c.

References log_global::append, log_header::append_lsa, ARG_FILE_LINE, assert, log_header::chkpt_lsa, log_header::db_creation, disk_get_creation_time(), fileio_format(), log_header::fpageid, free_and_init, log_global::hdr, IO_MAX_PAGE_SIZE, log_header::is_shutdown, log_header::last_arv_num_for_syscrashes, log_header::last_deleted_arv_num, LOG_CS_FORCE_USE, LOG_CS_OWN_WRITE_MODE(), log_Db_fullname, LOG_DBFIRST_VOLID, LOG_DBLOG_ACTIVE_VOLID, log_get_num_pages_for_creation(), log_Gl, log_Name_active, LOG_PAGESIZE, log_append_info::log_pgptr, log_recovery_notpartof_archives(), LOG_RESET_APPEND_LSA(), LOG_RESET_PREV_LSA(), logpb_create_header_page(), logpb_create_page(), logpb_decache_archive_info(), logpb_fatal_error(), logpb_fetch_page(), logpb_fetch_start_append_page(), logpb_flush_header(), logpb_flush_page(), logpb_flush_pages_direct(), logpb_get_archive_number(), logpb_invalid_all_append_pages(), logpb_invalidate_pool(), logpb_set_dirty(), logpb_to_physical_pageid(), LSA_COPY(), LSA_ISNULL(), MAX_ALIGNMENT, MSGCAT_CATALOG_CUBRID, MSGCAT_LOG_RESETLOG_DUE_INCOMPLTE_MEDIA_RECOVERY, msgcat_message(), MSGCAT_SET_LOG, log_header::mvcc_op_log_lsa, NO_ERROR, NULL, NULL_VOLDES, log_header::nxarv_num, log_header::nxarv_pageid, log_header::nxarv_phy_pageid, log_lsa::offset, log_lsa::pageid, PTR_ALIGN, log_lsa::set_null(), strdup(), log_append_info::vdes, and log_header::was_active_log_reset.

Referenced by log_recovery_analysis(), and log_rv_analysis_complete().

Here is the caller graph for this function:

static void log_recovery_undo ( THREAD_ENTRY thread_p)
static

Definition at line 4532 of file log_recovery.c.

References log_page::area, ARG_FILE_LINE, assert, log_rec_sysop_end::compensate_lsa, log_rec_undoredo::data, log_rec_undo::data, ER_ERROR_SEVERITY, er_log_debug, ER_LOG_PAGE_CORRUPTED, er_set(), mvcc_info::id, IO_MAX_PAGE_SIZE, log_rec_sysop_end::lastparent_lsa, log_rec_undo::length, log_rcv::length, LOG_2PC_ABORT_DECISION, LOG_2PC_ABORT_INFORM_PARTICPS, LOG_2PC_COMMIT_DECISION, LOG_2PC_COMMIT_INFORM_PARTICPS, LOG_2PC_PREPARE, LOG_2PC_RECV_ACK, LOG_2PC_START, LOG_ABORT, LOG_COMMIT, LOG_COMMIT_WITH_POSTPONE, LOG_COMPENSATE, log_complete(), LOG_CS_FORCE_USE, LOG_DBEXTERN_REDO_DATA, LOG_DIFF_UNDOREDO_DATA, LOG_DONT_NEED_NEWTRID, LOG_DUMMY_CRASH_RECOVERY, LOG_DUMMY_GENERIC, LOG_DUMMY_HA_SERVER_STATE, LOG_DUMMY_HEAD_POSTPONE, LOG_DUMMY_OVF_RECORD, LOG_END_CHKPT, LOG_END_OF_LOG, LOG_FIND_TDES(), log_find_unilaterally_largest_undo_lsa(), LOG_GET_LOG_RECORD_HEADER, log_Gl, LOG_LARGER_LOGREC_TYPE, LOG_MVCC_DIFF_UNDOREDO_DATA, LOG_MVCC_REDO_DATA, LOG_MVCC_UNDO_DATA, LOG_MVCC_UNDOREDO_DATA, LOG_NEED_TO_WRITE_EOT_LOG, LOG_POSTPONE, LOG_READ_ADD_ALIGN, LOG_READ_ADVANCE_WHEN_DOESNT_FIT, LOG_REDO_DATA, LOG_REPLICATION_DATA, LOG_REPLICATION_STATEMENT, LOG_RUN_POSTPONE, log_rv_undo_record(), LOG_SAVEPOINT, LOG_SMALLER_LOGREC_TYPE, LOG_START_CHKPT, LOG_SYSOP_ATOMIC_START, LOG_SYSOP_END, LOG_SYSOP_END_LOGICAL_COMPENSATE, LOG_SYSOP_END_LOGICAL_MVCC_UNDO, LOG_SYSOP_END_LOGICAL_RUN_POSTPONE, LOG_SYSOP_END_LOGICAL_UNDO, LOG_SYSOP_START_POSTPONE, log_to_string(), LOG_UNDO_DATA, LOG_UNDOREDO_DATA, LOG_WILL_COMMIT, log_zip_alloc(), log_zip_free(), LOGAREA_SIZE, logpb_fatal_error(), logpb_fetch_page(), logpb_flush_header(), logpb_flush_pages_direct(), logtb_find_tran_index(), logtb_free_tran_index(), logtb_free_tran_index_with_undo_lsa(), logtb_is_system_worker_tranid(), LSA_AS_ARGS, LSA_COPY(), LSA_ISNULL(), MAX_ALIGNMENT, log_rcv::mvcc_id, log_rec_sysop_end::mvcc_undo, log_rec_mvcc_undoredo::mvccid, log_rec_mvcc_undo::mvccid, MVCCID_NULL, log_tdes::mvccinfo, NO_ERROR, NULL, NULL_TRAN_INDEX, NULL_TRANID, NULL_VOLID, trantable::num_total_indices, log_lsa::offset, log_data::offset, log_rcv::offset, log_lsa::pageid, log_data::pageid, vpid::pageid, pgbuf_flush_all(), log_rec_header::prev_tranlsa, prm_get_bool_value(), PRM_ID_LOG_TRACE_DEBUG, PTR_ALIGN, log_data::rcvindex, log_system_tdes::rv_delete_all_tdes_if(), log_system_tdes::rv_delete_tdes(), log_system_tdes::rv_get_tdes(), rv_rcvindex_string(), log_tdes::state, TRAN_UNACTIVE_ABORTED, TRAN_UNACTIVE_UNILATERALLY_ABORTED, log_global::trantable, log_rec_header::trid, log_tdes::trid, log_rec_header::type, log_rec_sysop_end::type, log_rec_undoredo::ulength, log_rec_mvcc_undo::undo, log_rec_sysop_end::undo, log_rec_compensate::undo_nxlsa, log_tdes::undo_nxlsa, log_rec_mvcc_undoredo::undoredo, log_data::volid, and vpid::volid.

Referenced by log_recovery().

Here is the caller graph for this function:

static int log_rv_analysis_2pc_abort_decision ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static int log_rv_analysis_2pc_abort_inform_particps ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static int log_rv_analysis_2pc_commit_decision ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static int log_rv_analysis_2pc_commit_inform_particps ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static int log_rv_analysis_2pc_prepare ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static int log_rv_analysis_2pc_recv_ack ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static

Definition at line 2164 of file log_recovery.c.

References ARG_FILE_LINE, ER_FAILED, logpb_fatal_error(), logtb_rv_find_allocate_tran_index(), LSA_COPY(), NO_ERROR, NULL, and log_tdes::tail_lsa.

Referenced by log_rv_analysis_record().

Here is the caller graph for this function:

static int log_rv_analysis_2pc_start ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static int log_rv_analysis_atomic_sysop_start ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static int log_rv_analysis_compensate ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa,
LOG_PAGE log_page_p 
)
static
static int log_rv_analysis_complete ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa,
LOG_PAGE log_page_p,
LOG_LSA prev_lsa,
bool  is_media_crash,
time_t *  stop_at,
bool did_incom_recovery 
)
static
static int log_rv_analysis_dummy_head_postpone ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static int log_rv_analysis_end_checkpoint ( THREAD_ENTRY thread_p,
LOG_LSA log_lsa,
LOG_PAGE log_page_p,
LOG_LSA check_point,
LOG_LSA start_redo_lsa,
bool may_use_checkpoint,
bool may_need_synch_checkpoint_2pc 
)
static

Definition at line 1671 of file log_recovery.c.

References log_page::area, ARG_FILE_LINE, assert, log_info_chkpt_sysop::atomic_sysop_start_lsa, log_rcv_tdes::atomic_sysop_start_lsa, log_tdes::client, ER_FAILED, ER_OUT_OF_VIRTUAL_MEMORY, free_and_init, log_page::hdr, log_info_chkpt_trans::head_lsa, log_tdes::head_lsa, i, if(), IO_MAX_PAGE_SIZE, log_info_chkpt_trans::isloose_end, log_tdes::isloose_end, log_topops_stack::last, log_rec_sysop_end::lastparent_lsa, log_topops_addresses::lastparent_lsa, LOG_ISTRAN_2PC, LOG_READ_ADD_ALIGN, LOG_READ_ADVANCE_WHEN_DOESNT_FIT, log_read_sysop_start_postpone(), LOGAREA_SIZE, log_hdrpage::logical_pageid, logpb_copy_from_log(), logpb_fatal_error(), logtb_clear_tdes(), logtb_realloc_topops_stack(), logtb_rv_find_allocate_tran_index(), LSA_COPY(), LSA_LT(), log_topops_stack::max, MAX_ALIGNMENT, NO_ERROR, log_rec_chkpt::ntops, log_rec_chkpt::ntrans, NULL, NULL_OFFSET, NULL_PAGEID, log_lsa::offset, log_hdrpage::offset, log_rec_sysop_start_postpone::posp_lsa, log_topops_addresses::posp_lsa, log_info_chkpt_trans::posp_nxlsa, log_tdes::posp_nxlsa, PTR_ALIGN, log_tdes::rcv, log_rec_chkpt::redo_lsa, log_info_chkpt_trans::savept_lsa, log_tdes::savept_lsa, clientids::set_system_internal_with_user(), log_topops_stack::stack, log_info_chkpt_trans::start_postpone_lsa, log_info_chkpt_trans::state, log_tdes::state, log_rec_sysop_start_postpone::sysop_end, log_info_chkpt_sysop::sysop_start_postpone_lsa, log_rcv_tdes::sysop_start_postpone_lsa, log_info_chkpt_trans::tail_lsa, log_tdes::tail_lsa, log_info_chkpt_trans::tail_topresult_lsa, log_tdes::tail_topresult_lsa, log_tdes::topops, TRAN_ACTIVE, log_rcv_tdes::tran_start_postpone_lsa, TRAN_UNACTIVE_ABORTED, TRAN_UNACTIVE_UNILATERALLY_ABORTED, log_info_chkpt_sysop::trid, log_info_chkpt_trans::undo_nxlsa, log_tdes::undo_nxlsa, and log_info_chkpt_trans::user_name.

Referenced by log_rv_analysis_record().

Here is the caller graph for this function:

static int log_rv_analysis_log_end ( int  tran_id,
LOG_LSA log_lsa 
)
static

Definition at line 2191 of file log_recovery.c.

References log_global::hdr, log_Gl, LOG_RESET_APPEND_LSA(), logpb_is_page_in_archive(), log_header::next_trid, NO_ERROR, and log_lsa::pageid.

Referenced by log_rv_analysis_record().

Here is the caller graph for this function:

static int log_rv_analysis_postpone ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static void log_rv_analysis_record ( THREAD_ENTRY thread_p,
LOG_RECTYPE  log_type,
int  tran_id,
LOG_LSA log_lsa,
LOG_PAGE log_page_p,
LOG_LSA check_point,
LOG_LSA prev_lsa,
LOG_LSA start_lsa,
LOG_LSA start_redo_lsa,
bool  is_media_crash,
time_t *  stop_at,
bool did_incom_recovery,
bool may_use_checkpoint,
bool may_need_synch_checkpoint_2pc 
)
static

Definition at line 2214 of file log_recovery.c.

References ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, er_log_debug, ER_LOG_PAGE_CORRUPTED, er_set(), LOG_2PC_ABORT_DECISION, LOG_2PC_ABORT_INFORM_PARTICPS, LOG_2PC_COMMIT_DECISION, LOG_2PC_COMMIT_INFORM_PARTICPS, LOG_2PC_PREPARE, LOG_2PC_RECV_ACK, LOG_2PC_START, LOG_ABORT, LOG_COMMIT, LOG_COMMIT_WITH_POSTPONE, LOG_COMPENSATE, LOG_DBEXTERN_REDO_DATA, LOG_DIFF_UNDOREDO_DATA, LOG_DUMMY_CRASH_RECOVERY, LOG_DUMMY_GENERIC, LOG_DUMMY_HA_SERVER_STATE, LOG_DUMMY_HEAD_POSTPONE, LOG_DUMMY_OVF_RECORD, LOG_END_CHKPT, LOG_END_OF_LOG, LOG_LARGER_LOGREC_TYPE, LOG_MVCC_DIFF_UNDOREDO_DATA, LOG_MVCC_REDO_DATA, LOG_MVCC_UNDO_DATA, LOG_MVCC_UNDOREDO_DATA, LOG_POSTPONE, LOG_REDO_DATA, LOG_REPLICATION_DATA, LOG_REPLICATION_STATEMENT, LOG_RUN_POSTPONE, log_rv_analysis_2pc_abort_decision(), log_rv_analysis_2pc_abort_inform_particps(), log_rv_analysis_2pc_commit_decision(), log_rv_analysis_2pc_commit_inform_particps(), log_rv_analysis_2pc_prepare(), log_rv_analysis_2pc_recv_ack(), log_rv_analysis_2pc_start(), log_rv_analysis_atomic_sysop_start(), log_rv_analysis_commit_with_postpone(), log_rv_analysis_compensate(), log_rv_analysis_complete(), log_rv_analysis_dummy_head_postpone(), log_rv_analysis_end_checkpoint(), log_rv_analysis_log_end(), log_rv_analysis_postpone(), log_rv_analysis_run_postpone(), log_rv_analysis_save_point(), log_rv_analysis_start_checkpoint(), log_rv_analysis_sysop_end(), log_rv_analysis_sysop_start_postpone(), log_rv_analysis_undo_redo(), log_rv_analysis_will_commit(), LOG_SAVEPOINT, LOG_SMALLER_LOGREC_TYPE, LOG_START_CHKPT, LOG_SYSOP_ATOMIC_START, LOG_SYSOP_END, LOG_SYSOP_START_POSTPONE, log_to_string(), LOG_UNDO_DATA, LOG_UNDOREDO_DATA, LOG_WILL_COMMIT, and log_lsa::pageid.

Referenced by log_recovery_analysis().

Here is the caller graph for this function:

static int log_rv_analysis_save_point ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static int log_rv_analysis_start_checkpoint ( LOG_LSA log_lsa,
LOG_LSA start_lsa,
bool may_use_checkpoint 
)
static

Definition at line 1638 of file log_recovery.c.

References LSA_EQ(), and NO_ERROR.

Referenced by log_rv_analysis_record().

Here is the caller graph for this function:

static int log_rv_analysis_sysop_end ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa,
LOG_PAGE log_page_p 
)
static
static int log_rv_analysis_undo_redo ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static

Definition at line 862 of file log_recovery.c.

References ARG_FILE_LINE, ER_FAILED, logpb_fatal_error(), logtb_rv_find_allocate_tran_index(), LSA_COPY(), NO_ERROR, NULL, log_tdes::tail_lsa, and log_tdes::undo_nxlsa.

Referenced by log_rv_analysis_record().

Here is the caller graph for this function:

static int log_rv_analysis_will_commit ( THREAD_ENTRY thread_p,
int  tran_id,
LOG_LSA log_lsa 
)
static
static void log_rv_end_simulation ( THREAD_ENTRY thread_p)
static

Definition at line 6496 of file log_recovery.c.

References assert, LOG_SET_CURRENT_TRAN_INDEX, LOG_SYSTEM_TRAN_INDEX, and NULL.

Referenced by log_recovery_abort_all_atomic_sysops(), log_recovery_finish_all_postpone(), and log_rv_undo_record().

Here is the caller graph for this function:

static bool log_rv_find_checkpoint ( THREAD_ENTRY thread_p,
VOLID  volid,
LOG_LSA rcv_lsa 
)
static

Definition at line 546 of file log_recovery.c.

References disk_get_checkpoint(), LSA_COPY(), LSA_ISNULL(), LSA_LT(), and NO_ERROR.

Referenced by log_recovery().

Here is the caller graph for this function:

static bool log_rv_get_unzip_log_data ( THREAD_ENTRY thread_p,
int  length,
LOG_LSA log_lsa,
LOG_PAGE log_page_p,
LOG_ZIP undo_unzip_ptr 
)
static
static void log_rv_redo_record ( THREAD_ENTRY thread_p,
LOG_LSA log_lsa,
LOG_PAGE log_page_p,
int(*)(THREAD_ENTRY *thread_p, LOG_RCV *)  redofun,
LOG_RCV rcv,
LOG_LSA rcv_lsa_ptr,
int  undo_length,
char *  undo_data,
LOG_ZIP redo_unzip_ptr 
)
static
int log_rv_redo_record_modify ( THREAD_ENTRY thread_p,
LOG_RCV rcv 
)

Definition at line 6177 of file log_recovery.c.

References log_rv_record_modify_internal().

static void log_rv_simulate_runtime_worker ( THREAD_ENTRY thread_p,
LOG_TDES tdes 
)
static
static void log_rv_undo_record ( THREAD_ENTRY thread_p,
LOG_LSA log_lsa,
LOG_PAGE log_page_p,
LOG_RCVINDEX  rcvindex,
const VPID rcv_vpid,
LOG_RCV rcv,
const LOG_LSA rcv_lsa_ptr,
LOG_TDES tdes,
LOG_ZIP undo_unzip_ptr 
)
static
int log_rv_undo_record_modify ( THREAD_ENTRY thread_p,
LOG_RCV rcv 
)

Definition at line 6195 of file log_recovery.c.

References log_rv_record_modify_internal().

static int log_rv_undoredo_partial_changes_recursive ( THREAD_ENTRY thread_p,
OR_BUF rcv_buf,
RECDES record,
bool  is_undo 
)
static
int log_rv_undoredo_record_partial_changes ( THREAD_ENTRY thread_p,
char *  rcv_data,
int  rcv_data_length,
RECDES record,
bool  is_undo 
)

Definition at line 6148 of file log_recovery.c.

References assert, log_rv_undoredo_partial_changes_recursive(), NULL, and OR_BUF_INIT.

Referenced by btree_rv_record_modify_internal(), and log_rv_record_modify_internal().

Here is the caller graph for this function:

LOG_LSA* log_startof_nxrec ( THREAD_ENTRY thread_p,
LOG_LSA lsa,
bool  canuse_forwaddr 
)

Definition at line 5433 of file log_recovery.c.

References log_page::area, error(), log_rec_header::forw_lsa, GET_ZIP_LEN, log_rec_2pc_prepcommit::gtrinfo_length, log_page::hdr, IO_MAX_PAGE_SIZE, log_rec_undo::length, log_rec_redo::length, log_rec_replication::length, log_rec_dbout_redo::length, log_rec_compensate::length, log_rec_run_postpone::length, log_rec_savept::length, LOG_2PC_ABORT_DECISION, LOG_2PC_ABORT_INFORM_PARTICPS, LOG_2PC_COMMIT_DECISION, LOG_2PC_COMMIT_INFORM_PARTICPS, LOG_2PC_PREPARE, LOG_2PC_RECV_ACK, LOG_2PC_START, LOG_ABORT, LOG_COMMIT, LOG_COMMIT_WITH_POSTPONE, LOG_COMPENSATE, LOG_CS_FORCE_USE, LOG_DBEXTERN_REDO_DATA, LOG_DIFF_UNDOREDO_DATA, LOG_DUMMY_CRASH_RECOVERY, LOG_DUMMY_GENERIC, LOG_DUMMY_HA_SERVER_STATE, LOG_DUMMY_HEAD_POSTPONE, LOG_DUMMY_OVF_RECORD, LOG_END_CHKPT, LOG_END_OF_LOG, LOG_GET_LOG_RECORD_HEADER, LOG_LARGER_LOGREC_TYPE, LOG_MVCC_DIFF_UNDOREDO_DATA, LOG_MVCC_REDO_DATA, LOG_MVCC_UNDO_DATA, LOG_MVCC_UNDOREDO_DATA, LOG_POSTPONE, LOG_READ_ADD_ALIGN, LOG_READ_ADVANCE_WHEN_DOESNT_FIT, LOG_REDO_DATA, LOG_REPLICATION_DATA, LOG_REPLICATION_STATEMENT, LOG_RUN_POSTPONE, LOG_SAVEPOINT, LOG_SMALLER_LOGREC_TYPE, LOG_START_CHKPT, LOG_SYSOP_ATOMIC_START, LOG_SYSOP_END, LOG_SYSOP_END_LOGICAL_MVCC_UNDO, LOG_SYSOP_END_LOGICAL_UNDO, LOG_SYSOP_START_POSTPONE, LOG_UNDO_DATA, LOG_UNDOREDO_DATA, LOG_WILL_COMMIT, logpb_fetch_page(), logpb_is_page_in_archive(), LSA_COPY(), LSA_ISNULL(), MAX_ALIGNMENT, log_rec_sysop_end::mvcc_undo, NO_ERROR, log_rec_chkpt::ntops, log_rec_chkpt::ntrans, NULL, NULL_OFFSET, log_rec_2pc_prepcommit::num_object_locks, log_rec_2pc_start::num_particps, log_lsa::offset, log_hdrpage::offset, log_lsa::pageid, log_rec_2pc_start::particp_id_length, PTR_ALIGN, log_rec_mvcc_redo::redo, log_rec_undoredo::rlength, log_rec_sysop_start_postpone::sysop_end, log_rec_header::type, log_rec_sysop_end::type, log_rec_undoredo::ulength, log_rec_mvcc_undo::undo, log_rec_sysop_end::undo, and log_rec_mvcc_undoredo::undoredo.

Referenced by log_recovery_analysis(), and xlog_dump().

Here is the caller graph for this function:

static bool log_unformat_ahead_volumes ( THREAD_ENTRY thread_p,
VOLID  volid,
VOLID start_volid 
)
static

Definition at line 5120 of file log_recovery.c.

References ALLOC_COPY, fileio_get_volume_label(), fileio_unformat(), NO_ERROR, NULL_VOLID, and pgbuf_invalidate_all.

Referenced by log_recovery_notpartof_volumes().

Here is the caller graph for this function: