From 1d0e3778a5a9359f36edec714236bac6b4753b5b Mon Sep 17 00:00:00 2001 From: Aseem Bansal Date: Fri, 3 Oct 2025 20:30:59 +0530 Subject: [PATCH] fix(ingest/grafana): add exception handling (#14921) --- .../src/datahub/ingestion/source/grafana/models.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/metadata-ingestion/src/datahub/ingestion/source/grafana/models.py b/metadata-ingestion/src/datahub/ingestion/source/grafana/models.py index 6eef203dfe..19155c9f8a 100644 --- a/metadata-ingestion/src/datahub/ingestion/source/grafana/models.py +++ b/metadata-ingestion/src/datahub/ingestion/source/grafana/models.py @@ -8,12 +8,14 @@ References: - Dashboard JSON structure: https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/view-dashboard-json-model/ """ +import logging from typing import Any, Dict, List, Optional from pydantic import BaseModel, ConfigDict, Field from datahub.emitter.mcp_builder import ContainerKey +logger = logging.getLogger(__name__) # Grafana-specific type definitions for better type safety GrafanaQueryTarget = Dict[ str, Any @@ -89,7 +91,13 @@ class Dashboard(_GrafanaBaseModel): def parse_obj(cls, data: Dict[str, Any]) -> "Dashboard": """Custom parsing to handle nested panel extraction.""" dashboard_data = data.get("dashboard", {}) - panels = cls.extract_panels(dashboard_data.get("panels", [])) + _panel_data = dashboard_data.get("panels", []) + try: + panels = cls.extract_panels(_panel_data) + except Exception as e: + logger.warning( + f"Error extracting panels from dashboard for dashboard panels {_panel_data} : {e}" + ) # Extract meta.folderId from nested structure meta = dashboard_data.get("meta", {})