@mark1russell7/machines 0.3.19 → 0.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/build/index.d.ts +41 -0
- package/build/index.js +938 -194
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -60,8 +60,10 @@ The algebra reads these documents. It gives the closed form of each timer, the f
|
|
|
60
60
|
| `TOXIPROXY_LINK` | `toxiproxy-link` | Toxiproxy 2.12.0 with no toxic: one proxied TCP connection and its close | proxy | 9 implemented |
|
|
61
61
|
| `DOCKER_PROXY_LINK` | `docker-proxy-link` | docker-proxy of Docker Engine 29.1.5: one proxied TCP connection and its close | proxy | 9 implemented |
|
|
62
62
|
| `CADDY_HTTP2` | `caddy-http2` | Caddy 2.11.7 as an HTTP/2 proxy of gRPC: one connection of a client, its idle close, its replies and its stop | proxy | 12 implemented |
|
|
63
|
+
| `NGINX_GRPC` | `nginx-grpc` | nginx 1.29.6 as an HTTP/2 proxy of gRPC: one connection of a client, its idle close, the read timer of a call, and a stopped worker | proxy | 12 implemented, 1 documented |
|
|
64
|
+
| `TRAEFIK_HTTP2` | `traefik-http2` | Traefik 3.7.15 as an HTTP/2 proxy of gRPC: one connection of a client, its idle close, a reload of its dynamic file and its stop | proxy | 10 implemented, 1 observed |
|
|
63
65
|
|
|
64
|
-
|
|
66
|
+
Thirty documents operate on Linux TCP (`over`). Seven documents operate on no other document: Linux TCP, conntrack, the Sentinel, the replication of mongod, aten, the member of Ra and the `RetryAgent` of undici. The `RetryAgent` is one request above the sockets of a `Client`. Its timer is the delay of a retry. Each retry can go on a new socket. The `conditions` of each document give the range where it holds, for example a range of kernels.
|
|
65
67
|
|
|
66
68
|
The package also gives these parts:
|
|
67
69
|
|
package/build/index.d.ts
CHANGED
|
@@ -423,6 +423,47 @@ export declare const CADDY_HTTP2: Machine;
|
|
|
423
423
|
*/
|
|
424
424
|
export declare const ENVOY_HTTP2: Machine;
|
|
425
425
|
//#endregion
|
|
426
|
+
//#region src/proxy/nginx.d.ts
|
|
427
|
+
/**
|
|
428
|
+
* This document is nginx 1.29.6 as an HTTP/2 proxy of gRPC, for one connection of a client. Its
|
|
429
|
+
* configuration is the one of the harness: one worker (the default), one server of h2c, and `grpc_pass`
|
|
430
|
+
* to one address with no `upstream {}` block. Each other directive is at its built-in default, not at the
|
|
431
|
+
* values of the stock nginx.conf (keepalive_timeout 65 and worker_processes auto).
|
|
432
|
+
*
|
|
433
|
+
* - With no stream open for 75 s (keepalive_timeout), nginx sends GOAWAY NO_ERROR, then a FIN, and it
|
|
434
|
+
* reads and drops the input for at most 30 s (the lingering close). A PING does not reset that timer.
|
|
435
|
+
* - While a stream is open, the connection of the client has no timer. The only timer of a call is
|
|
436
|
+
* grpc_read_timeout (60 s) on the upstream socket, from the send of the request. When it fires before
|
|
437
|
+
* the headers of the response, the client gets 504 with no gRPC status, thus UNAVAILABLE. After them,
|
|
438
|
+
* RST_STREAM INTERNAL_ERROR. nginx does not retry a call that it sent.
|
|
439
|
+
* - Each call has its own upstream connection, which ends with the call.
|
|
440
|
+
* - A stopped worker: the timers that came due during the stop fire at the resume. They read one clock,
|
|
441
|
+
* which nginx reads after each wait of epoll_wait. After a stop and a continue, that wait fails with
|
|
442
|
+
* EINTR (signal(7)). Then nginx fires its timers before it reads any I/O. Thus a stop longer than
|
|
443
|
+
* grpc_read_timeout gives 504, also when the reply of the server waits in the socket.
|
|
444
|
+
* - SIGQUIT and SIGHUP send GOAWAY NO_ERROR, and the worker waits for each stream. SIGTERM exits with
|
|
445
|
+
* no GOAWAY.
|
|
446
|
+
*/
|
|
447
|
+
export declare const NGINX_GRPC: Machine;
|
|
448
|
+
//#endregion
|
|
449
|
+
//#region src/proxy/traefik.d.ts
|
|
450
|
+
/**
|
|
451
|
+
* This document is Traefik 3.7.15 as an HTTP/2 proxy of gRPC, for one connection of a client. Its
|
|
452
|
+
* configuration is the one of the harness. It has one entrypoint of h2c and the file provider over a
|
|
453
|
+
* folder of dynamic files, with one router to one server of h2c. Each other option is at its default.
|
|
454
|
+
*
|
|
455
|
+
* - With no stream open for 180 s (respondingTimeouts.idleTimeout), Go sends GOAWAY NO_ERROR, and it
|
|
456
|
+
* closes the connection 1 s later. The timer counts from the close of the last stream.
|
|
457
|
+
* - A reload of the dynamic file only swaps the handler of each entrypoint. Thus a reload sends nothing
|
|
458
|
+
* to the client: no GOAWAY, no reset and no close. A stream that runs keeps its handler, and a new
|
|
459
|
+
* stream gets the new one. A transport whose configuration is the same is kept, with its upstream
|
|
460
|
+
* connection.
|
|
461
|
+
* - The file provider watches the file and its folder. The first message goes at once, and a change
|
|
462
|
+
* within the throttle of 2 s waits for its end. A rewrite with the same content changes nothing.
|
|
463
|
+
* - At SIGTERM, Traefik sends GOAWAY, and it closes each connection after graceTimeOut (10 s).
|
|
464
|
+
*/
|
|
465
|
+
export declare const TRAEFIK_HTTP2: Machine;
|
|
466
|
+
//#endregion
|
|
426
467
|
//#region src/proxy/tcp-proxies.d.ts
|
|
427
468
|
/**
|
|
428
469
|
* This document is one proxied connection of Toxiproxy 2.12.0, with no toxic. Toxiproxy copies TCP, and it
|