changeset 112: | 430e69339ac3 |
parent: | 6e5caf0c68a1 |
child: | afcb1f02bb66 |
author: | ellis <ellis@rwest.io> |
date: | Tue, 19 Dec 2023 18:10:02 -0500 |
permissions: | -rw-r--r-- |
description: | fixed rdb tests |
93 | 1 | (in-package :rdb) |
2 | ||
3 | (define-condition rdb-error (error) |
|
99 | 4 | ((message :initarg :message |
5 | :reader rdb-error-message)) |
|
93 | 6 | (:documentation "Error signaled by the RDB system")) |
7 | ||
99 | 8 | (define-condition rocksdb-error (rdb-error) |
9 | ((db :initarg :db :reader rdb-error-db)) |
|
10 | (:documentation "Error signaled by RocksDB subsystem")) |
|
11 | ||
93 | 12 | (defmethod print-object ((obj rdb-error) stream) |
13 | (print-unreadable-object (obj stream :type t :identity t) |
|
99 | 14 | (format stream "~A" (rdb-error-message obj)))) |
93 | 15 | |
99 | 16 | (define-condition open-db-error (rocksdb-error) |
17 | () |
|
18 | (:documentation "Error signaled while opening a database")) |
|
19 | ||
20 | (define-condition destroy-db-error (rocksdb-error) |
|
21 | () |
|
22 | (:documentation "Error signaled while destroying a database")) |
|
93 | 23 | |
102 | 24 | (define-condition cf-error (rocksdb-error) |
25 | ((cf :initarg :cf :reader rdb-error-cf))) |
|
26 | ||
93 | 27 | (define-condition put-kv-error (rdb-error) |
99 | 28 | ((kv :initarg :kv :reader rdb-error-kv)) |
93 | 29 | (:documentation "Error signaled while processing a PUT-KV request")) |
30 | ||
31 | (define-condition get-kv-error (rdb-error) |
|
99 | 32 | ((key :initarg :key :reader key)) |
93 | 33 | (:documentation "Error signaled while processing a GET-KV request")) |
99 | 34 | |
35 | (defun handle-errptr (errptr &optional errtyp params) |
|
36 | "Handle ERRPTR, a ROCKSDB-ERRPTR type which is a pointer to NULL, |
|
37 | indicating a success or a pointer to a C-STRING. |
|
38 | ||
39 | ERRTYP if present must be a condition which sub-classes RDB-ERROR. If |
|
40 | an error is detected, the resulting string from ERRPTR and the |
|
41 | additional PARAMS will be used to signal a lisp error condition." |
|
102 | 42 | ;; if NULL, return nil |
43 | (unless (null-alien errptr) |
|
44 | (apply #'signal (or errtyp 'rdb-error) |
|
45 | (nconc (list :message errptr) params)))) |
|
46 | ||
47 | (defmacro with-errptr ((e &optional errtyp params) &body body) |
|
48 | `(with-alien ((,e rocksdb-errptr nil)) |
|
104
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
49 | (unwind-protect |
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
50 | (handler-bind ((sb-sys:memory-fault-error |
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
51 | (lambda (condition) |
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
52 | (error 'rdb-error |
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
53 | :message |
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
54 | (format nil |
112 | 55 | "~a" condition)))) |
104
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
56 | (error |
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
57 | (lambda (condition) |
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
58 | (error 'rdb-error |
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
59 | :message |
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
60 | (format nil |
112 | 61 | "unhandled exception in body of WITH-ERRPTR: ~a" |
104
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
62 | condition))))) |
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
102
diff
changeset
|
63 | (progn ,@body)) |
102 | 64 | (handle-errptr ,e ,errtyp ,params)))) |
65 | |
|
66 | |