@@ -140,23 +140,23 @@ log_buffer HomeLogStore::read_sync(logstore_seq_num_t seq_num) {
140140}
141141#if 0
142142void 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
151151void 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
210210void 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;
0 commit comments