Commit graph

88 commits

Author SHA1 Message Date
d3e2352ac0 Make resource pool changes and add parallelism limiter
Some checks failed
/ test (push) Failing after 13s
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-25 18:46:46 +02:00
edf62414ee Avoid workflow erroring if there's nothing to change
All checks were successful
/ test (push) Successful in 12s
2025-06-24 21:14:52 +02:00
2e25c3b074 Add workflow for building the website
Some checks failed
/ test (push) Failing after 14s
2025-06-24 21:07:29 +02:00
1b7732c958 Add manual index 2025-06-24 20:58:04 +02:00
f7eae5a3bc Add texinfo to guix-dev.scm 2025-06-24 20:50:44 +02:00
7d31d5163d Add guile-documenta as a native input 2025-06-24 13:10:17 +02:00
5663a5f2e9 Address exception naming inconsistencies 2025-06-21 09:43:52 +01:00
8f669f133f
Fix typo 2025-06-18 13:22:03 +03:00
78d22d1acc Tweak display of stack traces
Tweak the frames to display and try to harden the code to crash less.
2025-06-09 12:19:56 +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
cbafdb8668 Respect use-default-io-waiters? for the fixed size thread pools 2025-05-25 15:34:07 +01:00
016f37f108 Rework thread pools
Allow the thread pool to vary in size by basing it on a resource pool
of fixed size thread pools, which are similar to the previous thread
pool implementation.

Fixed size thread pools don't require fibers, but thread pools now
do. Some procedures work with either thread pool implementation.
2025-05-19 09:06:08 +01:00
7ba77010ae Handle %stacks not being a pair
Not sure when this would happen, but guard against it.
2025-05-15 09:26:29 +01:00
8c63ed7b4e Support listing resource pool resources 2025-05-15 09:24:28 +01:00
838ee6f1e3 Enable destroying individual resources in a resource pool 2025-05-15 09:24:28 +01:00
1dca6d755e Allow specifying the resource-pool-channel 2025-04-27 10:52:36 +01:00
68cfbe0380 Use a condition for destroying resource pools
This avoids the situation where the resource pool is destroyed, so
there's no fiber to listen to the destroy request.
2025-04-27 10:03:06 +01:00
4f0eafef0a Resource pool max waiters and destroy changes
Add the ability to specify the max number of waiters for a resource
pool, this provides a more efficient way of avoiding waiters for a
resource pool continually rising.

This commit also improves the destroy behaviour.
2025-04-27 09:41:56 +01:00
8c0f04be4f Don't call put-message without unwinding the stack
When handling exceptions, as this is error prone.
2025-04-01 17:47:11 +03:00
e1858dfff5 Remove the web-server exception handler
This turned out not to be useful, since I wanted to handle exceptions
happening in the exception handler, so it didn't really help in the
end to allow customising it.
2025-03-14 14:51:42 +00:00
da69fd19f3 Unwind before calling put-message
As I think this might be more reliable in case the stack contains
something that would introduce a continuation barrier.
2025-03-11 11:55:42 +00:00
a73fd1ca50 Add a fibers-parallel test 2025-03-10 21:33:29 +00:00
47ff45d963 Abbreviate the fport_writer error message
From the web server.
2025-03-10 21:32:55 +00:00
710972691b Fix exception handling for the web server exception handler
Don't crash if it returns a response with invalid headers.
2025-03-08 18:43:44 +00:00
e3bc3c12b0 Add some helpers for handling request bodies 2025-03-08 10:15:25 +00:00
759ff87c0c Remove GUILE_AUTO_COMPILE=0 from test-env.in
As I'm not sure this helps with backtraces.
2025-03-08 10:14:54 +00:00
3841b452a4 Use guile-next and guile-fibers-next for development 2025-03-08 10:14:33 +00:00
4e33da98aa Fix some exception handling issues 2025-03-08 09:39:27 +00:00
3aab1be1e7 Revert "Use module-ref for make-base-operation"
This isn't working, with make-base-operation changing from part of a
macro to a procedure, I'm not sure how to maintain compatability. I
think just switching to guile-fibers-next everywhere is the approach
to take.

This reverts commit f41d1853ce.
2025-03-04 14:18:32 +00:00
a6c96aa1da Better handle the web server exception handler not returning 2 values 2025-03-03 10:56:36 +00:00
f41d1853ce Use module-ref for make-base-operation
As the implementation of this changed in fibers, and that's causing
issues here when mixing the version of fibers used for knots and
different versions of fibers.
2025-02-27 13:23:06 +00:00
21e328aebb Improve exception reporting 2025-02-27 13:22:36 +00:00
ed4113af51 Simplify and extend using the knots exception with stack 2025-02-27 13:22:36 +00:00
d8bc09755e Fix knots-exception? 2025-02-27 12:18:36 +00:00
60bfe0d7a3 Remove trailing whitespace 2025-02-27 12:07:16 +00:00
f549bee282 Improve thread pool exception logging 2025-02-26 10:07:54 +00:00
13f1118576 Use #f as the default web server connection-idle-timeout
As it's not efficient yet and seems to cause excessive memory use.
2025-02-20 14:20:25 +00:00
239cb88f93 Rework handling connection persistance in the web server
Change to setting the connection header in the response based on the
request, and then closing the connection in the server based on the
response headers.

Stop closing the response based on the response code, as I don't know
why this is necessary.
2025-02-20 13:42:12 +00:00
1fbd1f334a Fix exception origin in the knots web server 2025-02-19 17:34:45 +00:00
99245034ea Allow passing custom channels to fiberize
This allows customising the behevaiour, for example by using a queue.
2025-02-19 12:46:51 +00:00
ca3d5a1781 Fix handling of client-loop exceptions
Maybe other things can go wrong here, so log so that there's some
information available.
2025-02-19 12:44:47 +00:00
d597b77fcb Use the thread-pool record for the default timeout
Rather than a parameter.
2025-02-10 15:16:37 +00:00
6c083bdebd Use default io waiters in the thread pool
To allow creating thread pools from fibers.
2025-02-10 15:13:30 +00:00
ee2a93fbca Avoid needlessly setting the encoding 2025-02-07 17:02:37 +00:00
cb2085b684 Make more web server encoding tweaks 2025-02-07 16:09:42 +00:00
b0bb65dbed Tweak some web server exception handling 2025-02-07 10:54:59 +00:00
19c1fe235b Allow customising the web server read request exception handler 2025-02-07 10:48:50 +00:00
025449ea0d Remove the fiberize show-backtrace? option
This is no longer relevant now that the stack is added to the compound
exception.
2025-02-07 10:43:24 +00:00
b0d8618705 Fix exception handling for fibers-batch-map 2025-02-06 17:02:54 +00:00