changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/lib/rdb/err.lisp

changeset 698: 96958d3eb5b0
parent: 38e9c3be2392
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
1 ;;; rdb/err.lisp --- RDB errors
2 
3 ;;
4 
5 ;;; Code:
6 (in-package :rdb)
7 
8 (eval-always
9  (deferror rdb-error ()
10  ((message :initarg :message
11  :reader rdb-error-message))
12  (:auto t)
13  (:documentation "Error signaled by the RDB system."))
14  (define-condition rocksdb-alien-error (rdb-error)
15  ((db :initarg :db :reader rdb-error-db))
16  (:documentation "Error signaled by RocksDB subsystem.")))
17 
18 (defmethod print-object ((obj rdb-error) stream)
19  (print-unreadable-object (obj stream :type t :identity t)
20  (format stream "~A" (rdb-error-message obj))))
21 
22 (define-condition open-db-error (rocksdb-alien-error)
23  ()
24  (:documentation "Error signaled while opening a database."))
25 
26 (define-condition open-backup-engine-error (rocksdb-alien-error)
27  ()
28  (:documentation "Error signaled while opening a backup engine."))
29 
30 (define-condition destroy-db-error (rocksdb-alien-error)
31  ()
32  (:documentation "Error signaled while destroying a database."))
33 
34 (define-condition flush-db-error (rocksdb-alien-error)
35  ()
36  (:documentation "Error signaled while flushing a database."))
37 
38 (define-condition ingest-db-error (rocksdb-alien-error)
39  ()
40  (:documentation "Error signaled while ingesting a database."))
41 
42 (define-condition sst-writer-error (rocksdb-alien-error)
43  ()
44  (:documentation "Error signaled while writing a SST file."))
45 
46 (define-condition repair-db-error (rocksdb-alien-error)
47  ()
48  (:documentation "Error signaled while repairing a database."))
49 
50 (define-condition destroy-backup-engine-error (rocksdb-alien-error)
51  ()
52  (:documentation "Error signaled while destroying a backup engine."))
53 
54 (define-condition cf-error (rocksdb-alien-error)
55  ((cf :initarg :cf :reader rdb-error-cf))
56  (:documentation "Error signaled in the context of a Column Family."))
57 
58 (define-condition put-kv-error (rdb-error)
59  ((kv :initarg :kv :reader rdb-error-kv))
60  (:documentation "Error signaled while processing a PUT-KV request"))
61 
62 (define-condition get-kv-error (rdb-error)
63  ((key :initarg :key :reader key))
64  (:documentation "Error signaled while processing a GET-KV request"))
65 
66 (define-condition opt-handler-missing (warning rdb-error)
67  ())
68 
69 (define-condition db-missing (warning rdb-error)
70  ())
71 
72 (define-condition metadata-missing (warning rdb-error)
73  ())
74 
75 (define-condition invalid-propname (rdb-error)
76  ()
77  (:documentation "Error signaled when an invalid ROCKSDB-PROPERTY value is detected."))
78 
79 (defun handle-errptr (errptr &optional errtyp params)
80  "Handle ERRPTR, a ROCKSDB-ERRPTR type which is a pointer to NULL,
81 indicating a success or a pointer to a C-STRING.
82 
83 ERRTYP if present must be a condition which sub-classes RDB-ERROR. If
84 an error is detected, the resulting string from ERRPTR and the
85 additional PARAMS will be used to signal a lisp error condition."
86  ;; if NULL, return nil
87  (unless (null-alien errptr)
88  (apply #'signal (or errtyp 'rocksdb-alien-error)
89  (nconc (list :message (sb-unix::strerror)) params))))