From b5d86bc7f15667d1a04a386e95ba61e1f0590ef6 Mon Sep 17 00:00:00 2001 From: Kris20030907 <3185633428@qq.com> Date: Tue, 31 Mar 2026 10:23:36 +0800 Subject: [PATCH] fix: json serialization failed, commitOffset can be negative. --- src/protocol/ProcessQueueInfo.h | 8 ++++---- test/src/protocol/ProcessQueueInfoTest.cpp | 13 ++++++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/protocol/ProcessQueueInfo.h b/src/protocol/ProcessQueueInfo.h index 85686f6ff..1c9a0db6b 100644 --- a/src/protocol/ProcessQueueInfo.h +++ b/src/protocol/ProcessQueueInfo.h @@ -42,9 +42,9 @@ class ProcessQueueInfo { virtual ~ProcessQueueInfo() {} public: - const uint64 getCommitOffset() const { return commitOffset; } + const int64 getCommitOffset() const { return commitOffset; } - void setCommitOffset(uint64 input_commitOffset) { commitOffset = input_commitOffset; } + void setCommitOffset(int64 input_commitOffset) { commitOffset = input_commitOffset; } void setLocked(bool in_locked) { locked = in_locked; } @@ -56,7 +56,7 @@ class ProcessQueueInfo { Json::Value toJson() const { Json::Value outJson; - outJson["commitOffset"] = (UtilAll::to_string(commitOffset)).c_str(); + outJson["commitOffset"] = (Json::Int64)commitOffset; outJson["cachedMsgMinOffset"] = (UtilAll::to_string(cachedMsgMinOffset)).c_str(); outJson["cachedMsgMaxOffset"] = (UtilAll::to_string(cachedMsgMaxOffset)).c_str(); outJson["cachedMsgCount"] = (int)(cachedMsgCount); @@ -74,7 +74,7 @@ class ProcessQueueInfo { } public: - uint64 commitOffset; + int64 commitOffset; uint64 cachedMsgMinOffset; uint64 cachedMsgMaxOffset; int cachedMsgCount; diff --git a/test/src/protocol/ProcessQueueInfoTest.cpp b/test/src/protocol/ProcessQueueInfoTest.cpp index bb5e7141e..1bd61bd55 100644 --- a/test/src/protocol/ProcessQueueInfoTest.cpp +++ b/test/src/protocol/ProcessQueueInfoTest.cpp @@ -54,7 +54,8 @@ TEST(processQueueInfo, init) { Json::Value outJson = processQueueInfo.toJson(); - EXPECT_EQ(outJson["commitOffset"], "456"); + EXPECT_TRUE(outJson["commitOffset"].isInt64()); + EXPECT_EQ(outJson["commitOffset"].asInt64(), 456); EXPECT_EQ(outJson["cachedMsgMinOffset"], "0"); EXPECT_EQ(outJson["cachedMsgMaxOffset"], "0"); EXPECT_EQ(outJson["cachedMsgCount"].asInt(), 0); @@ -67,6 +68,16 @@ TEST(processQueueInfo, init) { EXPECT_EQ(outJson["droped"].asBool(), true); EXPECT_EQ(outJson["lastPullTimestamp"], "0"); EXPECT_EQ(outJson["lastConsumeTimestamp"], "0"); + + processQueueInfo.setCommitOffset(-1); + Json::Value sentinelJson = processQueueInfo.toJson(); + EXPECT_TRUE(sentinelJson["commitOffset"].isInt64()); + EXPECT_EQ(sentinelJson["commitOffset"].asInt64(), -1); + + processQueueInfo.setCommitOffset(-2); + Json::Value exceptionalJson = processQueueInfo.toJson(); + EXPECT_TRUE(exceptionalJson["commitOffset"].isInt64()); + EXPECT_EQ(exceptionalJson["commitOffset"].asInt64(), -2); } int main(int argc, char* argv[]) {