33#ifndef CLONE_DESC_INCLUDE
34#define CLONE_DESC_INCLUDE
170 bool deserialize(
const byte *desc_hdr, uint desc_len);
205 auto byte_index = index >> 3;
206 ut_ad(byte_index == index / 8);
213 auto bit_pos = index & 31;
214 ut_ad(bit_pos == index % 32);
221 operator bool()
const {
283 void serialize(
byte *&desc_chunk, uint &len);
288 void deserialize(
const byte *desc_chunk, uint &len_left);
347 void serialize(
byte *desc_chunk, uint &len);
352 void deserialize(
const byte *desc_chunk, uint &len_left);
435 bool deserialize(
const byte *desc_task, uint desc_len);
482 bool deserialize(
const byte *desc_state, uint desc_len);
592 bool deserialize(
const byte *desc_file, uint desc_len);
633 bool deserialize(
const byte *desc_data, uint desc_len);
uint32_t space_id_t
Tablespace identifier.
Definition: api0api.h:47
Bitmap array index operator implementation.
Definition: clone0desc.h:196
uint32_t *& m_bitmap_ref
Reference to BITMAP array.
Definition: clone0desc.h:245
Bitmap_Operator_Impl(uint32_t *&bitmap, uint32_t index)
Construct bitmap operator.
Definition: clone0desc.h:201
uint32_t m_bit_mask
Mask with current BIT set.
Definition: clone0desc.h:251
void operator=(bool bit)
Set BIT at specific index.
Definition: clone0desc.h:233
uint32_t m_map_index
Current array position.
Definition: clone0desc.h:248
Bitmap for completed chunks in current state.
Definition: clone0desc.h:190
uint32_t size_bits() const
Size of bitmap in bits.
Definition: clone0desc.h:304
void deserialize(const byte *desc_chunk, uint &len_left)
Deserialize the descriptor.
Definition: clone0desc.cc:393
size_t size() const
Size of bitmap in bytes.
Definition: clone0desc.h:300
void serialize(byte *&desc_chunk, uint &len)
Serialize the descriptor.
Definition: clone0desc.cc:328
uint32_t * reset(uint32_t max_bits, mem_heap_t *heap)
Reset bitmap with new size.
Definition: clone0desc.cc:168
size_t get_serialized_length()
Get the length of serialized data.
Definition: clone0desc.cc:296
uint32_t * m_bitmap
BITMAP buffer.
Definition: clone0desc.h:308
Bitmap_Operator_Impl operator[](uint32_t index)
Array index operator.
Definition: clone0desc.h:257
uint32_t m_bits
Total number of BITs in the MAP.
Definition: clone0desc.h:314
Chnunk_Bitmap()
Construct bitmap.
Definition: clone0desc.h:193
uint32_t get_min_unset_bit()
Get minimum BIT position that is not set.
Definition: clone0desc.cc:196
size_t capacity() const
Maximum bit capacity.
Definition: clone0desc.h:296
uint32_t get_max_set_bit()
Get maximum BIT position that is not set.
Definition: clone0desc.cc:244
size_t m_size
BITMAP buffer size: Number of 4 byte blocks.
Definition: clone0desc.h:311
static constexpr size_t KEY_LEN
Encryption key length.
Definition: os0enc.h:117
Clone_Desc_Type
Clone descriptors contain meta information needed for applying cloned data.
Definition: clone0desc.h:130
@ CLONE_DESC_MAX
Must be the last member.
Definition: clone0desc.h:147
@ CLONE_DESC_DATA
Information for a data block.
Definition: clone0desc.h:144
@ CLONE_DESC_FILE_METADATA
Metadata for a database file.
Definition: clone0desc.h:141
@ CLONE_DESC_TASK_METADATA
Metadata for a Task/Thread for clone operation.
Definition: clone0desc.h:135
@ CLONE_DESC_LOCATOR
Logical pointer to identify a clone operation.
Definition: clone0desc.h:132
@ CLONE_DESC_STATE
Information for snapshot state.
Definition: clone0desc.h:138
const uint32_t CLONE_ALIGN_DIRECT_IO
Align by 4K for O_DIRECT.
Definition: clone0desc.h:48
const int CLONE_MAX_TASKS
Maximum number of concurrent tasks for each clone.
Definition: clone0desc.h:51
const uint64_t CLONE_LOC_INVALID_ID
Invalid locator ID.
Definition: clone0desc.h:41
bool clone_validate_locator(const byte *desc_loc, uint desc_len)
Check if clone locator is valid.
Definition: clone0desc.cc:543
Snapshot_State
Snapshot state transfer during clone.
Definition: clone0desc.h:93
@ CLONE_SNAPSHOT_PAGE_COPY
Snapshot state while transferring pages.
Definition: clone0desc.h:104
@ CLONE_SNAPSHOT_REDO_COPY
Snapshot state while transferring redo.
Definition: clone0desc.h:107
@ CLONE_SNAPSHOT_DONE
Snapshot state at end after finishing transfer.
Definition: clone0desc.h:110
@ CLONE_SNAPSHOT_NONE
Invalid state.
Definition: clone0desc.h:95
@ CLONE_SNAPSHOT_INIT
Initialize state when snapshot object is created.
Definition: clone0desc.h:98
@ CLONE_SNAPSHOT_FILE_COPY
Snapshot state while transferring files.
Definition: clone0desc.h:101
const uint32_t CLONE_DESC_MAX_BASE_LEN
Maximum base length for any serialized descriptor.
Definition: clone0desc.h:45
uint choose_desc_version(const byte *ref_loc)
Choose lowest descriptor version between reference locator and currently supported version.
Definition: clone0desc.cc:53
const size_t CLONE_MAX_TRANSFER_STAGES
Total number of data transfer stages in clone.
Definition: clone0desc.h:114
std::map< uint32_t, uint32_t > Chunk_Map
Map for current block number for unfinished chunks.
Definition: clone0desc.h:187
The interface to the operating system file io.
required uint64 version
Definition: replication_group_member_actions.proto:41
Incomplete Chunk information.
Definition: clone0desc.h:318
uint32_t m_min_unres_chunk
Minimum chunk number that is not reserved yet.
Definition: clone0desc.h:329
size_t get_serialized_length(uint32_t num_tasks)
Get the length of serialized data.
Definition: clone0desc.cc:306
void init_chunk_nums()
Initialize Chunk number ranges.
Definition: clone0desc.h:335
void deserialize(const byte *desc_chunk, uint &len_left)
Deserialize the descriptor.
Definition: clone0desc.cc:425
void serialize(byte *desc_chunk, uint &len)
Serialize the descriptor.
Definition: clone0desc.cc:352
Chnunk_Bitmap m_reserved_chunks
Information about chunks completed.
Definition: clone0desc.h:320
uint32_t m_total_chunks
Chunks for current state.
Definition: clone0desc.h:326
uint32_t m_max_res_chunk
Maximum chunk number that is already reserved.
Definition: clone0desc.h:332
Chunk_Map m_incomplete_chunks
Information about unfinished chunks.
Definition: clone0desc.h:323
CLONE_DESC_DATA: Descriptor for data.
Definition: clone0desc.h:596
Clone_Task_Meta m_task_meta
Task information.
Definition: clone0desc.h:604
void serialize(byte *&desc_data, uint &len, mem_heap_t *heap)
Serialize the descriptor.
Definition: clone0desc.cc:1015
uint32_t m_data_len
Data Length.
Definition: clone0desc.h:610
uint32_t m_file_index
File identifier.
Definition: clone0desc.h:607
Snapshot_State m_state
Current snapshot State.
Definition: clone0desc.h:601
uint64_t m_file_offset
File offset for the data.
Definition: clone0desc.h:613
void init_header(uint version)
Initialize header.
Definition: clone0desc.cc:1007
uint64_t m_file_size
Updated file size.
Definition: clone0desc.h:616
Clone_Desc_Header m_header
Descriptor header.
Definition: clone0desc.h:598
bool deserialize(const byte *desc_data, uint desc_len)
Deserialize the descriptor.
Definition: clone0desc.cc:1042
CLONE_DESC_LOCATOR: Descriptor for a task for clone operation.
Definition: clone0desc.h:362
Snapshot_State m_state
Current snapshot State.
Definition: clone0desc.h:376
bool match(Clone_Desc_Locator *other_desc)
Check if the passed locator matches the current one.
Definition: clone0desc.cc:490
void init(uint64_t id, uint64_t snap_id, Snapshot_State state, uint version, uint index)
Initialize clone locator.
Definition: clone0desc.cc:474
void serialize(byte *&desc_loc, uint &len, Chunk_Info *chunk_info, mem_heap_t *heap)
Serialize the descriptor.
Definition: clone0desc.cc:504
Clone_Desc_Header m_header
Descriptor header.
Definition: clone0desc.h:364
uint32_t m_clone_index
Index in clone array for fast reference.
Definition: clone0desc.h:373
uint64_t m_clone_id
Unique identifier for a clone operation.
Definition: clone0desc.h:367
uint64_t m_snapshot_id
Unique identifier for a clone snapshot.
Definition: clone0desc.h:370
bool m_metadata_transferred
Sub-state information: metadata transferred.
Definition: clone0desc.h:379
void deserialize(const byte *desc_loc, uint desc_len, Chunk_Info *chunk_info)
Deserialize the descriptor.
Definition: clone0desc.cc:559
CLONE_DESC_STATE: Descriptor for current snapshot state.
Definition: clone0desc.h:439
bool m_is_start
If start processing state.
Definition: clone0desc.h:462
bool deserialize(const byte *desc_state, uint desc_len)
Deserialize the descriptor.
Definition: clone0desc.cc:948
Snapshot_State m_state
Current snapshot State.
Definition: clone0desc.h:444
uint m_num_chunks
Number of chunks in current state.
Definition: clone0desc.h:450
Clone_Desc_Header m_header
Descriptor header.
Definition: clone0desc.h:441
uint m_task_index
Task identifier.
Definition: clone0desc.h:447
uint64_t m_estimate
Number of estimated bytes to transfer.
Definition: clone0desc.h:456
void init_header(uint version)
Initialize header.
Definition: clone0desc.cc:906
uint m_num_files
Number of files in current state.
Definition: clone0desc.h:453
bool m_is_ack
State transfer Acknowledgement.
Definition: clone0desc.h:465
uint64_t m_estimate_disk
Number of estimated bytes on disk.
Definition: clone0desc.h:459
void serialize(byte *&desc_state, uint &len, mem_heap_t *heap)
Serialize the descriptor.
Definition: clone0desc.cc:914
Type
Algorithm types supported.
Definition: file.h:53
The info structure stored at the beginning of a heap block.
Definition: mem0mem.h:302
Version control for database, common definitions, and include files.
#define ut_ad(EXPR)
Debug assertion.
Definition: ut0dbg.h:105
#define ut_a(EXPR)
Abort execution if EXPR does not evaluate to nonzero.
Definition: ut0dbg.h:93