[improvement](compaction) be do not compact invisible version to avoid query error -230#28082
Conversation
|
run buildall |
| @@ -20,6 +20,7 @@ | |||
| #include <gen_cpp/Types_types.h> | |||
There was a problem hiding this comment.
warning: 'gen_cpp/Types_types.h' file not found [clang-diagnostic-error]
#include <gen_cpp/Types_types.h>
^|
run buildall |
|
run buildall |
|
(From new machine)TeamCity pipeline, clickbench performance test result: |
TPC-H test result on machine: 'aliyun_ecs.c7a.8xlarge_32C64G' |
|
run buildall |
TPC-H test result on machine: 'aliyun_ecs.c7a.8xlarge_32C64G' |
|
(From new machine)TeamCity pipeline, clickbench performance test result: |
344f627 to
13ab608
Compare
TPC-H test result on machine: 'aliyun_ecs.c7a.8xlarge_32C64G' |
|
(From new machine)TeamCity pipeline, clickbench performance test result: |
|
run buildall |
TPC-H test result on machine: 'aliyun_ecs.c7a.8xlarge_32C64G' |
|
(From new machine)TeamCity pipeline, clickbench performance test result: |
|
run buildall |
1 similar comment
|
run buildall |
| return max_version; | ||
| } | ||
|
|
||
| size_t TabletMeta::version_count_cross_with_range(const Version& range) const { |
There was a problem hiding this comment.
warning: method 'version_count_cross_with_range' can be made static [readability-convert-member-functions-to-static]
| size_t TabletMeta::version_count_cross_with_range(const Version& range) const { | |
| size_t TabletMeta::version_count_cross_with_range(const Version& range) { |
be/src/olap/tablet_meta.h:165:
- size_t version_count_cross_with_range(const Version& range) const;
+ static size_t version_count_cross_with_range(const Version& range) ;|
TeamCity be ut coverage result: |
|
(From new machine)TeamCity pipeline, clickbench performance test result: |
TPC-H: Total hot run time: 38580 ms |
TPC-DS: Total hot run time: 183392 ms |
|
run buildall |
TPC-H: Total hot run time: 39165 ms |
TPC-DS: Total hot run time: 185899 ms |
ClickBench: Total hot run time: 30.13 s |
|
TeamCity be ut coverage result: |
|
run p0 |
2 similar comments
|
run p0 |
|
run p0 |
|
run buildall |
|
run feut |
|
TeamCity be ut coverage result: |
|
run external |
|
run buildall |
|
TeamCity be ut coverage result: |
TPC-DS: Total hot run time: 187078 ms |
|
PR approved by at least one committer and no changes requested. |
|
PR approved by anyone and no changes requested. |
|
|
||
| using PartialUpdateReadPlan = std::map<RowsetId, std::map<uint32_t, std::vector<RidAndPos>>>; | ||
|
|
||
| // used for controll compaction |
| continue; | ||
| } | ||
|
|
||
| // can compact, met one of the conditions: |
| row.add(String.valueOf(visibleVersion)); | ||
| row.add(String.valueOf(replica.getSchemaHash())); | ||
| row.add(String.valueOf(replica.getVersionCount())); | ||
| row.add(String.valueOf(replica.getTotalVersionCount())); |
There was a problem hiding this comment.
visible version count 不用加么?
Problem:
When execute a sql query, FE will send a request to BE. The request contains tablets and their partitions' visible versions. BE need to obtains the tablet's rowsets in range [0, visible version]. But sometimes BE may had compacted visible version rowset with large version rowsets, so it can not return rowsets just in range [0, visible version]. Then BE will return error VERSION_ALREADY_MERGED -230.
Fix:
Proposed changes
Issue Number: close #xxx
Further comments
If this is a relatively large or complex change, kick off the discussion at dev@doris.apache.org by explaining why you chose the solution you did and what alternatives you considered, etc...