2222
2323namespace 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
10093void 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]);
0 commit comments