In my scenario I'm setting up dynamic metadata from ext_authz filter and trying to read from my WASM filter as follows. But the method which is defined to get metadata returns false.
google::protobuf::Struct ext_metadata;
if (!getMessageValue<google::protobuf::Struct>(
{"metadata", "filter_metadata", "envoy.filters.http.ext_authz"}, &ext_metadata)) {
LOG_ERROR(std::string("filter_metadata Error ") + std::to_string(id()));
}
That logs the error because the method getMessageValue returns false. I tried to debug the issue and the following section of logs shows the issue.
envoyproxy-websocket_1 | [2021-03-29 10:56:54.300][29][trace][wasm] [source/extensions/common/wasm/wasm_vm.cc:40] [vm->host] env.proxy_get_property(5458080, 54, 5345664, 5345616)
envoyproxy-websocket_1 | [2021-03-29 10:56:54.300][29][trace][wasm] [source/extensions/common/wasm/wasm_vm.cc:40] [host->vm] malloc(177)
envoyproxy-websocket_1 | [2021-03-29 10:56:54.300][29][trace][wasm] [source/extensions/common/wasm/wasm_vm.cc:40] [host<-vm] malloc return: 5346384
envoyproxy-websocket_1 | [2021-03-29 10:56:54.300][29][trace][wasm] [source/extensions/common/wasm/wasm_vm.cc:40] [vm<-host] env.proxy_get_property return: 0
envoyproxy-websocket_1 | [2021-03-29 10:56:54.300][29][trace][wasm] [source/extensions/common/wasm/wasm_vm.cc:40] [vm->host] env.proxy_log(2, 5449512, 92)
I just tried the following to check whether a value exists in the ext_authz metadata and it returns true. Also the trace shows the metadata.
auto buf1 = getProperty<std::string>({"metadata", "filter_metadata", "envoy.filters.http.ext_authz"});
if (buf1.has_value()) {
LOG_INFO("Metadata exist");
}
In my scenario I'm setting up dynamic metadata from ext_authz filter and trying to read from my WASM filter as follows. But the method which is defined to get metadata returns false.
That logs the error because the method
getMessageValuereturns false. I tried to debug the issue and the following section of logs shows the issue.I just tried the following to check whether a value exists in the ext_authz metadata and it returns true. Also the trace shows the metadata.