diff --git a/backend/connector_processor/connector_processor.py b/backend/connector_processor/connector_processor.py index 10b6374c9e..c0d7d26f50 100644 --- a/backend/connector_processor/connector_processor.py +++ b/backend/connector_processor/connector_processor.py @@ -21,14 +21,29 @@ from unstract.connectors.exceptions import ConnectorError, FSAccessDeniedError from unstract.connectors.filesystems.ucs import UnstractCloudStorage -try: - from unstract.connectors.queues.redis import RedisQueue -except ImportError: - RedisQueue = None - logger = logging.getLogger(__name__) +def import_optional_connector(module_path: str, class_name: str): + """Import connector class with graceful error handling.""" + try: + module = __import__(module_path, fromlist=[class_name]) + connector_class = getattr(module, class_name) + logger.debug(f"Successfully imported {class_name}") + return connector_class + except ImportError as e: + logger.debug(f"Failed to import {class_name}: {e}") + return None + + +# Import optional connectors +RedisQueue = import_optional_connector("unstract.connectors.queues.redis", "RedisQueue") +# TODO(UN-2261): Oracle temporarily excluded due to missing wallet support +OracleDB = import_optional_connector( + "unstract.connectors.databases.oracle_db", "OracleDB" +) + + def fetch_connectors_by_key_value( key: str, value: Any, connector_mode: ConnectorMode | None = None ) -> list[UnstractConnector]: @@ -80,7 +95,7 @@ def get_all_supported_connectors( # TODO: Remove RedisQueue from the list of connectors and use separately instead # HACK: Connectors that are marked active but not supported explicitly unsupported_connectors = [ - connector.get_id() for connector in filter(None, [RedisQueue]) + connector.get_id() for connector in filter(None, [RedisQueue, OracleDB]) ] if type == ConnectorKeys.INPUT: diff --git a/frontend/src/components/connectors/connector-list-modal/ConnectorListModal.jsx b/frontend/src/components/connectors/connector-list-modal/ConnectorListModal.jsx index 57a63449cb..dd163d224b 100644 --- a/frontend/src/components/connectors/connector-list-modal/ConnectorListModal.jsx +++ b/frontend/src/components/connectors/connector-list-modal/ConnectorListModal.jsx @@ -1,8 +1,8 @@ import { SearchOutlined } from "@ant-design/icons"; -import { Input, Row, Col, Tabs, Typography, Spin } from "antd"; +import { Col, Input, Row, Spin, Tabs, Typography } from "antd"; +import debounce from "lodash/debounce"; import PropTypes from "prop-types"; import { useEffect, useState } from "react"; -import debounce from "lodash/debounce"; import { ConnectorCard } from "../connector-card/ConnectorCard"; import "./ConnectorListModal.css"; diff --git a/frontend/src/components/input-output/list-of-sources/ListOfSources.jsx b/frontend/src/components/input-output/list-of-sources/ListOfSources.jsx index 41f75e5c17..3b0f8b495b 100644 --- a/frontend/src/components/input-output/list-of-sources/ListOfSources.jsx +++ b/frontend/src/components/input-output/list-of-sources/ListOfSources.jsx @@ -1,8 +1,8 @@ import { SearchOutlined } from "@ant-design/icons"; import { Input, List, Segmented } from "antd"; +import debounce from "lodash/debounce"; import PropTypes from "prop-types"; import { useEffect, useState } from "react"; -import debounce from "lodash/debounce"; import { DataSourceCard } from "../data-source-card/DataSourceCard"; import "./ListOfSources.css";