Skip to content
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

Disable GraphQL metrics by default #17652

Merged
merged 1 commit into from
Jun 3, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class SmallRyeGraphQLConfig {
String rootPath;

/**
* Enable metrics. By default this will be enabled if the metrics extension is added.
* Enable metrics. By default this is false. If set to true, a metrics extension is required.
*/
@ConfigItem(name = "metrics.enabled")
Optional<Boolean> metricsEnabled;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,8 @@ void activateMetrics(Capabilities capabilities,
metricsCapability.isPresent(),
"quarkus-smallrye-metrics",
"metrics",
"quarkus.smallrye-graphql.metrics.enabled");
"quarkus.smallrye-graphql.metrics.enabled",
false);
if (activate) {
if (metricsCapability.isPresent() && metricsCapability.get().metricsSupported(MetricsFactory.MP_METRICS)) {
unremovableBeans.produce(UnremovableBeanBuildItem.beanClassNames("io.smallrye.metrics.MetricRegistries"));
Expand All @@ -424,7 +425,8 @@ void activateTracing(Capabilities capabilities,
graphQLConfig.tracingEnabled,
"quarkus-smallrye-opentracing",
Capability.OPENTRACING,
"quarkus.smallrye-graphql.tracing.enabled");
"quarkus.smallrye-graphql.tracing.enabled",
true);
if (activate) {
systemProperties.produce(new SystemPropertyBuildItem(ConfigKey.ENABLE_TRACING, TRUE));
} else {
Expand All @@ -441,7 +443,8 @@ void activateValidation(Capabilities capabilities,
graphQLConfig.validationEnabled,
"quarkus-hibernate-validator",
Capability.HIBERNATE_VALIDATOR,
"quarkus.smallrye-graphql.validation.enabled");
"quarkus.smallrye-graphql.validation.enabled",
true);
if (activate) {
systemProperties.produce(new SystemPropertyBuildItem(ConfigKey.ENABLE_VALIDATION, TRUE));
} else {
Expand All @@ -462,18 +465,20 @@ private boolean shouldActivateService(Capabilities capabilities,
Optional<Boolean> serviceEnabled,
String linkedExtensionName,
String linkedCapability,
String configKey) {
String configKey,
boolean activateByDefaultIfCapabilityIsPresent) {

return shouldActivateService(capabilities, serviceEnabled, capabilities.isPresent(linkedCapability),
linkedExtensionName, linkedCapability, configKey);
linkedExtensionName, linkedCapability, configKey, activateByDefaultIfCapabilityIsPresent);
}

private boolean shouldActivateService(Capabilities capabilities,
Optional<Boolean> serviceEnabled,
boolean linkedCapabilityIsPresent,
String linkedExtensionName,
String linkedCapabilityName,
String configKey) {
String configKey,
boolean activateByDefaultIfCapabilityIsPresent) {

if (serviceEnabled.isPresent()) {
// The user explicitly asked from something
Expand All @@ -485,7 +490,7 @@ private boolean shouldActivateService(Capabilities capabilities,
return (isEnabled && linkedCapabilityIsPresent);
} else {
// Auto dis/enable
return linkedCapabilityIsPresent;
return linkedCapabilityIsPresent && activateByDefaultIfCapabilityIsPresent;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,14 @@
import org.eclipse.microprofile.metrics.annotation.RegistryType;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.test.QuarkusUnitTest;

/**
* Verify that quarkus.smallrye-graphql.metrics.enabled=false turn off GraphQL metrics even
* Verify that GraphQL metrics are disabled by default even
* if the SmallRye Metrics extension is present.
*/
public class MetricsDisabledTest {
Expand All @@ -27,7 +26,6 @@ public class MetricsDisabledTest {
static QuarkusUnitTest test = new QuarkusUnitTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClasses(TestResource.class, TestPojo.class, TestRandom.class, TestGenericsPojo.class)
.addAsResource(new StringAsset("quarkus.smallrye-graphql.metrics.enabled=false"), "application.properties")
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"));

@Inject
Expand Down