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
Make MetricsITBase tests serial instead of parallelizable (CASSJAVA-19)
This change fixes random failures by removing `MicrometerMetricsIT`,
`MicroProfileMetricsIT` and `DropwizardMetricsIT` from the
`ParallelizableTests` category.
It is not the only solution but seems to be the simplest workaround.
The reasoning is as follows:
`should_evict_down_node_metrics_when_timeout_fires()` has two places where it
manipulates `AbstractMetricUpdater.MIN_EXPIRE_AFTER` in order to set
`DefaultDriverOption.METRICS_NODE_EXPIRE_AFTER` to 1 second during session
initialization. Otherwise `MIN_EXPIRE_AFTER` would not allow for that and
warning log would be printed about using higher value than what user wanted to
set.
It lowers it before session initialization:
https://github.com/apache/cassandra-java-driver/blob/17ebe6092e2877d8c524e07489c4c3d005cfeea5/integration-tests/src/test/java/com/datastax/oss/driver/core/metrics/MetricsITBase.java#L157
And sets it back to 5 mintues at the end of the test:
https://github.com/apache/cassandra-java-driver/blob/17ebe6092e2877d8c524e07489c4c3d005cfeea5/integration-tests/src/test/java/com/datastax/oss/driver/core/metrics/MetricsITBase.java#L186
The code comment in AbstractMetricUpdater also mentions that this variable is
intentionally not made final for testing purposes.
I believe this is what causes the intermittent failures. When those three tests
that extend this class run in parallel it is possible that test B sets the
minimum back to 5 minutes after the test A lowers it to 1 second but before
test A initializes its session.
Warnings with this pattern should be visible when the test fails on the CI:
```
c.d.o.d.i.c.m.AbstractMetricUpdater - [s6] Value too low for advanced.metrics.node.expire-after: PT1S. Forcing to PT5M instead.
```
I can confirm that this is what was happening when I was testing this locally,
but I did not try to search for the logs on cassandra-java-driver's CI.
0 commit comments