Commit graph

121 commits

Author SHA1 Message Date
b451e04169 Add missing #:unwind? #t 2026-03-22 18:54:22 +00:00
b3fa4d069b Rework the backtrace handling
All checks were successful
/ test (push) Successful in 6s
Try and improve the print-backtrace-and-exception/knots output, be
selective about the stack frames which are shown to try and produce
some useful output which reflects user code and hide the
&knots-exceptions.

This commit also introduces a bunch of tests scripts that produce
output from print-backtrace-and-exception/knots, to help test this
code in different situations.
2026-03-22 18:31:56 +00:00
c36ddc2214 web-server: Expose the sockaddr in the request meta. 2026-03-22 15:29:01 +00:00
677d941cb3 Simplify web server exception handling
This used to be more complicated as the exception handler was
configurable, but now it's not so this can be simplified.
2026-03-22 15:29:01 +00:00
bb6d9fd89d Add exception handling to the server loop
This should start to deal with accept failing if there are too many
open files.
2026-03-22 15:29:01 +00:00
8cff54ea43 Add (knots web)
All checks were successful
/ test (push) Successful in 7s
2026-03-18 21:34:31 +00:00
db9b549e59 Fix the destroy behaviour for fixed size thread pools
All checks were successful
/ test (push) Successful in 38s
destroy-thread-pool should block until the thread pool has been
destroyed.
2026-03-18 09:42:17 +00:00
09cb805ee2 Add even more documentation 2026-03-18 08:58:41 +00:00
d3d4964210 Add more documentation 2026-03-18 08:44:26 +00:00
5b84273cbf Add some documentation for the timeout procedures
And tweak how with-fibers-timeout works.
2026-03-17 21:58:22 +00:00
30aa837cf4 Add some resource pool documentation 2026-03-17 21:47:47 +00:00
8b489490e1 Fix readable? docstring. 2026-03-17 21:13:03 +00:00
5260c38b5e Address issue with failures when creating resource pool resources
All checks were successful
/ test (push) Successful in 5s
Previously failures could lead to no resources in the pool, and
waiters which will never get a resource. Retrying here fixes that
issue, although maybe another approach is needed that keeps track of
new resources being created, as that'll allow keeping track of this
when destroying resource pools.
2026-01-12 16:26:24 +00:00
094259b049 Add display, simple-format and format variants
Which call put-bytevector for performing output. When used in
combination with an unbuffered port, this should be safer than using
the normal Guile procedures, as I think it'll avoid writing to the
buffers, while still avoiding single character at a time output.

More research is needed though in to how to output to stdout/stderr
when using fibers with a parallelism greater than 1.
2026-01-12 10:00:35 +00:00
4642f7c7d2 Fix some issues handling head requests
Rather than raising an exception when there's a body provided, use the
body as normal to inform the headers, as this is useful, and just
don't write the body to the client.
2026-01-09 15:14:47 +00:00
f38456b4c6 Add fibers-delay/eager
Some checks are pending
/ test (push) Waiting to run
2026-01-05 10:44:34 +00:00
b6746fffde Add fibers-sort! 2026-01-05 10:44:04 +00:00
f64e435b57 Use start-stack in fibers-force
Some checks failed
/ test (push) Has been cancelled
Otherwise the backtraces are more confusing.
2025-12-06 10:09:01 +00:00
a8e07b738b Fix a resource pool bug with idle seconds
Some checks failed
/ test (push) Has been cancelled
Actually perform the choice operation.
2025-11-26 10:06:20 +00:00
9c123bbfa9 Fix listing resource pool resources 2025-11-25 14:26:39 +00:00
8100d36aa5 Avoid errors about returning no values from a exception handler
Some checks are pending
/ test (push) Waiting to run
2025-11-25 09:58:58 +00:00
9cce89fc01 Change how spawn-fiber-to-destroy-resource is used
And fix a couple of incorrect uses.
2025-11-25 09:58:45 +00:00
04d964a9f8 Fix adding the resource id to the available list
Some checks are pending
/ test (push) Waiting to run
2025-11-25 09:37:29 +00:00
3eba6fc820 Rework the resource pool implementations
Some checks are pending
/ test (push) Waiting to run
Don't rely on resource equality for keeping track of resources and
make some other tweaks.
2025-11-24 21:54:00 +00:00
d07e309566 Fix a bug with resource pool idle checking
The fiber would never finish.
2025-11-24 17:06:27 +00:00
95200eccfd Fix fixed size thread pool lifetimes
Some checks failed
/ test (push) Has been cancelled
2025-11-19 15:59:18 +00:00
05ad83c703 Implement lifetime support for thread pools
Some checks failed
/ test (push) Has been cancelled
2025-11-17 11:37:26 +00:00
1a476b5aa8 Implement lifetime support in the resource pool 2025-11-17 11:37:10 +00:00
e78e41b542 Pass through default-max-waiters in make-thread-pool 2025-11-17 11:19:30 +00:00
2446078657 Fix updating the thread-proc-vector in thread pools 2025-11-17 11:19:01 +00:00
a13098494d Fix a bug where resources pools could empty with waiters 2025-11-17 11:18:23 +00:00
40b64e269b Fix resources-last-used inconsistency 2025-11-17 11:18:16 +00:00
86fb460d6a Simplify using the waiters queue in the resource pool
Use a custom dequeue procedure that returns #f rather than raising an
exception on an empty queue.
2025-11-17 11:18:16 +00:00
d18b5b8d5d Don't loop inside exception handlers
All checks were successful
/ test (push) Successful in 9s
The resource pools seemed to become slower and slower over time, this
might help?
2025-07-09 12:06:20 +01:00
f4b48a1499 Avoid calling deq! if the queue is empty
All checks were successful
/ test (push) Successful in 9s
2025-07-06 18:49:09 +01:00
ec2f2489a2 Fix resource pool bug
All checks were successful
/ test (push) Successful in 9s
And remove unnecessary named let.
2025-07-01 23:13:31 +01:00
ff93dc1442 Add a post-request-hook to the web server
All checks were successful
/ test (push) Successful in 11s
2025-07-01 12:45:12 +01:00
ce1b710bcf Use a queue for the resource pool waiters
All checks were successful
/ test (push) Successful in 8s
As this will maybe improve performance.
2025-06-30 22:57:08 +01:00
7709ffe1d3 Tweak the knots chunked output port
All checks were successful
/ test (push) Successful in 9s
To try and reduce the number of write syscalls.
2025-06-30 15:41:04 +02:00
deae518b52 Use the buffer size for chunked output ports
All checks were successful
/ test (push) Successful in 37s
2025-06-29 08:35:28 +02:00
0fa6737a39 Document some things
All checks were successful
/ test (push) Successful in 9s
2025-06-27 23:28:47 +02:00
4140ef0bd6 More consistently handle results and exceptions
In the parallelism module.
2025-06-27 22:43:25 +02:00
d8f64399cd Tweak spacing 2025-06-27 00:16:37 +02:00
163d775496 Fix record-predicate that should be exception-predicate 2025-06-27 00:16:18 +02:00
8f3e0a9a1d Fix exception handling in fibers-map-with-progress
All checks were successful
/ test (push) Successful in 9s
2025-06-26 22:53:15 +02:00
09ca6cfb6b Fix resource-pool-destroy-resource-exception
Raising the exception is more consistent, and avoids returning the
resource.
2025-06-26 21:27:32 +02:00
ab5411da42 Make resource pool changes and add parallelism limiter
All checks were successful
/ test (push) Successful in 9s
This was motivated by trying to allow for completely cleaning up
resource pools, which involved removing their use of fiberize which
currently has no destroy mechanism.

As part of this, there's a new parallelism limiter mechanism using
resource pools rather than fibers, and also a fixed size resource
pool.

The tests now drain? and destroy the resource pools to check cleaning
up.
2025-06-26 10:43:46 +02:00
5663a5f2e9 Address exception naming inconsistencies 2025-06-21 09:43:52 +01:00
123c920122 Export sanitize-response
As this is useful.
2025-06-09 12:19:32 +01:00
8e582a2d73 Improve promise exception reporting
And guard against calling fibers-force not on a fibers promise record.
2025-05-26 14:50:45 +01:00