Now with a new SQL check for ProgrammingError. This is related to multithreading usually.

This commit is contained in:
Scott Idem
2024-03-29 12:58:34 -04:00
parent 76d5d4c94d
commit 257edec1a7
2 changed files with 27 additions and 2 deletions

View File

@@ -5,7 +5,7 @@ from app.config import settings
from app.log import log, logging, logger_reset
from sqlalchemy import create_engine, text, Time
from sqlalchemy.exc import IntegrityError, OperationalError
from sqlalchemy.exc import IntegrityError, OperationalError, ProgrammingError
db_uri = settings.SQLALCHEMY_DB_URI
@@ -962,6 +962,31 @@ def run_sql_select(
else:
log.info('Successfully executed the SQL on the second try.')
pass
except ProgrammingError as e:
log.error('A programming error exception happened. This may be related to multithreading. It may also be related to a DB connection issue. Going to try again...')
log.exception('**** *** ** * ### BEGIN ### Programming Exception Happened: Trying again... * ** *** ****')
log.error('^^^^ ^^^ ^^ ^ ### END ### Programming Exception ^ ^^ ^^^ ^^^^')
log.error('SQL Alchemy DB URI:')
log.error(settings.SQLALCHEMY_DB_URI)
sql_connect(current_db=db)
log.info('Now trying the query again...')
try:
if data:
log.info('2x Executing with SQL statement and data...')
result = db.execute(sql, data)
else:
log.info('2x Executing with SQL statement only...')
result = db.execute(sql)
except Exception as e:
log.error('Tried again an exception was raised again. Not going to try again.')
log.exception('**** *** ** * ### BEGIN ### (2x) Second Exception Happened: Returning False * ** *** ****')
log.error('^^^^ ^^^ ^^ ^ ### END ### Exception ^ ^^ ^^^ ^^^^')
return False
else:
log.info('Successfully executed the SQL on the second try.')
pass
except Exception as e:
log.error('An unknown exception happened. Returning False.')
log.exception('**** *** ** * ### BEGIN ### Exception Happened: Returning False * ** *** ****')

View File

@@ -566,7 +566,7 @@ async def patch_obj(
return mk_resp(data=False, status_code=400, response=commons.response)
# NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING
# time.sleep(2.5) # NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING
time.sleep(2.5) # NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING
# NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING
debug_data = {}