[Tarantool-patches] [PATCH v2 01/10] say: use unsigned format for fiber()->fid
Cyrill Gorcunov
gorcunov at gmail.com
Wed Feb 24 18:36:17 MSK 2021
The fiber's ID (fiber::fid) is defined as unsigned integer
so we should use a proper format specificator when printing
it out. Currently logger prints such fibers as negative
| main/-244760339/cartridge.failover.task I> Instance state changed
why it should be
| main/4271292179/cartridge.failover.task I> Instance state changed
After the fix all fibers are logged with natural numbers (both in
plain logger and json output formats).
Fixes #5846
Signed-off-by: Cyrill Gorcunov <gorcunov at gmail.com>
---
changelogs/unreleased/fix-fiber-fid-log.md | 5 +++++
src/lib/core/say.c | 6 +++---
2 files changed, 8 insertions(+), 3 deletions(-)
create mode 100644 changelogs/unreleased/fix-fiber-fid-log.md
diff --git a/changelogs/unreleased/fix-fiber-fid-log.md b/changelogs/unreleased/fix-fiber-fid-log.md
new file mode 100644
index 000000000..fb75af804
--- /dev/null
+++ b/changelogs/unreleased/fix-fiber-fid-log.md
@@ -0,0 +1,5 @@
+## bugfix/core
+
+* Fix logger output for fiber id: format specificator has been
+ using signed integers while fibers actually are defined as
+ unsigned numbers (gh-5846).
diff --git a/src/lib/core/say.c b/src/lib/core/say.c
index cbd10e107..76c524872 100644
--- a/src/lib/core/say.c
+++ b/src/lib/core/say.c
@@ -792,8 +792,8 @@ say_format_plain_tail(char *buf, int len, int level, const char *filename,
if (cord) {
SNPRINT(total, snprintf, buf, len, " %s", cord->name);
if (fiber() && fiber()->fid != FIBER_ID_SCHED) {
- SNPRINT(total, snprintf, buf, len, "/%i/%s",
- fiber()->fid, fiber_name(fiber()));
+ SNPRINT(total, snprintf, buf, len, "/%u/%s",
+ (unsigned)fiber()->fid, fiber_name(fiber()));
}
}
@@ -918,7 +918,7 @@ say_format_json(struct log *log, char *buf, int len, int level, const char *file
SNPRINT(total, snprintf, buf, len, "\"");
if (fiber() && fiber()->fid != FIBER_ID_SCHED) {
SNPRINT(total, snprintf, buf, len,
- ", \"fiber_id\": %i, ", fiber()->fid);
+ ", \"fiber_id\": %u, ", (unsigned)fiber()->fid);
SNPRINT(total, snprintf, buf, len,
"\"fiber_name\": \"");
SNPRINT(total, json_escape, buf, len,
--
2.29.2
More information about the Tarantool-patches
mailing list