When using the capture variable in a liquid expression for the Header modification policy an HTTP 500 error code is returned to the client. The following was captured in the relevant error log:
2019/02/12 16:04:59 [debug] 26#26: *207 [lua] policy_chain.lua:162: rewrite(): policy chain execute phase: rewrite, policy: Find Service Policy, i: 2 2019/02/12 16:04:59 [debug] 26#26: *207 [lua] policy_chain.lua:162: rewrite(): policy chain execute phase: rewrite, policy: Local Policy Chain, i: 3 2019/02/12 16:04:59 [debug] 26#26: *207 [lua] cache_handler.lua:23: new(): backend cache handler: strict 2019/02/12 16:04:59 [debug] 26#26: *207 [lua] policy_chain.lua:162: rewrite(): policy chain execute phase: rewrite, policy: APIcast, i: 1 2019/02/12 16:04:59 [debug] 26#26: *207 [lua] service.lua:227: get_usage(): [mapping] service 2555417729090 has 3 rules 2019/02/12 16:04:59 [debug] 26#26: *207 [lua] policy_chain.lua:162: rewrite(): policy chain execute phase: rewrite, policy: Headers policy, i: 2 2019/02/12 16:04:59 [error] 26#26: *207 lua entry thread aborted: runtime error: /opt/app-root/src/src/apicast/linked_list.lua:19: readonly list stack traceback: coroutine 0: [C]: in function 'error' /opt/app-root/src/src/apicast/linked_list.lua:19: in function '__newindex' /usr/local/share/lua/5.1/liquid.lua:2512: in function 'define_var' /usr/local/share/lua/5.1/liquid.lua:2459: in function 'visit' /usr/local/share/lua/5.1/liquid.lua:1975: in function 'render' /opt/app-root/src/src/apicast/policy/headers/headers.lua:91: in function 'run_commands' /opt/app-root/src/src/apicast/policy/headers/headers.lua:151: in function </opt/app-root/src/src/apicast/policy/headers/headers.lua:147> /opt/app-root/src/src/apicast/policy_chain.lua:163: in function 'rewrite' ...-root/src/src/apicast/policy/local_chain/local_chain.lua:56: in function <...-root/src/src/apicast/policy/local_chain/local_chain.lua:51> /opt/app-root/src/src/apicast/policy_chain.lua:163: in function 'rewrite' rewrite_by_lua(lua_tuzuPb:466):3: in function <rewrite_by_lua(lua_tuzuPb:466):1>, client: 172.17.0.1, server: _, request: "GET /test/foo?user_key=aaf4768100d2326ccb418738ac1fc1ff HTTP/1.1", host: "localhost:8080"
The liquid expression in its simplest form that can reproduce the error would be:
{% capture mapping_rule %}HelloWorld
{% endcapture %}mapping_rule
This should in fact output the string "HelloWorld"