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
In #73 we introduced a new generic_error bad row, generated whenever a querystring could not be parsed. In #113 we fixed a bug, where the bad row that was being generated was not a valid BadRow.
This was all working as expected in versions until 2.3.1, inclusive. As of 2.4.0, the bad row is no longer generated when deploying a collector (I've tested with kinesis, pubsub and stdout) with the *.minimal.hocon configuration.
The bad row is supposed to be created here, after catching an exception when trying to parse it here.
In deployments of 2.4.0 and later, the exception is replaced with a warning; so it's not caught, and no bad row is created. The offending event is silently dropped, reverting to the behaviour from before #73.
We have a test for generating the bad row, which still passes. This suggests that the bug is not caused by changes in the collector service logic. Rather, it looks like we used to have some silent defaults in the config that changed with 2.4.0, resulting in changed behaviour. The two most suspicious changes are #162 and #163.
In #162, we upgraded akka-http from 10.1.12. In akka-http10.2.0, there was a change that might have affected this behaviour: percent-encoding URI queries.
It's also possible that the JRE defaults, to which we switched in #163, have changed the behaviour when failing to parse a querystring to warn instead of throw.
Impact
Currently, when a collector is deployed with default configuration, no bad row is created and 400 is returned to the tracker. For trackers with retry logic, it means the event might get stuck in a retry loop. However, the most common source of illegal querystrings is events tracked via a webhook, where there is no retry logic, so that is not a top concern. The biggest issue is that users won't have a chance to diagnose faulty webhook tracking implementations.
The text was updated successfully, but these errors were encountered:
In #73 we introduced a new
generic_error
bad row, generated whenever a querystring could not be parsed. In #113 we fixed a bug, where the bad row that was being generated was not a validBadRow
.This was all working as expected in versions until 2.3.1, inclusive. As of 2.4.0, the bad row is no longer generated when deploying a collector (I've tested with
kinesis
,pubsub
andstdout
) with the*.minimal.hocon
configuration.The bad row is supposed to be created here, after catching an exception when trying to parse it here.
In deployments of 2.4.0 and later, the exception is replaced with a warning; so it's not caught, and no bad row is created. The offending event is silently dropped, reverting to the behaviour from before #73.
We have a test for generating the bad row, which still passes. This suggests that the bug is not caused by changes in the collector service logic. Rather, it looks like we used to have some silent defaults in the config that changed with 2.4.0, resulting in changed behaviour. The two most suspicious changes are #162 and #163.
In #162, we upgraded
akka-http
from10.1.12
. Inakka-http
10.2.0
, there was a change that might have affected this behaviour: percent-encoding URI queries.It's also possible that the JRE defaults, to which we switched in #163, have changed the behaviour when failing to parse a querystring to warn instead of throw.
Impact
Currently, when a collector is deployed with default configuration, no bad row is created and
400
is returned to the tracker. For trackers with retry logic, it means the event might get stuck in a retry loop. However, the most common source of illegal querystrings is events tracked via a webhook, where there is no retry logic, so that is not a top concern. The biggest issue is that users won't have a chance to diagnose faulty webhook tracking implementations.The text was updated successfully, but these errors were encountered: