From a3ceee46d062caeadab2c0427b816b9bf0540f68 Mon Sep 17 00:00:00 2001 From: Tamas Nemeth Date: Thu, 15 Jun 2023 15:10:21 +0200 Subject: [PATCH] fix(ingest/druid) Handling gracefully if no table returned in a schema (#8203) --- .../src/datahub/ingestion/source/sql/druid.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/metadata-ingestion/src/datahub/ingestion/source/sql/druid.py b/metadata-ingestion/src/datahub/ingestion/source/sql/druid.py index ad52707ec5..1dfa44f549 100644 --- a/metadata-ingestion/src/datahub/ingestion/source/sql/druid.py +++ b/metadata-ingestion/src/datahub/ingestion/source/sql/druid.py @@ -1,6 +1,8 @@ # This import verifies that the dependencies are available. import pydruid # noqa: F401 from pydantic.fields import Field +from pydruid.db.sqlalchemy import DruidDialect +from sqlalchemy.exc import ResourceClosedError from datahub.configuration.common import AllowDenyPattern from datahub.ingestion.api.decorators import ( @@ -14,12 +16,25 @@ from datahub.ingestion.api.decorators import ( from datahub.ingestion.source.sql.sql_common import SQLAlchemySource from datahub.ingestion.source.sql.sql_config import BasicSQLAlchemyConfig +get_table_names_source = DruidDialect.get_table_names + + +def get_table_names(self, connection, schema=None, **kwargs): + try: + return get_table_names_source(self, connection, schema=schema, **kwargs) + # Druid throws ResourceClosedError when there is no table in the schema + except ResourceClosedError: + return [] + + +DruidDialect.get_table_names = get_table_names + class DruidConfig(BasicSQLAlchemyConfig): # defaults scheme = "druid" schema_pattern: AllowDenyPattern = Field( - default=AllowDenyPattern(deny=["^(lookup|sys).*"]), + default=AllowDenyPattern(deny=["^(lookup|sysgit|view).*"]), description="regex patterns for schemas to filter in ingestion.", )