query: transform asserts into on_internal_error in forward_result::merge

It was done to show more context in case of forward_result::merge
arguments size mismatch and also to prevent aborts caused by another
nodes sending malformed data.
This commit is contained in:
Michał Sala
2022-03-09 14:43:44 +01:00
parent 11ea2ffc3c
commit 51362e4e5e

View File

@@ -20,6 +20,8 @@
namespace query {
static logging::logger qlogger("query");
constexpr size_t result_memory_limiter::minimum_result_size;
constexpr size_t result_memory_limiter::maximum_result_size;
constexpr size_t result_memory_limiter::unlimited_result_size;
@@ -404,8 +406,16 @@ void forward_result::merge(const forward_result& other, const std::vector<forwar
query_results.resize(other.query_results.size());
}
assert(query_results.size() == other.query_results.size());
assert(query_results.size() == reduction_types.size());
if (query_results.size() != other.query_results.size() || query_results.size() != reduction_types.size()) {
on_internal_error(
qlogger,
format("forward_result::merge(): operation cannot be completed due to invalid argument sizes. "
"this.query_results.size(): {} "
"other.query_results.size(): {} "
"reduction_types.size(): {}",
query_results.size(), other.query_results.size(), reduction_types.size())
);
}
for (size_t i = 0; i < query_results.size(); i++) {
query_results[i] = merge_singular_results(query_results[i], other.query_results[i], reduction_types[i]);