Skip to content

Commit 5401d78

Browse files
committed
fix build: rm fmt::localtime usage in grpc
Use `::localtime_r` instead for now. commit_hash:1f106dbc6d9256c8215b463733c03a4f118285ae
1 parent 514da4e commit 5401d78

File tree

8 files changed

+40
-78
lines changed

8 files changed

+40
-78
lines changed

.mapping.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5058,6 +5058,7 @@
50585058
"universal/include/userver/logging/impl/logger_base.hpp":"taxi/uservices/userver/universal/include/userver/logging/impl/logger_base.hpp",
50595059
"universal/include/userver/logging/impl/mem_logger.hpp":"taxi/uservices/userver/universal/include/userver/logging/impl/mem_logger.hpp",
50605060
"universal/include/userver/logging/impl/tag_writer.hpp":"taxi/uservices/userver/universal/include/userver/logging/impl/tag_writer.hpp",
5061+
"universal/include/userver/logging/impl/timestamp.hpp":"taxi/uservices/userver/universal/include/userver/logging/impl/timestamp.hpp",
50615062
"universal/include/userver/logging/json_string.hpp":"taxi/uservices/userver/universal/include/userver/logging/json_string.hpp",
50625063
"universal/include/userver/logging/level.hpp":"taxi/uservices/userver/universal/include/userver/logging/level.hpp",
50635064
"universal/include/userver/logging/log.hpp":"taxi/uservices/userver/universal/include/userver/logging/log.hpp",
@@ -5347,6 +5348,7 @@
53475348
"universal/src/logging/impl/logger_base.cpp":"taxi/uservices/userver/universal/src/logging/impl/logger_base.cpp",
53485349
"universal/src/logging/impl/mem_logger.cpp":"taxi/uservices/userver/universal/src/logging/impl/mem_logger.cpp",
53495350
"universal/src/logging/impl/tag_writer.cpp":"taxi/uservices/userver/universal/src/logging/impl/tag_writer.cpp",
5351+
"universal/src/logging/impl/timestamp.cpp":"taxi/uservices/userver/universal/src/logging/impl/timestamp.cpp",
53505352
"universal/src/logging/json_string.cpp":"taxi/uservices/userver/universal/src/logging/json_string.cpp",
53515353
"universal/src/logging/level.cpp":"taxi/uservices/userver/universal/src/logging/level.cpp",
53525354
"universal/src/logging/log.cpp":"taxi/uservices/userver/universal/src/logging/log.cpp",
@@ -5362,8 +5364,6 @@
53625364
"universal/src/logging/rate_limit.cpp":"taxi/uservices/userver/universal/src/logging/rate_limit.cpp",
53635365
"universal/src/logging/rate_limit.hpp":"taxi/uservices/userver/universal/src/logging/rate_limit.hpp",
53645366
"universal/src/logging/stacktrace_cache.cpp":"taxi/uservices/userver/universal/src/logging/stacktrace_cache.cpp",
5365-
"universal/src/logging/timestamp.cpp":"taxi/uservices/userver/universal/src/logging/timestamp.cpp",
5366-
"universal/src/logging/timestamp.hpp":"taxi/uservices/userver/universal/src/logging/timestamp.hpp",
53675367
"universal/src/tracing/opentelemetry.cpp":"taxi/uservices/userver/universal/src/tracing/opentelemetry.cpp",
53685368
"universal/src/tracing/opentelemetry_benchmark.cpp":"taxi/uservices/userver/universal/src/tracing/opentelemetry_benchmark.cpp",
53695369
"universal/src/tracing/opentelemetry_test.cpp":"taxi/uservices/userver/universal/src/tracing/opentelemetry_test.cpp",

grpc/src/ugrpc/server/impl/format_log_message.cpp

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@
44
#include <fmt/compile.h>
55
#include <fmt/format.h>
66

7-
#include <userver/compiler/thread_local.hpp>
87
#include <userver/logging/impl/logger_base.hpp>
8+
#include <userver/logging/impl/timestamp.hpp>
99
#include <userver/ugrpc/impl/to_string.hpp>
1010
#include <userver/utils/datetime.hpp>
1111
#include <userver/utils/encoding/tskv.hpp>
12-
#include <userver/utils/impl/source_location.hpp>
1312
#include <userver/utils/text_light.hpp>
1413

1514
USERVER_NAMESPACE_BEGIN
@@ -41,39 +40,6 @@ std::string ParseIp(std::string_view sv) {
4140
return EscapeForAccessTskvLog(sv);
4241
}
4342

44-
using SecondsTimePoint = std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds>;
45-
46-
constexpr std::string_view kTimeTemplate = "0000-00-00T00:00:00";
47-
48-
struct CachedTime final {
49-
SecondsTimePoint cached_time{};
50-
char cached_time_string[kTimeTemplate.size()]{};
51-
};
52-
53-
compiler::ThreadLocal local_time_cache = [] { return CachedTime{}; };
54-
55-
std::string_view GetCurrentTimeString(std::chrono::system_clock::time_point start_time) noexcept {
56-
auto cache = local_time_cache.Use();
57-
const auto rounded_now = std::chrono::time_point_cast<std::chrono::seconds>(start_time);
58-
if (rounded_now != cache->cached_time) {
59-
fmt::format_to(
60-
cache->cached_time_string,
61-
FMT_COMPILE("{:%FT%T}"),
62-
fmt::localtime(std::chrono::system_clock::to_time_t(start_time))
63-
);
64-
cache->cached_time = rounded_now;
65-
}
66-
67-
#ifdef __clang__
68-
#pragma clang diagnostic push
69-
#pragma clang diagnostic ignored "-Wreturn-stack-address"
70-
#endif
71-
return std::string_view{cache->cached_time_string, kTimeTemplate.size()};
72-
#ifdef __clang__
73-
#pragma clang diagnostic pop
74-
#endif
75-
}
76-
7743
} // namespace
7844

7945
logging::impl::LogExtraTskvFormatter FormatLogMessage(
@@ -113,7 +79,7 @@ logging::impl::LogExtraTskvFormatter FormatLogMessage(
11379
"\tupstream_response_time={}.{:0>3}"
11480
"\tgrpc_status={}"
11581
"\tgrpc_status_code={}",
116-
GetCurrentTimeString(start_time),
82+
logging::impl::GetCurrentLocalTimeString(start_time).ToStringView(),
11783
kTimezone,
11884
EscapeForAccessTskvLog(user_agent),
11985
ip,
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#pragma once
2+
3+
#include <chrono>
4+
#include <string_view>
5+
6+
USERVER_NAMESPACE_BEGIN
7+
8+
namespace logging::impl {
9+
10+
inline constexpr std::string_view kTimeTemplate = "0000-00-00T00:00:00";
11+
12+
struct TimeString final {
13+
char data[kTimeTemplate.size()]{};
14+
15+
std::string_view ToStringView() const noexcept { return {data, std::size(data)}; }
16+
};
17+
18+
TimeString GetCurrentGMTimeString(std::chrono::system_clock::time_point now) noexcept;
19+
TimeString GetCurrentLocalTimeString(std::chrono::system_clock::time_point now) noexcept;
20+
std::chrono::microseconds::rep FractionalMicroseconds(std::chrono::system_clock::time_point time) noexcept;
21+
22+
} // namespace logging::impl
23+
24+
USERVER_NAMESPACE_END

universal/src/logging/impl/formatters/json.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include <fmt/compile.h>
66
#include <fmt/format.h>
77

8-
#include <logging/timestamp.hpp>
8+
#include <userver/logging/impl/timestamp.hpp>
99

1010
USERVER_NAMESPACE_BEGIN
1111

universal/src/logging/impl/formatters/struct.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include <fmt/compile.h>
66
#include <fmt/format.h>
77

8-
#include <logging/timestamp.hpp>
8+
#include <userver/logging/impl/timestamp.hpp>
99

1010
USERVER_NAMESPACE_BEGIN
1111

universal/src/logging/impl/formatters/tskv.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
#include <fmt/compile.h>
55
#include <fmt/format.h>
66

7-
#include <logging/timestamp.hpp>
8-
97
#include <userver/compiler/thread_local.hpp>
8+
#include <userver/logging/impl/timestamp.hpp>
109
#include <userver/utils/assert.hpp>
1110
#include <userver/utils/encoding/tskv.hpp>
1211

@@ -49,7 +48,7 @@ Tskv::Tskv(Level level, Format format, const utils::impl::SourceLocation& locati
4948
}
5049
case Format::kLtsv: {
5150
constexpr std::string_view kTemplate = "timestamp:0000-00-00T00:00:00.000000\tlevel:\tmodule: ( : )";
52-
const auto now = TimePoint::clock::now();
51+
const auto now = std::chrono::system_clock::now();
5352
const auto level_string = logging::ToUpperCaseString(level);
5453
item_.log_line.resize_and_overwrite(
5554
kTemplate.size() + level_string.size() + location.GetFunctionName().size() +
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
1-
#include <logging/timestamp.hpp>
1+
#include <userver/logging/impl/timestamp.hpp>
22

33
#include <fmt/chrono.h>
44
#include <fmt/compile.h>
55
#include <fmt/format.h>
66

7+
#include <userver/compiler/thread_local.hpp>
78
#include <userver/utils/assert.hpp>
89
#include <userver/utils/strerror.hpp>
910

1011
USERVER_NAMESPACE_BEGIN
1112

12-
namespace logging {
13+
namespace logging::impl {
1314

1415
namespace {
1516

17+
using TimePoint = std::chrono::system_clock::time_point;
1618
using SecondsTimePoint = std::chrono::time_point<TimePoint::clock, std::chrono::seconds>;
1719

1820
struct CachedTime final {
@@ -42,20 +44,20 @@ compiler::ThreadLocal thread_local_cached_gmt_time = [] { return CachedTime{}; }
4244
compiler::ThreadLocal thread_local_cached_local_time = [] { return CachedTime{}; };
4345
} // namespace
4446

45-
unsigned long FractionalMicroseconds(TimePoint time) noexcept {
47+
std::chrono::microseconds::rep FractionalMicroseconds(std::chrono::system_clock::time_point time) noexcept {
4648
return std::chrono::time_point_cast<std::chrono::microseconds>(time).time_since_epoch().count() % 1'000'000;
4749
}
4850

49-
TimeString GetCurrentGMTimeString(TimePoint now) noexcept {
51+
TimeString GetCurrentGMTimeString(std::chrono::system_clock::time_point now) noexcept {
5052
auto cached_time = thread_local_cached_gmt_time.Use();
5153
return GetCurrentTimeString<gmtime_r>(now, cached_time);
5254
}
5355

54-
TimeString GetCurrentLocalTimeString(TimePoint now) noexcept {
56+
TimeString GetCurrentLocalTimeString(std::chrono::system_clock::time_point now) noexcept {
5557
auto cached_time = thread_local_cached_local_time.Use();
5658
return GetCurrentTimeString<localtime_r>(now, cached_time);
5759
}
5860

59-
} // namespace logging
61+
} // namespace logging::impl
6062

6163
USERVER_NAMESPACE_END

universal/src/logging/timestamp.hpp

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)