prefect
prefect copied to clipboard
Flow run containers never exit when using `jaydebeapi`
Bug summary
Flow run containers never exit when using jaydebeapi
, even when manually closing and deleting connections. Network information on containers indicate the connection is still open.
import gc
import jaydebeapi
from prefect import flow
from prefect.logging import get_run_logger
@flow
def sync_object(table):
logger = get_run_logger()
user = None
password = None
driver = None
jar = None
query = """select * from some_table;"""
connection = None
cursor = None
results = []
try:
connection = jaydebeapi.connect(driver, url, [user, password], jar)
cursor = connection.cursor()
cursor.execute(query)
columns = [column[0] for column in cursor.description]
results = [dict(zip(columns, row)) for row in cursor.fetchall()]
except Exception as e:
logger.error(f"Error running query: {e}")
finally:
if cursor:
try:
cursor.close()
del cursor
except Exception as e:
logger.error(f"Failed to close cursor: {e}")
if connection:
try:
connection.close()
del connection
except Exception as e:
logger.error(f"Failed to close connection: {e}")
# Force garbage collection to clean up connection
gc.collect()
return results
Version info (prefect version
output)
Version: 2.19.2
API version: 0.8.4
Python version: 3.11.5
Git commit: e42a3971
Built: Thu, May 23, 2024 2:45 PM
OS/Arch: darwin/arm64
Profile: default
Server type: cloud
Additional context
No response