@mark1russell7/machines 0.3.30 → 0.3.32

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 CHANGED
@@ -53,6 +53,8 @@ The algebra reads these documents. It gives the closed form of each timer, the f
53
53
  | `RABBITMQ_CONNECTION` | `rabbitmq-connection` | RabbitMQ 4.3.6: one connection of AMQP 0-9-1 on the broker | server | 14 implemented, 1 documented |
54
54
  | `ATEN_DETECTOR` | `aten` | aten 0.6.0: one node that the failure detector of another node of RabbitMQ watches | server | 7 implemented |
55
55
  | `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 |
56
+ | `KAFKA_PARTITION` | `kafka-partition` | Apache Kafka 4.3.2: one broker that leads one partition, its answers at each acks, its high watermark and the loss of its leadership | server | 24 implemented |
57
+ | `KAFKA_CONSUMER_GROUP` | `kafka-consumer-group` | Apache Kafka 4.3.2: one member of a consumer group under a process stop, its fence, the takeover of its partition and its commit after the stop | server | 14 implemented |
56
58
  | `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 | 27 implemented, 1 observed |
57
59
  | `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 |
58
60
  | `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 |
@@ -66,9 +68,13 @@ The algebra reads these documents. It gives the closed form of each timer, the f
66
68
  | `ISTIO_SIDECAR_OUTBOUND` | `istio-sidecar-outbound` | The client sidecar of Istio 1.31.3: Envoy 1.39.4 between the app and the mesh, its retries, an update of LDS and the SIGKILL | proxy | 31 implemented |
67
69
  | `ISTIO_SIDECAR_INBOUND` | `istio-sidecar-inbound` | The server sidecar of Istio 1.31.3: Envoy 1.39.4 between the mesh and the app, the policy, an update of LDS and the SIGKILL | proxy | 31 implemented |
68
70
  | `PILOT_AGENT` | `pilot-agent` | pilot-agent of Istio 1.31.3: the drain and the SIGKILL of the Envoy of a sidecar at the stop of its pod | proxy | 12 implemented |
71
+ | `DEADLINE_CALL` | `deadline-call` | One call of a program, with a deadline and retries after a capped exponential backoff | self | 1 derived |
72
+ | `KUBELET_READINESS` | `kubelet-readiness` | The readiness probe of the kubelet of Kubernetes 1.37.0, for one container | canary | 9 implemented, 1 documented |
69
73
  | `ZTUNNEL_HBONE` | `ztunnel-hbone` | ztunnel 1.31.3 in in-pod mode: one HBONE connection from a client pod to a server pod, its PING, its drain and the close of each flow of the app | proxy | 15 implemented, 3 derived |
70
74
 
71
- Thirty-three documents operate on Linux TCP (`over`). Eight documents operate on no other document. They are Linux TCP, conntrack, the Sentinel, the replication of mongod, aten, the member of Ra, the `RetryAgent` of undici and pilot-agent.
75
+ Thirty-four documents operate on Linux TCP (`over`). Nine documents operate on no other document. They are Linux TCP, conntrack, the Sentinel, the replication of mongod, aten, the member of Ra, the `RetryAgent` of undici, pilot-agent and the kubelet probe.
76
+
77
+ The call with a deadline is a generic client that the program configures, thus its knobs have no defaults. The readiness probe of the kubelet probes in sequence, thus its probes come at intervals of the longer of the period and the timeout.
72
78
 
73
79
  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.
74
80
 
package/build/index.d.ts CHANGED
@@ -1,4 +1,21 @@
1
1
  import { Expr, Machine } from "@mark1russell7/algebra";
2
+ //#region src/call.d.ts
3
+ /**
4
+ * This document is one call of a program on a socket of Linux TCP: a deadline for each try, and a
5
+ * retry after each deadline. It is a generic client that the program configures, as the
6
+ * `RetryAgent` of undici is configured with its options. No system sets its knobs, thus no knob has
7
+ * a default.
8
+ *
9
+ * - The deadline of a try is `timeout`. A timeout of 0 turns the deadline off, and the call waits
10
+ * for a layer below.
11
+ * - After a deadline, the program waits `backoff`, and the wait doubles at each retry up to
12
+ * `backoff_cap`. This backoff has no jitter.
13
+ * - The `retry` timer gives the time from the send of one try to the send of the next. Thus the sum of
14
+ * its first n waits is the start of try n + 1.
15
+ * - The count of retries is the count of firings of `retry`. The caller gives it.
16
+ */
17
+ export declare const DEADLINE_CALL: Machine;
18
+ //#endregion
2
19
  //#region src/grpc/grpc-go-server.d.ts
3
20
  /**
4
21
  * This document is a server of grpc-go v1.84.0 on its own listener: grpc.NewServer on net.Listen, at the
@@ -144,6 +161,67 @@ export declare const IOREDIS_STATUS: Machine;
144
161
  */
145
162
  export declare const MANIFESTATIONS: Readonly<Record<string, readonly string[]>>;
146
163
  //#endregion
164
+ //#region src/k8s/kubelet-readiness.d.ts
165
+ /**
166
+ * This document is the readiness probe of the kubelet of Kubernetes 1.37.0 for one container. Each
167
+ * fact comes from the source at the tag v1.37.0, with the file and the line. The defaults are a
168
+ * period of 10 s, a timeout of 1 s and a failure threshold of 3.
169
+ *
170
+ * - The worker probes once at its start, then once at each tick of a Go ticker of one period. The
171
+ * probe is synchronous. A Go ticker keeps one tick for a slow receiver, thus a probe that takes
172
+ * longer than a period starts the next probe at once. The interval is max(period, timeout).
173
+ * - A probe of a pod that stops to answer fails at its timeout. An HTTP probe that times out is a
174
+ * failure without an error, thus the kubelet does not try it again.
175
+ * - The result changes after `threshold` failures in a row. Thus the pod becomes unready at the
176
+ * timeout of probe `threshold`, counted from the first probe after the fault.
177
+ * - The first probe after the fault comes within one period. Thus the band is one period wide.
178
+ * - A tcpSocket probe passes on a stalled process, because its kernel accepts the connection.
179
+ *
180
+ * This document does not hold two delays of the start of a container. The probe waits for
181
+ * `initialDelaySeconds` after the start. A kubelet that started less than one period ago sleeps a
182
+ * random part of a period before its first probe.
183
+ */
184
+ export declare const KUBELET_READINESS: Machine;
185
+ //#endregion
186
+ //#region src/kafka/group.d.ts
187
+ /**
188
+ * This document is Apache Kafka 4.3.2, for one member of a consumer group that a process stop holds.
189
+ * It gives when the coordinator removes the member, and when another member gets its partition. It
190
+ * also gives the answer to a commit of the old offsets after the stop.
191
+ *
192
+ * In the consumer protocol the session is a setting of the broker. Each heartbeat starts the session
193
+ * timer again. The last heartbeat came up to one interval before the stop, thus the fence comes one
194
+ * session after the stop, less up to one interval. The other member takes the partition at one of its
195
+ * own heartbeats after the fence.
196
+ *
197
+ * A commit of the member after the fence gets UNKNOWN_MEMBER_ID, and the client throws
198
+ * CommitFailedException. The rejoin changes this. A member that polls after the fence joins again at
199
+ * epoch 0 and gets a new epoch. The commit check at the same epoch asks no question about who owns the
200
+ * partition. Thus the broker accepts a commit of the old offsets at the new epoch. That commit moves
201
+ * the committed offset back while another member owns the partition.
202
+ */
203
+ export declare const KAFKA_CONSUMER_GROUP: Machine;
204
+ //#endregion
205
+ //#region src/kafka/partition.d.ts
206
+ /**
207
+ * This document is Apache Kafka 4.3.2, for one broker that leads one partition, in KRaft mode. It
208
+ * gives what the broker answers at each `acks`, and how the high watermark moves. It also gives how
209
+ * the broker loses the leadership when a fault cuts it from the other brokers and the controller.
210
+ *
211
+ * With `acks=1` a broker answers after its own append. With `acks=all` the write waits in a purgatory
212
+ * until the high watermark passes it. The high watermark is the smallest log end of the maximal
213
+ * in-sync replicas. A leader that cannot reach the controller cannot shrink that set, thus its high
214
+ * watermark stays.
215
+ *
216
+ * The controller fences a broker when no heartbeat came for `broker.session.timeout.ms`, and it
217
+ * elects another leader. The cut broker is not told, and it has no timer that stops it. It stays a
218
+ * leader in its own view until the metadata of the change reaches it, after the cut lifts. It then
219
+ * becomes a follower, and it ends each write in the purgatory with NOT_LEADER_OR_FOLLOWER. It fetches
220
+ * from the new leader, which answers with the end of its log at its election. The old leader
221
+ * truncates to that offset, not to the high watermark.
222
+ */
223
+ export declare const KAFKA_PARTITION: Machine;
224
+ //#endregion
147
225
  //#region src/mongo/mongod-replication.d.ts
148
226
  /**
149
227
  * This document is the replication of mongod 9.0.4. It gives one member of a replica set, its view