[Tarantool-patches] [PATCH] sql: account prepared stmt cache size right after entry removal

Nikita Pettik korablev at tarantool.org
Wed Jan 15 19:36:34 MSK 2020


On 13 Jan 12:50, Nikita Pettik wrote:
> SQL prepared statement cache is implemented as two data structures: hash
> table <stmt_id : pointer-to-metadata> and GC queue. The latter is
> required to avoid workload spikes on session's disconnect: instead of
> cleaning up memory for all session-local prepared statements, prepared
> statements to be deleted are moved to GC queue. When memory limit for PS
> is reached, all elements from queue are removed at once. If statement
> traps to the GC queue it is assumed to be already dead. Accidentally,
> change of occupied by PS cache takes place only after GC queue clean-up,
> so correct size of PS cache is displayed only after GC cycles. Let's fix
> this and account PS cache size change right after entry removal (i.e. at
> the moment PS gets into GC queue).
> ---
> Branch: https://github.com/tarantool/tarantool/tree/np/fix-prepared-stmt-cache-size-calc
> 
>  src/box/sql_stmt_cache.c   | 2 +-
>  test/sql/prepared.result   | 9 +++++++++
>  test/sql/prepared.test.lua | 3 +++
>  3 files changed, 13 insertions(+), 1 deletion(-)

Pushed to master and 2.3 as obvious. Also it resolves accidental test
failure (sql/prepared.test.lua) on Travis/GitLab.



More information about the Tarantool-patches mailing list