Skip to content

Commit f4f261a

Browse files
authored
fix(interactive): Cannot assume the number of WALs has an upper limit (#4576)
Fixes
1 parent ad1174f commit f4f261a

File tree

3 files changed

+7
-20
lines changed

3 files changed

+7
-20
lines changed

flex/engines/graph_db/database/wal/local_wal_parser.cc

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222

2323
namespace gs {
2424

25-
LocalWalParser::LocalWalParser(const std::string& wal_uri)
26-
: insert_wal_list_(NULL), insert_wal_list_size_(0) {
25+
LocalWalParser::LocalWalParser(const std::string& wal_uri) {
2726
LocalWalParser::open(wal_uri);
2827
}
2928

@@ -54,16 +53,7 @@ void LocalWalParser::open(const std::string& wal_uri) {
5453
mmapped_size_.push_back(file_size);
5554
}
5655

57-
if (insert_wal_list_ != NULL) {
58-
munmap(insert_wal_list_, insert_wal_list_size_ * sizeof(WalContentUnit));
59-
insert_wal_list_ = NULL;
60-
insert_wal_list_size_ = 0;
61-
}
62-
insert_wal_list_ = static_cast<WalContentUnit*>(
63-
mmap(NULL, IWalWriter::MAX_WALS_NUM * sizeof(WalContentUnit),
64-
PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE,
65-
-1, 0));
66-
insert_wal_list_size_ = IWalWriter::MAX_WALS_NUM;
56+
insert_wal_list_.resize(4096);
6757
for (size_t i = 0; i < mmapped_ptrs_.size(); ++i) {
6858
char* ptr = static_cast<char*>(mmapped_ptrs_[i]);
6959
while (true) {
@@ -81,6 +71,9 @@ void LocalWalParser::open(const std::string& wal_uri) {
8171
unit.size = length;
8272
update_wal_list_.push_back(unit);
8373
} else {
74+
if (ts >= insert_wal_list_.size()) {
75+
insert_wal_list_.resize(ts + 1);
76+
}
8477
insert_wal_list_[ts].ptr = ptr;
8578
insert_wal_list_[ts].size = length;
8679
}
@@ -98,11 +91,7 @@ void LocalWalParser::open(const std::string& wal_uri) {
9891
}
9992

10093
void LocalWalParser::close() {
101-
if (insert_wal_list_ != NULL) {
102-
munmap(insert_wal_list_, insert_wal_list_size_ * sizeof(WalContentUnit));
103-
insert_wal_list_ = NULL;
104-
insert_wal_list_size_ = 0;
105-
}
94+
insert_wal_list_.clear();
10695
size_t ptr_num = mmapped_ptrs_.size();
10796
for (size_t i = 0; i < ptr_num; ++i) {
10897
munmap(mmapped_ptrs_[i], mmapped_size_[i]);

flex/engines/graph_db/database/wal/local_wal_parser.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ class LocalWalParser : public IWalParser {
4141
std::vector<int> fds_;
4242
std::vector<void*> mmapped_ptrs_;
4343
std::vector<size_t> mmapped_size_;
44-
WalContentUnit* insert_wal_list_;
45-
size_t insert_wal_list_size_;
44+
std::vector<WalContentUnit> insert_wal_list_;
4645
uint32_t last_ts_{0};
4746

4847
std::vector<UpdateWalUnit> update_wal_list_;

flex/engines/graph_db/database/wal/wal.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ std::string get_wal_uri_path(const std::string& uri);
5656
*/
5757
class IWalWriter {
5858
public:
59-
static constexpr size_t MAX_WALS_NUM = 134217728;
6059
virtual ~IWalWriter() {}
6160

6261
virtual std::string type() const = 0;

0 commit comments

Comments
 (0)