You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Title: Large request payload makes geoip filter wrongly trim decodeData
Description:
While request payload is large, the upstream service could received truncated bytes, i.e., the remaining filters behind geoip could miss somedecodeData events.
Here's what we think:
While the filter does async lookup, it asks filter manager to stop iteration but not stop the world.
we should use StopAllIterationAndWatermark in geoip filter to stop the world so we could set headers ready
(ii) although this might be only side effect of filter event mishandling but continueDecoding could make the data truncated and IIRC this is not the first time we hit the similar issue. Might need filter management expert to weigh in.
The text was updated successfully, but these errors were encountered:
Title: Large request payload makes geoip filter wrongly trim decodeData
Description:
While request payload is large, the upstream service could received truncated bytes, i.e., the remaining filters behind geoip could miss some
decodeData
events.Here's what we think:
While the filter does async lookup, it asks filter manager to stop iteration but not stop the world.
envoy/source/extensions/filters/http/geoip/geoip_filter.cc
Line 67 in dbbe285
However,
decodeData
s probably come after and we returnContinue
envoy/source/extensions/filters/http/geoip/geoip_filter.cc
Line 71 in dbbe285
by the comments which unlock
decodeHeaders
to the remaining filtersenvoy/envoy/http/filter.h
Line 127 in 667e963
Therefore, we have two side effect
(a) the header is not set before
decodeData
sent outenvoy/source/extensions/filters/http/geoip/geoip_filter.cc
Line 88 in dbbe285
(b) while we code
continueDecoding
again, filter manager fails to handle the events correctly, which triggers the bug we observed.envoy/source/extensions/filters/http/geoip/geoip_filter.cc
Line 93 in dbbe285
Un-equipping geoip filter resolved the issue.
--
So we have two bugs I think
(i)
envoy/source/extensions/filters/http/geoip/geoip_filter.cc
Line 67 in dbbe285
we should use
StopAllIterationAndWatermark
in geoip filter to stop the world so we could set headers ready(ii) although this might be only side effect of filter event mishandling but
continueDecoding
could make the data truncated and IIRC this is not the first time we hit the similar issue. Might need filter management expert to weigh in.The text was updated successfully, but these errors were encountered: