envoyproxy / envoyproxy/envoy

How envoy instantiates HTTP filter? especially for lua filter.

Open
#27,117 16 comments 0 reactions 0 assignees View on GitHub
area/lua enhancement help wanted
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 20h
Merged PRs (30d)
437

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).
3. 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
4. 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 `` lua VM states, where `` is the number of source code blocks configured?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.