Kong / kong-python-pdk

Write Kong plugins in Python (Experimental)
Apache License 2.0
40 stars 14 forks source link

Memory leak with kong.response.exit #137

Open vtlkvl opened 6 months ago

vtlkvl commented 6 months ago

Hi Kong team,

We ran into another memory leak in the plugin server and were able to boil it down to the following pattern:

try:
    return kong.response.exit(some_response_code)
finally:
    kong.ctx.shared.set("memory", "leak")

I didn't have much time to debug the plugin server code myself, but the thing is that kong.response.exit does not terminate the execution of Python code and it seems that kong.ctx.shared.set (or virtually any other PDK API call) is going to create a new event queue after it was deleted by kong.response.exit. The new queue is never deleted and it's causing the memory leak.