summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-01-29 11:40:10 +0100
committerGitHub <noreply@github.com>2023-01-29 11:40:10 +0100
commitcbe4909b5d23dcee552d6777733387966053d25a (patch)
tree568d7725f7822989f388d775398936e106260dd5 /slobrok
parent1892897a2ab3e543d0f6511436e4764269d38d50 (diff)
parentea22e1cc3c456936d4b2fc5a470ec7957d57c0f4 (diff)
Merge pull request #25777 from vespa-engine/arnej/avoid-silly-warning
Arnej/avoid warning
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/tests/backoff/testbackoff.cpp15
-rw-r--r--slobrok/src/vespa/slobrok/backoff.cpp6
2 files changed, 16 insertions, 5 deletions
diff --git a/slobrok/src/tests/backoff/testbackoff.cpp b/slobrok/src/tests/backoff/testbackoff.cpp
index 8125d8625a8..50d68b72adf 100644
--- a/slobrok/src/tests/backoff/testbackoff.cpp
+++ b/slobrok/src/tests/backoff/testbackoff.cpp
@@ -17,9 +17,14 @@ Test::Main()
TEST_INIT("backoff_test");
BackOff one;
- EXPECT_TRUE(one.shouldWarn());
+ EXPECT_FALSE(one.shouldWarn());
EXPECT_EQUAL(0.500, one.get());
- for (int i = 2; i < 41; i++) {
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(1.000, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(1.500, one.get());
+ EXPECT_TRUE(one.shouldWarn());
+ for (int i = 4; i < 41; i++) {
EXPECT_EQUAL(0.5 * i, one.get());
}
for (int i = 1; i < 1000; i++) {
@@ -28,22 +33,24 @@ Test::Main()
TEST_FLUSH();
BackOff two;
+ EXPECT_FALSE(two.shouldWarn());
for (int i = 1; i < 50; i++) {
double expect = 0.5 * i;
if (expect > 20.0) expect = 20.0;
EXPECT_EQUAL(expect, two.get());
- if (i == 1 || i == 7 || i == 18) {
+ if (i == 3 || i == 8 || i == 18) {
EXPECT_TRUE(two.shouldWarn());
} else {
EXPECT_FALSE(two.shouldWarn());
}
}
two.reset();
+ EXPECT_FALSE(two.shouldWarn());
for (int i = 1; i < 50; i++) {
double expect = 0.5 * i;
if (expect > 20.0) expect = 20.0;
EXPECT_EQUAL(expect, two.get());
- if (i == 1 || i == 7 || i == 18) {
+ if (i == 3 || i == 8 || i == 18) {
EXPECT_TRUE(two.shouldWarn());
} else {
EXPECT_FALSE(two.shouldWarn());
diff --git a/slobrok/src/vespa/slobrok/backoff.cpp b/slobrok/src/vespa/slobrok/backoff.cpp
index 3c433d85862..5ad7d167fca 100644
--- a/slobrok/src/vespa/slobrok/backoff.cpp
+++ b/slobrok/src/vespa/slobrok/backoff.cpp
@@ -1,12 +1,13 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "backoff.h"
+#include <vespa/vespalib/util/signalhandler.h>
namespace slobrok::api {
namespace {
constexpr size_t num_warn_intervals = 5;
-const double warn_intervals[num_warn_intervals] = { 0.0, 10.0, 60.0, 600.0, 3600.0 };
+const double warn_intervals[num_warn_intervals] = { 1.0, 10.0, 60.0, 600.0, 3600.0 };
}
BackOff::BackOff() { reset(); }
@@ -26,6 +27,9 @@ double BackOff::get() {
}
bool BackOff::shouldWarn() {
+ if (vespalib::SignalHandler::TERM.check()) {
+ return false;
+ }
if (_since_last_warn >= warn_intervals[_nextwarn_idx]) {
if (_nextwarn_idx + 1 < num_warn_intervals) {
++_nextwarn_idx;