Skip to content

Commit b2894a4

Browse files
committed
Add lock for log dev read api's.
Avoid concurrent access to journal vdev for truncate, write and read api's from different threads.
1 parent 6756b81 commit b2894a4

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

conanfile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
class HomestoreConan(ConanFile):
1111
name = "homestore"
12-
version = "6.5.26"
12+
version = "6.5.27"
1313

1414
homepage = "https://github.com/eBay/Homestore"
1515
description = "HomeStore Storage Engine"

src/lib/logstore/log_dev.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ int64_t LogDev::append_async(logstore_id_t store_id, logstore_seq_num_t seq_num,
264264
}
265265

266266
log_buffer LogDev::read(const logdev_key& key) {
267+
std::unique_lock lg = flush_guard();
267268
auto buf = sisl::make_byte_array(initial_read_size, m_flush_size_multiple, sisl::buftag::logread);
268269
auto ec = m_vdev_jd->sync_pread(buf->bytes(), initial_read_size, key.dev_offset);
269270
if (ec) {
@@ -292,6 +293,7 @@ log_buffer LogDev::read(const logdev_key& key) {
292293
}
293294

294295
void LogDev::read_record_header(const logdev_key& key, serialized_log_record& return_record_header) {
296+
std::unique_lock lg = flush_guard();
295297
auto buf = sisl::make_byte_array(initial_read_size, m_flush_size_multiple, sisl::buftag::logread);
296298
auto ec = m_vdev_jd->sync_pread(buf->bytes(), initial_read_size, key.dev_offset);
297299
if (ec) LOGERROR("Failed to read from Journal vdev log_dev={} {} {}", m_logdev_id, ec.value(), ec.message());

0 commit comments

Comments
 (0)