From 3ef5291fa25a6ba32caaaceca6c7c6e3a0edb417 Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Wed, 2 Oct 2024 12:19:50 -0500 Subject: [PATCH] Trap out of disk errors --- src/pgwui_sql/exceptions.py | 12 ++++++++++++ src/pgwui_sql/views/sql.py | 6 ++++++ 2 files changed, 18 insertions(+) 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. -- 2.34.1