Now with a new SQL check for ProgrammingError. This is related to multithreading usually.
This commit is contained in:
@@ -5,7 +5,7 @@ from app.config import settings
|
|||||||
from app.log import log, logging, logger_reset
|
from app.log import log, logging, logger_reset
|
||||||
|
|
||||||
from sqlalchemy import create_engine, text, Time
|
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
|
db_uri = settings.SQLALCHEMY_DB_URI
|
||||||
@@ -962,6 +962,31 @@ def run_sql_select(
|
|||||||
else:
|
else:
|
||||||
log.info('Successfully executed the SQL on the second try.')
|
log.info('Successfully executed the SQL on the second try.')
|
||||||
pass
|
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:
|
except Exception as e:
|
||||||
log.error('An unknown exception happened. Returning False.')
|
log.error('An unknown exception happened. Returning False.')
|
||||||
log.exception('**** *** ** * ### BEGIN ### Exception Happened: Returning False * ** *** ****')
|
log.exception('**** *** ** * ### BEGIN ### Exception Happened: Returning False * ** *** ****')
|
||||||
|
|||||||
@@ -566,7 +566,7 @@ async def patch_obj(
|
|||||||
return mk_resp(data=False, status_code=400, response=commons.response)
|
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
|
# 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
|
# NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING NOTE: WARNING
|
||||||
|
|
||||||
debug_data = {}
|
debug_data = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user