Skip to content

Commit 475f706

Browse files
authored
Merge pull request ClickHouse#80129 from rschu1ze/bug-77410
Fix spammy log messages from "CgroupsReader"
2 parents ec4cf04 + abef067 commit 475f706

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

src/Common/MemoryWorker.cpp

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ Metrics readAllMetricsFromStatFile(ReadBufferFromFile & buf)
6464
return metrics;
6565
}
6666

67-
uint64_t readMetricsFromStatFile(ReadBufferFromFile & buf, std::initializer_list<std::string_view> keys, bool * warnings_printed)
67+
uint64_t readMetricsFromStatFile(ReadBufferFromFile & buf, std::initializer_list<std::string_view> keys, std::initializer_list<std::string_view> optional_keys, bool * warnings_printed)
6868
{
6969
uint64_t sum = 0;
7070
uint64_t found_mask = 0;
@@ -79,9 +79,10 @@ uint64_t readMetricsFromStatFile(ReadBufferFromFile & buf, std::initializer_list
7979
{
8080
std::string dummy;
8181
readStringUntilNewlineInto(dummy, buf);
82-
buf.ignore();
82+
buf.tryIgnore(1); /// skip EOL (if not EOF)
8383
continue;
8484
}
85+
8586
if (print_warnings && (found_mask & (1l << (it - keys.begin()))))
8687
{
8788
*warnings_printed = true;
@@ -93,16 +94,18 @@ uint64_t readMetricsFromStatFile(ReadBufferFromFile & buf, std::initializer_list
9394
uint64_t value = 0;
9495
readIntText(value, buf);
9596
sum += value;
97+
buf.tryIgnore(1); /// skip EOL (if not EOF)
9698
}
97-
if (found_mask != (1l << keys.size()) - 1)
99+
100+
/// Did we see all keys?
101+
for (const auto * it = keys.begin(); it != keys.end(); ++it)
98102
{
99-
for (const auto * it = keys.begin(); it != keys.end(); ++it)
103+
if (print_warnings
104+
&& !(found_mask & (1l << (it - keys.begin())))
105+
&& std::find(optional_keys.begin(), optional_keys.end(), *it) == optional_keys.end())
100106
{
101-
if (print_warnings && (!(found_mask & (1l << (it - keys.begin())))))
102-
{
103-
*warnings_printed = true;
104-
LOG_ERROR(getLogger("CgroupsReader"), "Cannot find '{}' in '{}'", *it, buf.getFileName());
105-
}
107+
*warnings_printed = true;
108+
LOG_ERROR(getLogger("CgroupsReader"), "Cannot find '{}' in '{}'", *it, buf.getFileName());
106109
}
107110
}
108111
return sum;
@@ -116,7 +119,7 @@ struct CgroupsV1Reader : ICgroupsReader
116119
{
117120
std::lock_guard lock(mutex);
118121
buf.rewind();
119-
return readMetricsFromStatFile(buf, {"rss"}, &warnings_printed);
122+
return readMetricsFromStatFile(buf, {"rss"}, {}, &warnings_printed);
120123
}
121124

122125
std::string dumpAllStats() override
@@ -140,7 +143,7 @@ struct CgroupsV2Reader : ICgroupsReader
140143
{
141144
std::lock_guard lock(mutex);
142145
stat_buf.rewind();
143-
return readMetricsFromStatFile(stat_buf, {"anon", "sock", "kernel"}, &warnings_printed);
146+
return readMetricsFromStatFile(stat_buf, {"anon", "sock", "kernel"}, {"kernel"}, &warnings_printed);
144147
}
145148

146149
std::string dumpAllStats() override

0 commit comments

Comments
 (0)