diff --git a/providers/oracle/src/airflow/providers/oracle/hooks/oracle.py b/providers/oracle/src/airflow/providers/oracle/hooks/oracle.py index 527f002e21001..1bc0ff772858b 100644 --- a/providers/oracle/src/airflow/providers/oracle/hooks/oracle.py +++ b/providers/oracle/src/airflow/providers/oracle/hooks/oracle.py @@ -226,6 +226,10 @@ def get_conn(self) -> oracledb.Connection: elif purity == "default": conn_config["purity"] = oracledb.PURITY_DEFAULT + expire_time = conn.extra_dejson.get("expire_time") + if expire_time: + conn_config["expire_time"] = expire_time + conn = oracledb.connect(**conn_config) # type: ignore[assignment] if mod is not None: conn.module = mod diff --git a/providers/oracle/tests/unit/oracle/hooks/test_oracle.py b/providers/oracle/tests/unit/oracle/hooks/test_oracle.py index a82a6d207c111..6aa4ee088988b 100644 --- a/providers/oracle/tests/unit/oracle/hooks/test_oracle.py +++ b/providers/oracle/tests/unit/oracle/hooks/test_oracle.py @@ -130,6 +130,15 @@ def test_get_conn_purity(self, mock_connect): assert args == () assert kwargs["purity"] == purity.get(pur) + @mock.patch("airflow.providers.oracle.hooks.oracle.oracledb.connect") + def test_get_conn_expire_time(self, mock_connect): + self.connection.extra = json.dumps({"expire_time": 10}) + self.db_hook.get_conn() + assert mock_connect.call_count == 1 + args, kwargs = mock_connect.call_args + assert args == () + assert kwargs["expire_time"] == 10 + @mock.patch("airflow.providers.oracle.hooks.oracle.oracledb.connect") def test_set_current_schema(self, mock_connect): self.connection.schema = "schema_name"