You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by GitBox <gi...@apache.org> on 2023/01/19 05:18:46 UTC
[GitHub] [doris] github-actions[bot] commented on a diff in pull request #16089: [wip](cooldown)accelerate cooldown task produce efficiency
github-actions[bot] commented on code in PR #16089:
URL: https://github.com/apache/doris/pull/16089#discussion_r1080818135
##########
be/src/olap/tablet_manager.cpp:
##########
@@ -1272,40 +1272,44 @@ struct SortCtx {
SortCtx(TabletSharedPtr tablet, int64_t cooldown_timestamp, int64_t file_size)
: tablet(tablet), cooldown_timestamp(cooldown_timestamp), file_size(file_size) {}
TabletSharedPtr tablet;
- int64_t cooldown_timestamp;
+ // to ensure the tablet with -1 would always be greater than other
+ uint64_t cooldown_timestamp;
int64_t file_size;
+ bool operator<(const SortCtx& other) const {
+ if (this->cooldown_timestamp == other.cooldown_timestamp) {
+ return this->file_size > other.file_size;
+ }
+ return this->cooldown_timestamp < other.cooldown_timestamp;
+ }
};
void TabletManager::get_cooldown_tablets(std::vector<TabletSharedPtr>* tablets) {
std::vector<SortCtx> sort_ctx_vec;
+ std::vector<std::weak_ptr<Tablet>> candidates;
for (const auto& tablets_shard : _tablets_shards) {
std::shared_lock rdlock(tablets_shard.lock);
- for (const auto& item : tablets_shard.tablet_map) {
- const TabletSharedPtr& tablet = item.second;
- int64_t cooldown_timestamp = -1;
- size_t file_size = -1;
- if (tablet->need_cooldown(&cooldown_timestamp, &file_size)) {
- sort_ctx_vec.emplace_back(tablet, cooldown_timestamp, file_size);
- }
- }
- }
-
- std::sort(sort_ctx_vec.begin(), sort_ctx_vec.end(), [](SortCtx a, SortCtx b) {
- if (a.cooldown_timestamp != -1 && b.cooldown_timestamp != -1) {
- return a.cooldown_timestamp < b.cooldown_timestamp;
- }
-
- if (a.cooldown_timestamp != -1 && b.cooldown_timestamp == -1) {
- return true;
+ std::for_each(tablets_shard.tablet_map.begin(), tablets_shard.tablet_map.end(),
+ [&candidates](auto& tablet_pair) {
+ candidates.emplace_back(tablet_pair.second.tablet->weak_from_this());
Review Comment:
warning: no member named 'tablet' in 'std::shared_ptr<doris::Tablet>' [clang-diagnostic-error]
```cpp
candidates.emplace_back(tablet_pair.second.tablet->weak_from_this());
^
```
**/usr/include/c++/11/bits/stl_algo.h:3819:** in instantiation of function template specialization 'doris::TabletManager::get_cooldown_tablets(std::vector<TabletSharedPtr> *)::(anonymous class)::operator()<const std::pair<const long, std::shared_ptr<doris::Tablet>>>' requested here
```cpp
__f(*__first);
^
```
**be/src/olap/tablet_manager.cpp:1290:** in instantiation of function template specialization 'std::for_each<std::__detail::_Node_const_iterator<std::pair<const long, std::shared_ptr<doris::Tablet>>, false, false>, (lambda at /github/workspace/be/src/olap/tablet_manager.cpp:1292:23)>' requested here
```cpp
std::for_each(tablets_shard.tablet_map.begin(), tablets_shard.tablet_map.end(),
^
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org