@mark1russell7/machines 0.3.15 → 0.3.17
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 +21 -1
- package/build/index.d.ts +67 -0
- package/build/index.js +9699 -7648
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -52,8 +52,14 @@ The algebra reads these documents. It gives the closed form of each timer, the f
|
|
|
52
52
|
| `RABBITMQ_CONNECTION` | `rabbitmq-connection` | RabbitMQ 4.3.6: one connection of AMQP 0-9-1 on the broker | server | 14 implemented, 1 documented |
|
|
53
53
|
| `ATEN_DETECTOR` | `aten` | aten 0.6.0: one node that the failure detector of another node of RabbitMQ watches | server | 7 implemented |
|
|
54
54
|
| `RA_MEMBER` | `ra-member` | ra 3.1.10: one member of the Raft cluster of a quorum queue of RabbitMQ 4.3.6 | server | 25 implemented |
|
|
55
|
+
| `GRPC_JS` | `grpc-js` | grpc-js 1.14.6: one channel to a gRPC server, its HTTP/2 transport, its keepalive and a unary call | driver | 26 implemented, 1 observed |
|
|
56
|
+
| `GRPC_GO_SERVER` | `grpc-go-server` | A server of grpc-go v1.84.0: one HTTP/2 connection, its keepalive, its policy for PINGs and its TCP socket | server | 13 implemented, 1 documented |
|
|
57
|
+
| `ETCD_SERVER` | `etcd-server` | The server of etcd v3.6.15 on grpc-go v1.83.2: one gRPC connection of a client | server | 19 implemented, 1 documented |
|
|
58
|
+
| `ENVOY_HTTP2` | `envoy-http2` | Envoy 1.39.4 as an HTTP/2 proxy of gRPC: one connection of a client, its streams, the local replies and the close | proxy | 16 implemented |
|
|
59
|
+
| `TOXIPROXY_LINK` | `toxiproxy-link` | Toxiproxy 2.12.0 with no toxic: one proxied TCP connection and its close | proxy | 9 implemented |
|
|
60
|
+
| `DOCKER_PROXY_LINK` | `docker-proxy-link` | docker-proxy of Docker Engine 29.1.5: one proxied TCP connection and its close | proxy | 9 implemented |
|
|
55
61
|
|
|
56
|
-
Twenty-
|
|
62
|
+
Twenty-seven documents operate on Linux TCP (`over`). Linux TCP, conntrack, the Sentinel, the replication of mongod, aten and the member of Ra operate on no other document. The `conditions` of each document give the range where it holds, for example a range of kernels.
|
|
57
63
|
|
|
58
64
|
The package also gives these parts:
|
|
59
65
|
|
|
@@ -99,6 +105,20 @@ A change to the version of a system changes its sources too. Each fact of the do
|
|
|
99
105
|
|
|
100
106
|
In this repository, a snapshot of the predictions of the cells (`packages/cells/src/__snapshots__/predictions.json`) shows each prediction that a change to a document moves.
|
|
101
107
|
|
|
108
|
+
### 0.3.17
|
|
109
|
+
|
|
110
|
+
- **The proxies of T02 for gRPC: Envoy 1.39.4, Toxiproxy 2.12.0 and docker-proxy 29.1.5.** Three new documents, each from the source at its tag:
|
|
111
|
+
- `envoy-http2`: one connection of a client through Envoy to one cluster of h2c. Envoy answers a failure of its upstream itself. Before the headers of a response, it sends a local reply of trailers only: 503 or 504, thus UNAVAILABLE. After the headers, it resets the stream with INTERNAL_ERROR. It retries no call at the defaults. The route ends each call 15 s after the end of its request. Envoy sets no keepalive of HTTP/2 or of TCP, and at SIGTERM it closes each connection with no GOAWAY.
|
|
112
|
+
- `toxiproxy-link`: a TCP copy with no timer. Each socket gets the TCP keepalive of Go (15 s, 15 s, 9). An end of file or a reset of either side closes both sockets: Toxiproxy has no half-close.
|
|
113
|
+
- `docker-proxy-link`: a TCP copy with no timer, with the same keepalive. A FIN passes as a half-close, and a reset of one side becomes a FIN toward the other. Docker stops the proxy with SIGINT at a stop or a restart of its container, and each connection then closes fully.
|
|
114
|
+
|
|
115
|
+
### 0.3.16
|
|
116
|
+
|
|
117
|
+
- **gRPC: grpc-js 1.14.6, a server of grpc-go v1.84.0, and the server of etcd v3.6.15.** Three new documents, each from the source at its tag:
|
|
118
|
+
- `grpc-js`: one channel, its transport and a unary call. At the defaults the keepalive is off, a call has no deadline, and the connect has no timeout. grpc-js sets TCP_NODELAY and no TCP keepalive. When the transport ends, each call in flight ends with UNAVAILABLE, and grpc-js does not retry it.
|
|
119
|
+
- `grpc-go-server`: one connection of a server of grpc-go. The server sends a PING after 2 h with no read, and it closes the connection 20 s after it. Its keepalive is on, thus each accepted connection gets a TCP_USER_TIMEOUT of 20 s. With the TCP keepalive of Go (15 s, 15 s, 9), an idle connection to a client that is gone ends 30 s after the last data. The third PING that breaks the policy gives GOAWAY too_many_pings. A call with a deadline gets a timer of it at the server, which resets the stream at its end. Thus the deadline of grpc-js and the deadline at the server race: run 39272272260 ended 4 of 11 such calls with CANCELLED, not DEADLINE_EXCEEDED.
|
|
120
|
+
- `etcd-server`: the same transport with the values of etcd. A client can ping each 5 s with a stream open. etcd serves gRPC through cmux, thus its connections get no TCP_USER_TIMEOUT. Its listener sets the keepalive idle to 30 s: an idle connection to a client that is gone ends 165 s after the last data.
|
|
121
|
+
|
|
102
122
|
### 0.3.15
|
|
103
123
|
|
|
104
124
|
- **The cluster of a quorum queue of RabbitMQ 4.3.6.** Two new documents, each from the source in the release of RabbitMQ:
|
package/build/index.d.ts
CHANGED
|
@@ -1,4 +1,40 @@
|
|
|
1
1
|
import { Expr, Machine } from "@mark1russell7/algebra";
|
|
2
|
+
//#region src/grpc/grpc-go-server.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* This document is a server of grpc-go v1.84.0 on its own listener: grpc.NewServer on net.Listen, at the
|
|
5
|
+
* defaults, as in the server of the harness. Its keepalive is on (a PING after 2 h with no read). Thus the
|
|
6
|
+
* transport gives each accepted connection a TCP_USER_TIMEOUT of 20 s. With the TCP keepalive of Go
|
|
7
|
+
* (15 s, 15 s, 9), an idle connection to a client that is gone ends 30 s after the last data. A client
|
|
8
|
+
* that pings more often than 5 min with a stream open, or than 2 h with none, gets GOAWAY
|
|
9
|
+
* too_many_pings at its third strike.
|
|
10
|
+
*/
|
|
11
|
+
export declare const GRPC_GO_SERVER: Machine;
|
|
12
|
+
/**
|
|
13
|
+
* This document is the server of etcd v3.6.15, on grpc-go v1.83.2, at the defaults: one client URL with no
|
|
14
|
+
* TLS. The keepalive of the server is 2 h and 20 s, and a client can ping each 5 s with a stream open.
|
|
15
|
+
* The server serves gRPC and HTTP on one port through cmux. Thus the transport gets a wrapper of the conn,
|
|
16
|
+
* and it sets no TCP_USER_TIMEOUT. The listener sets the keepalive idle to 30 s. The interval and the
|
|
17
|
+
* count of Go stay. Thus an idle connection to a gone client ends 165 s after the last data: 30 + 9 × 15.
|
|
18
|
+
*/
|
|
19
|
+
export declare const ETCD_SERVER: Machine;
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/grpc/grpc-js.d.ts
|
|
22
|
+
/**
|
|
23
|
+
* This document is grpc-js 1.14.6 on Node, for one channel to one server with no TLS, its transport
|
|
24
|
+
* (one HTTP/2 session on one TCP connection) and one unary call on it. It gives the states of the
|
|
25
|
+
* transport, from its connect to its end, and the timers that act on it.
|
|
26
|
+
*
|
|
27
|
+
* At the defaults the keepalive of grpc-js is off: it sends no PING. It sets TCP_NODELAY and no TCP
|
|
28
|
+
* keepalive, and its connect has no timeout. A call has no deadline. Thus nothing in grpc-js ends a
|
|
29
|
+
* call on a silent connection: only the kernel can, or the server.
|
|
30
|
+
*
|
|
31
|
+
* When the transport ends, each call in flight on it ends with UNAVAILABLE. The client does not retry such
|
|
32
|
+
* a call, because the call reached the server (PROCESSED). It retries only a call that did not start, and
|
|
33
|
+
* once a stream that the server refused. The channel then goes IDLE, and the next call connects again. A call
|
|
34
|
+
* that finds the channel in TRANSIENT_FAILURE fails at once, unless it asks to wait for the channel.
|
|
35
|
+
*/
|
|
36
|
+
export declare const GRPC_JS: Machine;
|
|
37
|
+
//#endregion
|
|
2
38
|
//#region src/http/go-transport.d.ts
|
|
3
39
|
/**
|
|
4
40
|
* This document is one connection of the `http.Transport` of Go 1.27.2 at its defaults, over its
|
|
@@ -337,6 +373,37 @@ export declare const PROCEDURES_WS_CLIENT: Machine;
|
|
|
337
373
|
*/
|
|
338
374
|
export declare const PROCEDURES_WS_SERVER: Machine;
|
|
339
375
|
//#endregion
|
|
376
|
+
//#region src/proxy/envoy.d.ts
|
|
377
|
+
/**
|
|
378
|
+
* This document is Envoy 1.39.4 as an HTTP/2 proxy of gRPC, for one connection of a client. Its static
|
|
379
|
+
* configuration is the one of the harness. It has one listener with the HTTP connection manager, one
|
|
380
|
+
* route with no timeout of its own, and one cluster of h2c. Each other field is at its default.
|
|
381
|
+
*
|
|
382
|
+
* Envoy answers a failure of its upstream itself. Before the headers of the response, it sends a local
|
|
383
|
+
* reply: a gRPC response of trailers only, with a status from the HTTP code (503 and 504 give UNAVAILABLE).
|
|
384
|
+
* After the headers, it resets the stream with INTERNAL_ERROR. It retries no call at the defaults. The
|
|
385
|
+
* route ends each call 15 s after the end of its request. Envoy sets no keepalive of HTTP/2 or of TCP. At
|
|
386
|
+
* SIGTERM it closes each connection with no GOAWAY.
|
|
387
|
+
*/
|
|
388
|
+
export declare const ENVOY_HTTP2: Machine;
|
|
389
|
+
//#endregion
|
|
390
|
+
//#region src/proxy/tcp-proxies.d.ts
|
|
391
|
+
/**
|
|
392
|
+
* This document is one proxied connection of Toxiproxy 2.12.0, with no toxic. Toxiproxy copies TCP, and it
|
|
393
|
+
* knows no protocol above it. It has no timer on a link. Each socket gets the TCP keepalive of Go. It has
|
|
394
|
+
* no half-close: an end of file or an error on either side closes both sockets. A stop of the process
|
|
395
|
+
* shuts down only the HTTP API, and the exit of the process then closes each socket.
|
|
396
|
+
*/
|
|
397
|
+
export declare const TOXIPROXY_LINK: Machine;
|
|
398
|
+
/**
|
|
399
|
+
* This document is one proxied connection of docker-proxy, the userland proxy of Docker Engine 29.1.5. It
|
|
400
|
+
* copies TCP with two goroutines and knows no protocol above it. It has no timer. Each socket gets the
|
|
401
|
+
* TCP keepalive of Go. An end of file of one side passes as a half-close. A reset of one side becomes a
|
|
402
|
+
* FIN toward the other side. A stop of the process, which Docker sends at a stop or a restart of the
|
|
403
|
+
* container, closes each connection fully.
|
|
404
|
+
*/
|
|
405
|
+
export declare const DOCKER_PROXY_LINK: Machine;
|
|
406
|
+
//#endregion
|
|
340
407
|
//#region src/rabbit/amqplib.d.ts
|
|
341
408
|
/**
|
|
342
409
|
* This document is amqplib 2.2.0 on Node, for one connection to a broker of AMQP 0-9-1 and one channel
|