Skip to content

Commit

Permalink
[test](move-memtable) add more fault injection cases for writer v2 (#…
Browse files Browse the repository at this point in the history
…39169)

## Proposed changes

Add more fault injection cases for writer v2 to improve coverage.
  • Loading branch information
kaijchen authored and dataroaring committed Aug 26, 2024
1 parent 6eb39b9 commit b889848
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
15 changes: 9 additions & 6 deletions be/src/vec/sink/writer/vtablet_writer_v2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,13 +200,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();
Expand Down Expand Up @@ -289,6 +287,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", {
Expand Down Expand Up @@ -482,6 +482,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);
Expand Down Expand Up @@ -675,6 +677,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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")

Expand Down

0 comments on commit b889848

Please sign in to comment.