mirror of
https://github.com/dragonflydb/dragonfly.git
synced 2025-05-11 18:35:46 +02:00
feat(server): rdb loader big string loading in chunks (#4623)
1. rdb loader big string loading in chunks 2. snapshot compression logic is disabled in case of big buffer Signed-off-by: adi_holden <adi@dragonflydb.io>
This commit is contained in:
parent
a22daaf49d
commit
6016ae1ec8
7 changed files with 119 additions and 50 deletions
|
@ -556,6 +556,20 @@ void RobjWrapper::SetString(string_view s, MemoryResource* mr) {
|
|||
}
|
||||
}
|
||||
|
||||
void RobjWrapper::ReserveString(size_t size, MemoryResource* mr) {
|
||||
CHECK_EQ(inner_obj_, nullptr);
|
||||
type_ = OBJ_STRING;
|
||||
encoding_ = OBJ_ENCODING_RAW;
|
||||
MakeInnerRoom(0, size, mr);
|
||||
}
|
||||
|
||||
void RobjWrapper::AppendString(string_view s, MemoryResource* mr) {
|
||||
size_t cur_cap = InnerObjMallocUsed();
|
||||
CHECK(cur_cap >= sz_ + s.size()) << cur_cap << " " << sz_ << " " << s.size();
|
||||
memcpy(reinterpret_cast<uint8_t*>(inner_obj_) + sz_, s.data(), s.size());
|
||||
sz_ += s.size();
|
||||
}
|
||||
|
||||
void RobjWrapper::SetSize(uint64_t size) {
|
||||
sz_ = size;
|
||||
}
|
||||
|
@ -976,6 +990,16 @@ void CompactObj::SetString(std::string_view str) {
|
|||
EncodeString(str);
|
||||
}
|
||||
|
||||
void CompactObj::ReserveString(size_t size) {
|
||||
uint8_t mask = mask_ & ~kEncMask;
|
||||
SetMeta(ROBJ_TAG, mask);
|
||||
u_.r_obj.ReserveString(size, tl.local_mr);
|
||||
}
|
||||
|
||||
void CompactObj::AppendString(std::string_view str) {
|
||||
u_.r_obj.AppendString(str, tl.local_mr);
|
||||
}
|
||||
|
||||
string_view CompactObj::GetSlice(string* scratch) const {
|
||||
CHECK(!IsExternal());
|
||||
uint8_t is_encoded = mask_ & kEncMask;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue