envoyproxy/envoy

How envoy instantiates HTTP filter? especially for lua filter.

Open

#27.117 aberto em 2 de mai. de 2023

Ver no GitHub
 (16 comments) (0 reactions) (0 assignees)C++ (5.373 forks)batch import
area/luaenhancementhelp wanted

Métricas do repositório

Stars
 (27.997 stars)
Métricas de merge de PR
 (Mesclagem média 8d) (378 fundiu PRs em 30d)

Description

  1. Does each request create an instance per HTTP filter configured in the http_filters? That is, for each request, the connection manager will create a C++ object of Envoy::Extensions::HttpFilters::Lua::Filter class (if it's configured in http_filters).
  2. Is the same HTTP filter class allowed to be configured multiple times in http_filters? For example, this yaml specifies two configuration blocks for the same lua filter class. https://github.com/envoyproxy/envoy/blob/6e706d90b3c5a2947017c77d5bd209f16115dc8a/examples/lua/envoy.yaml#L38-L51
  3. Does each source code of lua filter have its own lua vm instance? Each code block has its own thread-local lua state, i.e. each worker thread has one lua state. https://github.com/envoyproxy/envoy/blob/6e706d90b3c5a2947017c77d5bd209f16115dc8a/source/extensions/filters/http/lua/lua_filter.h#L49 One config instance of lua filter has one default code block or code black map. https://github.com/envoyproxy/envoy/blob/6e706d90b3c5a2947017c77d5bd209f16115dc8a/source/extensions/filters/http/lua/lua_filter.cc#L812-L826 So, for each worker thread, it has <N> lua VM states, where <N> is the number of source code blocks configured?

Guia do colaborador