This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new f32d540ac50 [test](move-memtable) add more fault injection cases for
writer v2 (#39169) (#40986)
f32d540ac50 is described below
commit f32d540ac501acb6657f1414bdc39b29736364ff
Author: Kaijie Chen <[email protected]>
AuthorDate: Thu Sep 19 22:31:12 2024 +0800
[test](move-memtable) add more fault injection cases for writer v2 (#39169)
(#40986)
backport #39169
---
be/src/vec/sink/writer/vtablet_writer_v2.cpp | 15 +++++++++------
.../test_writer_v2_fault_injection.groovy | 6 ++++++
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/be/src/vec/sink/writer/vtablet_writer_v2.cpp
b/be/src/vec/sink/writer/vtablet_writer_v2.cpp
index dc2297ab640..41277a6fdcd 100644
--- a/be/src/vec/sink/writer/vtablet_writer_v2.cpp
+++ b/be/src/vec/sink/writer/vtablet_writer_v2.cpp
@@ -197,13 +197,11 @@ Status VTabletWriterV2::_init(RuntimeState* state,
RuntimeProfile* profile) {
return Status::InternalError("unknown destination tuple descriptor, id
= {}",
_tuple_desc_id);
}
-
DBUG_EXECUTE_IF("VTabletWriterV2._init._vec_output_expr_ctxs_not_equal_output_tuple_slot",
{
- return Status::InvalidArgument(
- "output_tuple_slot_num {} should be equal to output_expr_num
{}",
- _output_tuple_desc->slots().size() + 1,
_vec_output_expr_ctxs.size());
- });
+ auto output_tuple_desc_slots_size = _output_tuple_desc->slots().size();
+
DBUG_EXECUTE_IF("VTabletWriterV2._init._vec_output_expr_ctxs_not_equal_output_tuple_slot",
+ { output_tuple_desc_slots_size++; });
if (!_vec_output_expr_ctxs.empty() &&
- _output_tuple_desc->slots().size() != _vec_output_expr_ctxs.size()) {
+ _vec_output_expr_ctxs.size() != output_tuple_desc_slots_size) {
LOG(WARNING) << "output tuple slot num should be equal to num of
output exprs, "
<< "output_tuple_slot_num " <<
_output_tuple_desc->slots().size()
<< " output_expr_num " << _vec_output_expr_ctxs.size();
@@ -292,6 +290,8 @@ Status VTabletWriterV2::_open_streams_to_backend(int64_t
dst_id, Streams& stream
}
auto idle_timeout_ms = _state->execution_timeout() * 1000;
std::vector<PTabletID>& tablets_for_schema =
_indexes_from_node[node_info->id];
+
DBUG_EXECUTE_IF("VTabletWriterV2._open_streams_to_backend.no_schema_when_open_streams",
+ { tablets_for_schema.clear(); });
int fault_injection_skip_cnt = 0;
for (auto& stream : streams) {
DBUG_EXECUTE_IF("VTabletWriterV2._open_streams_to_backend.one_stream_open_failure",
{
@@ -484,6 +484,8 @@ Status
VTabletWriterV2::_write_memtable(std::shared_ptr<vectorized::Block> block
break;
}
}
+ DBUG_EXECUTE_IF("VTabletWriterV2._write_memtable.index_not_found",
+ { index_not_found = true; });
if (index_not_found) {
LOG(WARNING) << "index " << rows.index_id
<< " not found in schema, load_id=" <<
print_id(_load_id);
@@ -677,6 +679,7 @@ void VTabletWriterV2::_close_wait(bool incremental) {
}
int64_t remain_ms =
static_cast<int64_t>(_state->execution_timeout()) * 1000 -
_timeout_watch.elapsed_time() / 1000 /
1000;
+
DBUG_EXECUTE_IF("VTabletWriterV2._close_wait.load_timeout", { remain_ms = 0; });
if (remain_ms <= 0) {
LOG(WARNING) << "load timed out before close waiting,
load_id="
<< print_id(_load_id);
diff --git
a/regression-test/suites/fault_injection_p0/test_writer_v2_fault_injection.groovy
b/regression-test/suites/fault_injection_p0/test_writer_v2_fault_injection.groovy
index eaf87127abc..c0cbd1686eb 100644
---
a/regression-test/suites/fault_injection_p0/test_writer_v2_fault_injection.groovy
+++
b/regression-test/suites/fault_injection_p0/test_writer_v2_fault_injection.groovy
@@ -85,12 +85,18 @@ suite("test_writer_v2_fault_injection", "nonConcurrent") {
load_with_injection("VTabletWriterV2._init._vec_output_expr_ctxs_not_equal_output_tuple_slot",
"should be equal to output_expr_num")
// VTabletWriterV2 node_info is null
load_with_injection("VTabletWriterV2._open_streams_to_backend.node_info_null",
"Unknown node")
+ // VTabletWriterV2 do not get tablet schema on open_streams
+
load_with_injection("VTabletWriterV2._open_streams_to_backend.no_schema_when_open_streams",
"success")
// VTabletWriterV2 tablet_location is null
load_with_injection("VTabletWriterV2._build_tablet_node_mapping.tablet_location_null",
"unknown tablet location")
// VTabletWriterV2 location is null
load_with_injection("VTabletWriterV2._select_streams.location_null",
"failed to open DeltaWriter for tablet")
+ // VTabletWriterV2 index not found
+ load_with_injection("VTabletWriterV2._write_memtable.index_not_found",
"failed to open DeltaWriter for tablet")
// VTabletWriterV2 cancel
load_with_injection("VTabletWriterV2.close.cancel", "load cancel")
+ // VTabletWriterV2 load timeout before close_wait
+ load_with_injection("VTabletWriterV2._close_wait.load_timeout", "load
timed out before close waiting")
// DeltaWriterV2 stream_size is 0
load_with_injection("DeltaWriterV2.init.stream_size", "failed to find
tablet schema")
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]