CUBRID Engine  latest
log_postpone_cache Class Reference

#include <log_postpone_cache.hpp>

Collaboration diagram for log_postpone_cache:
Collaboration graph

Classes

class  cache_entry
 

Public Member Functions

 log_postpone_cache ()
 
 log_postpone_cache (log_postpone_cache &&other)=delete
 
 log_postpone_cache (const log_postpone_cache &other)=delete
 
log_postpone_cacheoperator= (log_postpone_cache &&other)=delete
 
log_postpone_cacheoperator= (const log_postpone_cache &other)=delete
 
 ~log_postpone_cache ()=default
 
void reset ()
 
void add_redo_data (const log_prior_node &node)
 
void add_lsa (const log_lsa &lsa)
 
bool do_postpone (cubthread::entry &thread_ref, const log_lsa &start_postpone_lsa)
 

Private Member Functions

bool is_full () const
 

Private Attributes

cubmem::extensible_block m_redo_data_buf
 
std::size_t m_redo_data_offset
 
bool m_is_redo_data_buf_full
 
std::size_t m_cursor
 
std::array< cache_entry, MAX_CACHE_ENTRIESm_cache_entries
 

Static Private Attributes

static const std::size_t MAX_CACHE_ENTRIES = 512
 
static const std::size_t REDO_DATA_MAX_SIZE = 100 * 1024
 
static const std::size_t BUFFER_RESET_SIZE = 1024
 

Detailed Description

Caches postpones to avoid reading them from log after commit top operation with postpone. Otherwise, log critical section may be required which will slow the access on merged index nodes

Definition at line 46 of file log_postpone_cache.hpp.

Constructor & Destructor Documentation

log_postpone_cache::log_postpone_cache ( )
inline

Definition at line 49 of file log_postpone_cache.hpp.

log_postpone_cache::log_postpone_cache ( log_postpone_cache &&  other)
delete
log_postpone_cache::log_postpone_cache ( const log_postpone_cache other)
delete
log_postpone_cache::~log_postpone_cache ( )
default

Member Function Documentation

void log_postpone_cache::add_lsa ( const log_lsa lsa)

Save LSA of postpone operations

Parameters
lsa- log postpone LSA
Returns
void

NOTE: This saves LSA after a new entry and its redo data have already been added. They couldn't both be added in the same step.

Definition at line 112 of file log_postpone_cache.cpp.

References assert, is_full(), log_lsa::is_null(), m_cache_entries, m_cursor, and MAX_CACHE_ENTRIES.

Referenced by log_append_postpone().

Here is the caller graph for this function:

bool log_postpone_cache::do_postpone ( cubthread::entry thread_ref,
const log_lsa start_postpone_lsa 
)

Do postpone from cached postpone entries.

Parameters
thread_ref- thread entry
start_postpone_lsa- start postpone LSA
Returns
- true if postpone was run from cached entries, false otherwise

Definition at line 137 of file log_postpone_cache.cpp.

References assert, cubmem::extensible_block::get_ptr(), i, is_full(), log_lsa::is_null(), log_rec_redo::length, log_execute_run_postpone(), m_cache_entries, m_cursor, m_is_redo_data_buf_full, log_postpone_cache::cache_entry::m_lsa, log_postpone_cache::cache_entry::m_offset, m_redo_data_buf, m_redo_data_offset, MAX_ALIGNMENT, cubmem::PRIVATE_BLOCK_ALLOCATOR, PTR_ALIGN, and reset().

Referenced by log_sysop_do_postpone(), and log_tran_do_postpone().

Here is the caller graph for this function:

bool log_postpone_cache::is_full ( void  ) const
private

Definition at line 201 of file log_postpone_cache.cpp.

References m_cursor, m_is_redo_data_buf_full, and MAX_CACHE_ENTRIES.

Referenced by add_lsa(), add_redo_data(), and do_postpone().

Here is the caller graph for this function:

log_postpone_cache& log_postpone_cache::operator= ( log_postpone_cache &&  other)
delete
log_postpone_cache& log_postpone_cache::operator= ( const log_postpone_cache other)
delete
void log_postpone_cache::reset ( void  )

Member Data Documentation

const std::size_t log_postpone_cache::BUFFER_RESET_SIZE = 1024
staticprivate

Definition at line 75 of file log_postpone_cache.hpp.

Referenced by reset().

std::array<cache_entry, MAX_CACHE_ENTRIES> log_postpone_cache::m_cache_entries
private

Definition at line 96 of file log_postpone_cache.hpp.

Referenced by add_lsa(), add_redo_data(), and do_postpone().

std::size_t log_postpone_cache::m_cursor
private

Definition at line 95 of file log_postpone_cache.hpp.

Referenced by add_lsa(), add_redo_data(), do_postpone(), is_full(), and reset().

bool log_postpone_cache::m_is_redo_data_buf_full
private

Definition at line 93 of file log_postpone_cache.hpp.

Referenced by add_redo_data(), do_postpone(), is_full(), and reset().

cubmem::extensible_block log_postpone_cache::m_redo_data_buf
private

Definition at line 91 of file log_postpone_cache.hpp.

Referenced by add_redo_data(), do_postpone(), and reset().

std::size_t log_postpone_cache::m_redo_data_offset
private

Definition at line 92 of file log_postpone_cache.hpp.

Referenced by add_redo_data(), do_postpone(), and reset().

const std::size_t log_postpone_cache::MAX_CACHE_ENTRIES = 512
staticprivate

Definition at line 73 of file log_postpone_cache.hpp.

Referenced by add_lsa(), add_redo_data(), and is_full().

const std::size_t log_postpone_cache::REDO_DATA_MAX_SIZE = 100 * 1024
staticprivate

Definition at line 74 of file log_postpone_cache.hpp.

Referenced by add_redo_data().


The documentation for this class was generated from the following files: