Skip to content
This repository was archived by the owner on Aug 30, 2022. It is now read-only.

Commit acfb850

Browse files
authored
Remote reporter flush fix (#59)
* Fix span dropping in RemoteReporter Signed-off-by: Isaac Hier <[email protected]> * Flush after join completes Signed-off-by: Isaac Hier <[email protected]>
1 parent c36adcf commit acfb850

File tree

9 files changed

+36
-37
lines changed

9 files changed

+36
-37
lines changed

.clang-format

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ BreakBeforeBinaryOperators: None
3333
BreakBeforeBraces: Custom
3434
BreakBeforeTernaryOperators: true
3535
BreakConstructorInitializersBeforeComma: true
36-
BreakStringLiterals: true
3736
ColumnLimit: 80
3837
CommentPragmas: '^ IWYU pragma:'
3938
ConstructorInitializerAllOnOneLineOrOnePerLine: false
@@ -50,7 +49,6 @@ IncludeCategories:
5049
Priority: 3
5150
- Regex: '.*'
5251
Priority: 1
53-
IncludeIsMainRegex: '$'
5452
IndentCaseLabels: false
5553
IndentWidth: 4
5654
IndentWrappedFunctionNames: false
@@ -72,7 +70,6 @@ PointerAlignment: Left
7270
ReflowComments: true
7371
SortIncludes: true
7472
SpaceAfterCStyleCast: false
75-
SpaceAfterTemplateKeyword: true
7673
SpaceBeforeAssignmentOperators: true
7774
SpaceBeforeParens: ControlStatements
7875
SpaceInEmptyParentheses: false

src/jaegertracing/reporters/CompositeReporter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@ class CompositeReporter : public Reporter {
4141

4242
~CompositeReporter() { close(); }
4343

44-
void report(const Span& span) override
44+
void report(const Span& span) noexcept override
4545
{
4646
std::for_each(
4747
std::begin(_reporters),
4848
std::end(_reporters),
4949
[&span](const ReporterPtr& reporter) { reporter->report(span); });
5050
}
5151

52-
void close() override
52+
void close() noexcept override
5353
{
5454
std::for_each(std::begin(_reporters),
5555
std::end(_reporters),

src/jaegertracing/reporters/InMemoryReporter.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,27 +36,27 @@ class InMemoryReporter : public Reporter {
3636
_spans.reserve(kInitialCapacity);
3737
}
3838

39-
void report(const Span& span) override
39+
void report(const Span& span) noexcept override
4040
{
4141
std::lock_guard<std::mutex> lock(_mutex);
4242
_spans.push_back(span);
4343
}
4444

45-
void close() override {}
45+
void close() noexcept override {}
4646

47-
int spansSubmitted() const
47+
int spansSubmitted() const noexcept
4848
{
4949
std::lock_guard<std::mutex> lock(_mutex);
5050
return _spans.size();
5151
}
5252

53-
std::vector<Span> spans() const
53+
std::vector<Span> spans() const noexcept
5454
{
5555
std::lock_guard<std::mutex> lock(_mutex);
5656
return _spans;
5757
}
5858

59-
void reset()
59+
void reset() noexcept
6060
{
6161
std::lock_guard<std::mutex> lock(_mutex);
6262
_spans.clear();

src/jaegertracing/reporters/LoggingReporter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
namespace jaegertracing {
2323
namespace reporters {
2424

25-
void LoggingReporter::report(const Span& span)
25+
void LoggingReporter::report(const Span& span) noexcept
2626
{
2727
std::ostringstream oss;
2828
oss << "Reporting span " << span;

src/jaegertracing/reporters/LoggingReporter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ class LoggingReporter : public Reporter {
3030
{
3131
}
3232

33-
void report(const Span& span) override;
33+
void report(const Span& span) noexcept override;
3434

35-
void close() override {}
35+
void close() noexcept override {}
3636

3737
private:
3838
logging::Logger& _logger;

src/jaegertracing/reporters/NullReporter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ namespace reporters {
2828

2929
class NullReporter : public Reporter {
3030
public:
31-
void report(const Span&) override {}
31+
void report(const Span&) noexcept override {}
3232

33-
void close() override {}
33+
void close() noexcept override {}
3434
};
3535

3636
} // namespace reporters

src/jaegertracing/reporters/RemoteReporter.cpp

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ RemoteReporter::RemoteReporter(const Clock::duration& bufferFlushInterval,
4545
_thread = std::thread([this]() { sweepQueue(); });
4646
}
4747

48-
void RemoteReporter::report(const Span& span)
48+
void RemoteReporter::report(const Span& span) noexcept
4949
{
5050
std::unique_lock<std::mutex> lock(_mutex);
5151
const auto pushed = (static_cast<int>(_queue.size()) < _fixedQueueSize);
@@ -60,21 +60,25 @@ void RemoteReporter::report(const Span& span)
6060
}
6161
}
6262

63-
void RemoteReporter::close()
63+
void RemoteReporter::close() noexcept
6464
{
65-
{
66-
std::unique_lock<std::mutex> lock(_mutex);
67-
if (!_running) {
68-
return;
65+
try {
66+
{
67+
std::lock_guard<std::mutex> lock(_mutex);
68+
if (!_running) {
69+
return;
70+
}
71+
_running = false;
6972
}
70-
_running = false;
71-
lock.unlock();
7273
_cv.notify_one();
74+
_thread.join();
75+
flush();
76+
} catch (...) {
77+
utils::ErrorUtil::logError(_logger, "Failed in Reporter::close");
7378
}
74-
_thread.join();
7579
}
7680

77-
void RemoteReporter::sweepQueue()
81+
void RemoteReporter::sweepQueue() noexcept
7882
{
7983
while (true) {
8084
try {
@@ -97,15 +101,13 @@ void RemoteReporter::sweepQueue()
97101
flush();
98102
}
99103
} catch (...) {
100-
auto logger = logging::consoleLogger();
101-
assert(logger);
102-
utils::ErrorUtil::logError(*logger,
104+
utils::ErrorUtil::logError(_logger,
103105
"Failed in Reporter::sweepQueue");
104106
}
105107
}
106108
}
107109

108-
void RemoteReporter::sendSpan(const Span& span)
110+
void RemoteReporter::sendSpan(const Span& span) noexcept
109111
{
110112
try {
111113
const auto flushed = _sender->append(span);
@@ -122,7 +124,7 @@ void RemoteReporter::sendSpan(const Span& span)
122124
}
123125
}
124126

125-
void RemoteReporter::flush()
127+
void RemoteReporter::flush() noexcept
126128
{
127129
try {
128130
const auto flushed = _sender->flush();

src/jaegertracing/reporters/RemoteReporter.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,16 @@ class RemoteReporter : public Reporter {
4444

4545
~RemoteReporter() { close(); }
4646

47-
void report(const Span& span) override;
47+
void report(const Span& span) noexcept override;
4848

49-
void close() override;
49+
void close() noexcept override;
5050

5151
private:
52-
void sweepQueue();
52+
void sweepQueue() noexcept;
5353

54-
void sendSpan(const Span& span);
54+
void sendSpan(const Span& span) noexcept;
5555

56-
void flush();
56+
void flush() noexcept;
5757

5858
bool bufferFlushIntervalExpired() const
5959
{

src/jaegertracing/reporters/Reporter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ class Reporter {
2727
public:
2828
virtual ~Reporter() = default;
2929

30-
virtual void report(const Span& span) = 0;
30+
virtual void report(const Span& span) noexcept = 0;
3131

32-
virtual void close() = 0;
32+
virtual void close() noexcept = 0;
3333
};
3434

3535
} // namespace reporters

0 commit comments

Comments
 (0)