Hi,
We have a lua block that connects to memcache when a request arrives
"""
function get_from_gds(host, port, key) local sock = core.tcp()
sock:settimeout(20) local result = DOMAIN_NOT_FOUND local
status, error = sock:connect(host, port) if not status then
core.Alert(GDS_LOG_PREFIX .. "GDS_ERROR: Error in connecting:" .. key
.. ":" .. port .. ":" .. error) return GDS_ERROR, "Error: " ..
error end sock:send(key .. "\r\n") while true do local
s, status, partial = sock:receive("*l") if not s then
core.Alert(GDS_LOG_PREFIX .. "GDS_ERROR: Error reading:" .. key ..
":" .. port .. ":" .. status) return GDS_ERROR, status
end if s == "END" then break end result = s end
sock:close() return resultend
-- Comment: get_proxy calls get_from_gds
core.register_action("get_proxy", { "http-req" }, get_proxy)
"""
The value is cached in a haproxy map so we don't make a memcache
connection for every request.
At peak traffic if we reload haproxy, that invalidates the map and the
surge causes
quite a few memcache connections to fail. Error returned is "Can't connect"
We see the following messages in dmesg
[ +0.006924] haproxy[14258]: segfault at 0 ip 00007f117fba94c4 sp
00007f1179eefe08 error 4 in liblua-5.3.so[7f117fba1000+37000]
HA-Proxy version 2.0.18-be8b761 2020/09/30 - https://haproxy.org/
This is a recent issue, we never saw this in 1.8.
Any idea? We only see this at peak load. At regular load we don't see
this issue
even when we reload haproxy.
Thanks
Sachin