From 9d574f02aa20668eddcf00f09518b0e26074fb50 Mon Sep 17 00:00:00 2001 From: Fix Ralph Date: Mon, 1 Jun 2026 08:05:16 +0000 Subject: [PATCH] fix(datasetQuality): downgrade registry 404 log from error to debug When fetchDatasets calls packageClient.getPackage() and the Fleet registry returns a 404 (Unknown resource), the RegistryResponseError was being logged at ERROR level. These 4xx responses are user-facing conditions (package not found in registry), not Kibana server faults. Log RegistryResponseError with status < 500 and FleetUnauthorizedError at debug level instead. --- .../routes/integrations/get_integrations.ts | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/x-pack/platform/plugins/shared/dataset_quality/server/routes/integrations/get_integrations.ts b/x-pack/platform/plugins/shared/dataset_quality/server/routes/integrations/get_integrations.ts index b8bf8719783ce..2494e3f035cf7 100644 --- a/x-pack/platform/plugins/shared/dataset_quality/server/routes/integrations/get_integrations.ts +++ b/x-pack/platform/plugins/shared/dataset_quality/server/routes/integrations/get_integrations.ts @@ -7,7 +7,11 @@ import { Logger } from '@kbn/core/server'; import { PackageClient } from '@kbn/fleet-plugin/server'; -import { PackageNotFoundError } from '@kbn/fleet-plugin/server/errors'; +import { + FleetUnauthorizedError, + PackageNotFoundError, + RegistryResponseError, +} from '@kbn/fleet-plugin/server/errors'; import { PackageInfo, RegistryDataStream } from '@kbn/fleet-plugin/common'; import { IntegrationType } from '../../../common/api_types'; @@ -89,9 +93,21 @@ const fetchDatasets = async (options: { } const { name, version, logger } = options; - logger.error( - `There was an error when trying to fetch information about package ${name} version ${version}: ${error}` - ); + const message = `There was an error when trying to fetch information about package ${name} version ${version}: ${error}`; + + // Registry 4xx / Fleet permission denials are user-facing, not Kibana faults. + // A registry error without a status stays at error so transient failures stay visible. + const shouldLogAsDebug = + (error instanceof RegistryResponseError && + error.status !== undefined && + error.status < 500) || + error instanceof FleetUnauthorizedError; + + if (shouldLogAsDebug) { + logger.debug(message); + } else { + logger.error(message); + } return {}; }