fix(tcp-logger): return error when json encoding fails in batch processor - #14004
Open
bhuvan-somisetty wants to merge 1 commit into
Open
bhuvan-somisetty wants to merge 1 commit into
bhuvan-somisetty wants to merge 1 commit into
Conversation
…ssor When core.json.encode() failed in the batch processor callback, tcp-logger logged the error but continued execution by calling send_tcp_data(conf, nil). This caused OpenResty's sock:send() to crash with a runtime error: "bad argument apache#1 to 'send' (string or table expected, got nil)". Return `false, 'error occurred while encoding the data: ' .. err` early, matching udp-logger and rocketmq-logger, and add a colon separator in the socket initialization error message. Fixes apache#14003 Signed-off-by: bhuvan-somisetty <somisettybhuvan5@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
In
apisix/plugins/tcp-logger.lua, whencore.json.encode()fails to serialize log entries, the callback was logging the error but proceeding to callsend_tcp_data(conf, nil). This resulted insock:send(nil)throwing an unhandled Lua exception (bad argument #1 to 'send' (string or table expected, got nil)).This change:
false, 'error occurred while encoding the data: ' .. errearly when JSON serialization fails, aligning withudp-loggerandrocketmq-logger."failed to init the socket: " .. soc_err).t/plugin/tcp-logger.t.Which issue(s) this PR fixes:
Fixes #14003
Checklist