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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]