From: Karl O. Pinc Date: Wed, 2 Oct 2024 17:19:50 +0000 (-0500) Subject: Trap out of disk errors X-Git-Url: https://papio.biology.duke.edu/gitweb/?a=commitdiff_plain;h=3ef5291fa25a6ba32caaaceca6c7c6e3a0edb417;p=pgwui_sql Trap out of disk errors --- diff --git a/src/pgwui_sql/exceptions.py b/src/pgwui_sql/exceptions.py index 6e9459b..2285af6 100644 --- a/src/pgwui_sql/exceptions.py +++ b/src/pgwui_sql/exceptions.py @@ -94,3 +94,15 @@ class MemoryError(SQLError): def __init__(self, descr='', detail=''): super().__init__('Webserver out of memory', '', descr=descr, detail=detail) + + +class OutOfDiskError(SQLError): + ''' + Error raised when we run out of disk + + descr More description of the error + detail Extra HTML describing the error + ''' + def __init__(self, descr='', detail=''): + super().__init__('Webserver out of disk or disk quota exceeded', + '', descr=descr, detail=detail) diff --git a/src/pgwui_sql/views/sql.py b/src/pgwui_sql/views/sql.py index 23b3804..648a96e 100644 --- a/src/pgwui_sql/views/sql.py +++ b/src/pgwui_sql/views/sql.py @@ -22,6 +22,7 @@ import attrs import codecs import csv import datetime +import errno import gc import logging import markupsafe @@ -355,6 +356,11 @@ class SQLResultsHandler(pgwui_core.core.SessionDBHandler): raise sql_ex.MemoryError( ("Can't collect results for on-screen display" '-- try downloading instead')) + except OSError as ex: + if ex.errno == errno.ENOSPC or ex.errno == errno.EDQUOT: + raise sql_ex.OutOfDiskError() + else: + raise def factory(self, ue): '''Make a db loader function from an UploadEngine.