-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ObservationProxyExecutionListener + virtual threads = 💥 #149
Comments
Thanks for the report. To work around this issue, you can create a custom convention that does not record the thread name, or use an observation filter to remove the thread name tag. Here’s an example of how you can create a custom convention: public interface SimpleQueryObservationConvention extends QueryObservationConvention {
@Override
default KeyValues getLowCardinalityKeyValues(QueryContext context) {
Set<KeyValue> keyValues = new HashSet<>();
keyValues.add(KeyValue.of(R2dbcObservationDocumentation.LowCardinalityKeys.CONNECTION, context.getConnectionName()));
return KeyValues.of(keyValues);
}
} And here’s an example of an observation filter: public class MyObservationFilter implements ObservationFilter {
@Override
public Observation.Context map(Observation.Context context) {
if (context instanceof QueryContext) {
context.remove(R2dbcObservationDocumentation.LowCardinalityKeys.THREAD.asString());
}
return context;
}
} I will likely add this custom convention implementation to the library, allowing users to choose between the default or this custom convention. If you are using Spring Boot, defining a convention or observation filter bean should be automatically picked up, if I remember correctly. |
Thank you, this is what I'm doing now. |
Thread name is a low cardinality key but with virtual threads there are millions of threads which leads to e.g. prometheus going 💥.
The text was updated successfully, but these errors were encountered: