Skip to content

Commit

Permalink
fix(loggly): fix the error caused by the missing /bin/hostname
Browse files Browse the repository at this point in the history
1. Refactor the PDK's get_hostname to use only the gethostname system call to retrieve the hostname.
2. Loggly uses the PDK's get_hostname to retrieve the hostname.

FTI-6046
  • Loading branch information
Water-Melon committed Oct 25, 2024
1 parent 3a9e2e2 commit fe50864
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 16 deletions.
2 changes: 2 additions & 0 deletions changelog/unreleased/kong/fix-loggly-hostname-notfound.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
message: "**loggly**: fixed the error caused by the missing `/bin/hostname`."
type: bugfix
14 changes: 7 additions & 7 deletions kong/pdk/node.lua
Original file line number Diff line number Diff line change
Expand Up @@ -252,15 +252,15 @@ local function new(self)
local buf = ffi_new("unsigned char[?]", SIZE)
local res = C.gethostname(buf, SIZE)

if res == 0 then
local hostname = ffi_str(buf, SIZE)
return gsub(hostname, "%z+$", "")
if res ~= 0 then
-- Return an empty string "" instead of nil and error message,
-- because strerror is not thread-safe and the behavior of strerror_r
-- is inconsistent across different systems.
return ""
end

local f = io.popen("/bin/hostname")
local hostname = f:read("*a") or ""
f:close()
return gsub(hostname, "\n$", "")
local hostname = ffi_str(buf, SIZE)
return gsub(hostname, "%z+$", "")
end


Expand Down
10 changes: 1 addition & 9 deletions kong/plugins/loggly/handler.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
local cjson = require "cjson"
local sandbox = require "kong.tools.sandbox".sandbox
local kong_meta = require "kong.meta"
local get_host_name = require "kong.pdk.node".new().get_hostname


local kong = kong
Expand All @@ -16,15 +17,6 @@ local insert = table.insert
local sandbox_opts = { env = { kong = kong, ngx = ngx } }


local function get_host_name()
local f = io.popen("/bin/hostname")
local hostname = f:read("*a") or ""
f:close()
hostname = string.gsub(hostname, "\n$", "")
return hostname
end


local HOSTNAME = get_host_name()
local SENDER_NAME = "kong"
local LOG_LEVELS = {
Expand Down

0 comments on commit fe50864

Please sign in to comment.