Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion runtime-light/components/confdata/confdata-component.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ VISIBILITY_DEFAULT const ImageInfo* k2_describe() {
.is_oneshot = 0,
.build_timestamp = KPHP_CONFDATA_BUILD_TIMESTAMP,
.header_h_version = K2_PLATFORM_HEADER_H_VERSION,
.version = "1.0.0",
.version = "1.0.1",
.extra_info_size = extra_info.size(),
.extra_info = extra_info.data()};
return std::addressof(image_info);
Expand Down
10 changes: 6 additions & 4 deletions runtime-light/components/confdata/state/instance-state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,8 @@ auto InstanceState::accept_loop() noexcept -> kphp::coro::task<> {
}

auto InstanceState::serve_reader_lease(kphp::component::stream reader_stream) noexcept -> kphp::coro::task<> {
// Outlive the connection, whose destructor unregisters the handler capturing this event.
kphp::coro::event reader_disconnected{};
auto connection{kphp::component::connection::from_stream(std::move(reader_stream))};
if (!connection) [[unlikely]] {
co_return kphp::log::warning("failed to create a confdata reader connection: error -> {}", connection.error());
Expand All @@ -353,6 +355,10 @@ auto InstanceState::serve_reader_lease(kphp::component::stream reader_stream) no
co_return kphp::log::warning("can't serve a confdata reader lease: can't find confdata piece");
}

if (const auto registered{connection->register_abort_handler([&reader_disconnected] noexcept { reader_disconnected.set(); })}; !registered) [[unlikely]] {
co_return kphp::log::warning("failed to watch a confdata reader connection: error -> {}", registered.error());
}

reader_session session{*this, std::prev(m_confdata_pieces.end())};
kphp::log::debug("issuing reader lease: sample -> {}, sections -> {}", session.sample_id(),
m_confdata_pieces.back().storage().values(session.sample_id()).size());
Expand All @@ -364,10 +370,6 @@ auto InstanceState::serve_reader_lease(kphp::component::stream reader_stream) no
co_return kphp::log::warning("failed to write a confdata reader lease: error -> {}", written.error());
}

kphp::coro::event reader_disconnected{};
if (const auto registered{connection->register_abort_handler([&reader_disconnected] noexcept { reader_disconnected.set(); })}; !registered) [[unlikely]] {
co_return kphp::log::warning("failed to watch a confdata reader connection: error -> {}", registered.error());
}
co_await reader_disconnected;
}

Expand Down
Loading