Skip to content

Commit 523f6ae

Browse files
Merge pull request #128 from shosseinimotlagh/fix_logstore_epoll
Fix logstore epoll test
2 parents 4f3424b + 6b4dccc commit 523f6ae

File tree

2 files changed

+31
-26
lines changed

2 files changed

+31
-26
lines changed

src/homelogstore/log_store.cpp

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -140,23 +140,23 @@ log_buffer HomeLogStore::read_sync(logstore_seq_num_t seq_num) {
140140
}
141141
#if 0
142142
void HomeLogStore::read_async(logstore_req* req, const log_found_cb_t& cb) {
143-
HS_LOG_ASSERT( ((cb != nullptr) || (m_comp_cb != nullptr)),
144-
"Expected either cb is not null or default cb registered");
145-
auto record = m_records.at(req->seq_num);
146-
logdev_key ld_key = record.m_dev_key;
147-
req->cb = cb;
148-
m_logdev.read_async(ld_key, (void*)req);
143+
HS_LOG_ASSERT( ((cb != nullptr) || (m_comp_cb != nullptr)),
144+
"Expected either cb is not null or default cb registered");
145+
auto record = m_records.at(req->seq_num);
146+
logdev_key ld_key = record.m_dev_key;
147+
req->cb = cb;
148+
m_logdev.read_async(ld_key, (void*)req);
149149
}
150150

151151
void HomeLogStore::read_async(logstore_seq_num_t seq_num, void* cookie, const log_found_cb_t& cb) {
152-
auto record = m_records.at(seq_num);
153-
logdev_key ld_key = record.m_dev_key;
154-
sisl::io_blob b;
155-
auto* req = logstore_req::make(this, seq_num, &b, false /* not write */);
156-
read_async(req, [cookie, cb](logstore_seq_num_t seq_num, log_buffer log_buf, void* cookie) {
157-
cb(seq, log_buf, cookie);
158-
logstore_req::free(req);
159-
});
152+
auto record = m_records.at(seq_num);
153+
logdev_key ld_key = record.m_dev_key;
154+
sisl::io_blob b;
155+
auto* req = logstore_req::make(this, seq_num, &b, false /* not write */);
156+
read_async(req, [cookie, cb](logstore_seq_num_t seq_num, log_buffer log_buf, void* cookie) {
157+
cb(seq, log_buf, cookie);
158+
logstore_req::free(req);
159+
});
160160
}
161161
#endif
162162

@@ -209,10 +209,10 @@ void HomeLogStore::on_batch_completion(const logdev_key& flush_batch_ld_key) {
209209

210210
void HomeLogStore::truncate(const logstore_seq_num_t upto_seq_num, const bool in_memory_truncate_only) {
211211
#if 0
212-
if (!iomanager.is_io_thread()) {
213-
LOGDFATAL("Expected truncate to be called from iomanager thread. Ignoring truncate");
214-
return;
215-
}
212+
if (!iomanager.is_io_thread()) {
213+
LOGDFATAL("Expected truncate to be called from iomanager thread. Ignoring truncate");
214+
return;
215+
}
216216
#endif
217217

218218
#ifndef NDEBUG
@@ -318,13 +318,18 @@ nlohmann::json HomeLogStore::dump_log_store(const log_dump_req& dump_req) {
318318
nlohmann::json json_dump{}; // create root object
319319
const auto trunc_upto{this->truncated_upto()};
320320
std::remove_const_t< decltype(trunc_upto) > idx{trunc_upto + 1};
321-
int32_t batch_size;
322-
if (dump_req.batch_size != 0) {
321+
if (dump_req.start_seq_num) idx = dump_req.start_seq_num;
322+
323+
logstore_seq_num_t batch_size;
324+
if (dump_req.batch_size) {
323325
batch_size = dump_req.batch_size;
324326
} else {
325-
batch_size = dump_req.end_seq_num - dump_req.start_seq_num;
327+
if (dump_req.end_seq_num) {
328+
batch_size = dump_req.end_seq_num - idx + 1;
329+
} else {
330+
batch_size = std::numeric_limits< int64_t >::max() - idx;
331+
}
326332
}
327-
if (dump_req.start_seq_num != 0) idx = dump_req.start_seq_num;
328333

329334
// must use move operator= operation instead of move copy constructor
330335
nlohmann::json json_records = nlohmann::json::array();
@@ -355,7 +360,7 @@ nlohmann::json HomeLogStore::dump_log_store(const log_dump_req& dump_req) {
355360
decltype(idx) end_idx{std::min(max_idx, dump_req.end_seq_num)};
356361
proceed = (cur_idx < end_idx && --batch_size > 0) ? true : false;
357362
// User can provide either the end_seq_num or batch_size in the request.
358-
if (cur_idx < end_idx && batch_size == 0) { json_dump["next_cursor"] = std::to_string(cur_idx + 1); }
363+
if (cur_idx < end_idx && !batch_size) { json_dump["next_cursor"] = std::to_string(cur_idx + 1); }
359364
return proceed;
360365
});
361366

@@ -387,9 +392,9 @@ sisl::status_response HomeLogStore::get_status(const sisl::status_request& reque
387392
sisl::status_response response;
388393
if (request.json.contains("type") && request.json["type"] == "logstore_record") {
389394
log_dump_req dump_req{};
390-
if (!request.next_cursor.empty()) { dump_req.start_seq_num = std::stoul(request.next_cursor); }
395+
if (!request.next_cursor.empty()) { dump_req.start_seq_num = std::stoull(request.next_cursor); }
391396
dump_req.batch_size = request.batch_size;
392-
dump_req.end_seq_num = UINT32_MAX;
397+
dump_req.end_seq_num = std::numeric_limits< int64_t >::max() - 1;
393398
homestore::log_dump_verbosity verbose_level = homestore::log_dump_verbosity::HEADER;
394399
if (request.json.contains("log_content")) { verbose_level = homestore::log_dump_verbosity::CONTENT; }
395400
dump_req.verbosity_level = verbose_level;

src/homelogstore/log_store.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ struct log_dump_req {
4545
std::shared_ptr< HomeLogStore > log_store; // if null all log stores are dumped
4646
logstore_seq_num_t start_seq_num; // empty_key if from start of log file
4747
logstore_seq_num_t end_seq_num; // empty_key if till last log entry
48-
int32_t batch_size = 0; // Size of the output batch.
48+
logstore_seq_num_t batch_size = 0; // Size of the output batch.
4949
};
5050

5151
struct logstore_record {

0 commit comments

Comments
 (0)