aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/vespa/storage/storageserver/mergethrottler.h
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-10-25 19:42:41 +0200
committerGitHub <noreply@github.com>2021-10-25 19:42:41 +0200
commit37d050d026ae1cdbcb1ba2dd4848107fa8d6fd61 (patch)
tree3cb25d04708ac3c2158c17ed0117bf883a8caf9d /storage/src/vespa/storage/storageserver/mergethrottler.h
parentcb6a8b7ccc971f4264fd3e0cb1917ba94e75552f (diff)
parent5b943fc1a120a2548cad10568fbf7e8819cbad3e (diff)
Merge pull request #19725 from vespa-engine/vekterli/prioritize-forwarded-merges-in-throttler-queuev7.489.25
Prioritize forwarded merges in MergeThrottler queue
Diffstat (limited to 'storage/src/vespa/storage/storageserver/mergethrottler.h')
-rw-r--r--storage/src/vespa/storage/storageserver/mergethrottler.h22
1 files changed, 13 insertions, 9 deletions
diff --git a/storage/src/vespa/storage/storageserver/mergethrottler.h b/storage/src/vespa/storage/storageserver/mergethrottler.h
index 997477a4b70..da301172a3a 100644
--- a/storage/src/vespa/storage/storageserver/mergethrottler.h
+++ b/storage/src/vespa/storage/storageserver/mergethrottler.h
@@ -80,21 +80,25 @@ private:
MessageType _msg;
metrics::MetricTimer _startTimer;
uint64_t _sequence;
-
- StablePriorityOrderingWrapper(const MessageType& msg, uint64_t sequence)
- : _msg(msg), _startTimer(), _sequence(sequence)
+ bool _is_forwarded_merge;
+
+ StablePriorityOrderingWrapper(const MessageType& msg,
+ uint64_t sequence,
+ bool is_forwarded_merge) noexcept
+ : _msg(msg),
+ _startTimer(),
+ _sequence(sequence),
+ _is_forwarded_merge(is_forwarded_merge)
{
}
- bool operator==(const StablePriorityOrderingWrapper& other) const {
- return (*_msg == *other._msg
- && _sequence == other._sequence);
- }
-
- bool operator<(const StablePriorityOrderingWrapper& other) const {
+ bool operator<(const StablePriorityOrderingWrapper& other) const noexcept {
if (_msg->getPriority() < other._msg->getPriority()) {
return true;
}
+ if (_is_forwarded_merge != other._is_forwarded_merge) {
+ return _is_forwarded_merge; // Forwarded merges sort before non-forwarded merges.
+ }
return (_sequence < other._sequence);
}
};