@mark1russell7/machines 0.3.26 → 0.3.28
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 +15 -1
- package/build/index.d.ts +5 -2
- package/build/index.js +64 -8
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -65,7 +65,7 @@ The algebra reads these documents. It gives the closed form of each timer, the f
|
|
|
65
65
|
| `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 |
|
|
66
66
|
| `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 |
|
|
67
67
|
| `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 |
|
|
68
|
-
| `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 |
|
|
68
|
+
| `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 |
|
|
69
69
|
|
|
70
70
|
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.
|
|
71
71
|
|
|
@@ -115,6 +115,20 @@ A change to the version of a system changes its sources too. Each fact of the do
|
|
|
115
115
|
|
|
116
116
|
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.
|
|
117
117
|
|
|
118
|
+
### 0.3.28
|
|
119
|
+
|
|
120
|
+
- **The release of the pool counts from the last checkout** (`ztunnel-hbone`). Each checkout of a connection, new or used again, puts it back in the pool with a new release timer (`pool.rs` of ztunnel 1.31.3, lines 150–176 and 338–341). The end of a stream does not start a timer.
|
|
121
|
+
- The timer `release` arms at the new event `local.checkout`, through the new transition `zt.checkout`. Before, it armed at the end of the last stream, and the cell of a gap cited that wrong fact.
|
|
122
|
+
- The release only drops the reference of the pool. HTTP/2 closes the connection when no reference and no stream is left (lines 142–146), thus an open flow keeps it.
|
|
123
|
+
- The cell T15.border-off.77 reads it. A fix of a fact is a PATCH.
|
|
124
|
+
|
|
125
|
+
### 0.3.27
|
|
126
|
+
|
|
127
|
+
- **The SIGKILL at the end of the grace** (`ztunnel-hbone`). The document has the grace of the ztunnel pod as a knob (`grace`, 30 s from the chart) and a timer from SIGTERM.
|
|
128
|
+
- The drain ends at the first of the deadline and the grace. The transition `zt.deadline` has the guard `deadline < grace`, and the new transition `zt.killed` has the guard `grace <= deadline`.
|
|
129
|
+
- At the SIGKILL, the kernel closes each socket of ztunnel: a FIN, or a reset when bytes are unread. The source is the kubelet and the CRI of Kubernetes v1.37.0.
|
|
130
|
+
- The cells T15.border-off.85 and .86 read both timers. A new knob and a new timer are a feature, thus the version is a PATCH before 1.0.0.
|
|
131
|
+
|
|
118
132
|
### 0.3.26
|
|
119
133
|
|
|
120
134
|
- **ztunnel 1.31.3 for T15** (`ztunnel-hbone`). This new document is one HBONE connection of the ambient mesh, from the source at its tag.
|
package/build/index.d.ts
CHANGED
|
@@ -522,8 +522,11 @@ export declare const DOCKER_PROXY_LINK: Machine;
|
|
|
522
522
|
* 30 s later.
|
|
523
523
|
*
|
|
524
524
|
* At the end of a stream or of its connection, ztunnel shuts down the socket of the app. The app then
|
|
525
|
-
* gets a FIN.
|
|
526
|
-
*
|
|
525
|
+
* gets a FIN. The release of the pool closes a connection with no stream, 5 min after its last
|
|
526
|
+
* checkout. No timer closes a connection with an open stream, or an old one.
|
|
527
|
+
*
|
|
528
|
+
* At SIGTERM, ztunnel sends GOAWAY, and it ends what is left at its deadline of 25 s. A deadline longer than the grace of 30 s does not
|
|
529
|
+
* come. The kubelet sends SIGKILL to ztunnel at the end of the grace, and the kernel closes each socket.
|
|
527
530
|
*/
|
|
528
531
|
export declare const ZTUNNEL_HBONE: Machine;
|
|
529
532
|
//#endregion
|
package/build/index.js
CHANGED
|
@@ -15153,8 +15153,11 @@ const I = "istio 1.31.3";
|
|
|
15153
15153
|
* 30 s later.
|
|
15154
15154
|
*
|
|
15155
15155
|
* At the end of a stream or of its connection, ztunnel shuts down the socket of the app. The app then
|
|
15156
|
-
* gets a FIN.
|
|
15157
|
-
*
|
|
15156
|
+
* gets a FIN. The release of the pool closes a connection with no stream, 5 min after its last
|
|
15157
|
+
* checkout. No timer closes a connection with an open stream, or an old one.
|
|
15158
|
+
*
|
|
15159
|
+
* At SIGTERM, ztunnel sends GOAWAY, and it ends what is left at its deadline of 25 s. A deadline longer than the grace of 30 s does not
|
|
15160
|
+
* come. The kubelet sends SIGKILL to ztunnel at the end of the grace, and the kernel closes each socket.
|
|
15158
15161
|
*/
|
|
15159
15162
|
const ZTUNNEL_HBONE = machineSchema.parse({
|
|
15160
15163
|
format: "mark1russell7.machine/1",
|
|
@@ -15178,7 +15181,7 @@ const ZTUNNEL_HBONE = machineSchema.parse({
|
|
|
15178
15181
|
rung: "implemented"
|
|
15179
15182
|
},
|
|
15180
15183
|
{
|
|
15181
|
-
ref: `${Z} src/config.rs:75, :105, :795 and src/proxy/pool.rs:142-
|
|
15184
|
+
ref: `${Z} src/config.rs:75, :105, :795 and src/proxy/pool.rs:142-176, :338-341 POOL_UNUSED_RELEASE_TIMEOUT is 5 min. Each checkout of a connection, new or used again, puts it back in the pool with a new release timer: the timer counts from the last checkout, the start of the last flow. A release does not close the connection: HTTP/2 closes it when no reference and no stream is left`,
|
|
15182
15185
|
rung: "implemented"
|
|
15183
15186
|
},
|
|
15184
15187
|
{
|
|
@@ -15229,6 +15232,10 @@ const ZTUNNEL_HBONE = machineSchema.parse({
|
|
|
15229
15232
|
ref: `${Z} src/proxy/h2/server.rs:170-172 and src/proxy/outbound.rs:121 at SIGTERM the accept loops stop, and the HBONE server sends GOAWAY`,
|
|
15230
15233
|
rung: "implemented"
|
|
15231
15234
|
},
|
|
15235
|
+
{
|
|
15236
|
+
ref: `${I} manifests/charts/ztunnel/values.yaml:102 and templates/daemonset.yaml:215 the grace of the ztunnel pod is 30 s. kubernetes v1.37.0 pkg/kubelet/kuberuntime/kuberuntime_container.go:864-915, :1424-1427 the kubelet stops the container with that grace, and staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto:69-72 the runtime kills it at the end of the grace`,
|
|
15237
|
+
rung: "implemented"
|
|
15238
|
+
},
|
|
15232
15239
|
{
|
|
15233
15240
|
ref: `${Z} src/proxy/connection_manager.rs:133, :364-376 and src/proxy/inbound.rs:273-280 a CONNECT that a policy denies gets 401. At a change of a policy, ztunnel checks each open inbound connection again and closes each one that it now denies`,
|
|
15234
15241
|
rung: "implemented"
|
|
@@ -15265,6 +15272,10 @@ const ZTUNNEL_HBONE = machineSchema.parse({
|
|
|
15265
15272
|
kind: "local",
|
|
15266
15273
|
note: "The connect to 15008 fails: a reset, a refusal or a failed handshake"
|
|
15267
15274
|
},
|
|
15275
|
+
"local.checkout": {
|
|
15276
|
+
kind: "local",
|
|
15277
|
+
note: "A new flow of an app takes the connection from the pool: the first flow, or each later flow to the same key"
|
|
15278
|
+
},
|
|
15268
15279
|
"local.stream-end": {
|
|
15269
15280
|
kind: "local",
|
|
15270
15281
|
note: "The last stream on the connection ends"
|
|
@@ -15307,12 +15318,16 @@ const ZTUNNEL_HBONE = machineSchema.parse({
|
|
|
15307
15318
|
},
|
|
15308
15319
|
"timer.release": {
|
|
15309
15320
|
kind: "timer",
|
|
15310
|
-
note: "No
|
|
15321
|
+
note: "No checkout of the connection for the unused release timeout"
|
|
15311
15322
|
},
|
|
15312
15323
|
"timer.deadline": {
|
|
15313
15324
|
kind: "timer",
|
|
15314
15325
|
note: "The deadline of the drain after SIGTERM"
|
|
15315
15326
|
},
|
|
15327
|
+
"timer.grace": {
|
|
15328
|
+
kind: "timer",
|
|
15329
|
+
note: "The end of the grace of the pod after SIGTERM: the kubelet kills ztunnel"
|
|
15330
|
+
},
|
|
15316
15331
|
"tx.ping": {
|
|
15317
15332
|
kind: "tx",
|
|
15318
15333
|
note: "A PING of HTTP/2"
|
|
@@ -15370,6 +15385,13 @@ const ZTUNNEL_HBONE = machineSchema.parse({
|
|
|
15370
15385
|
default: 25,
|
|
15371
15386
|
note: "config.rs:810-827: unset, thus the grace of 30 s of the chart less 5 s"
|
|
15372
15387
|
},
|
|
15388
|
+
grace: {
|
|
15389
|
+
key: "terminationGracePeriodSeconds",
|
|
15390
|
+
scope: "pod",
|
|
15391
|
+
unit: "s",
|
|
15392
|
+
default: 30,
|
|
15393
|
+
note: "values.yaml:102 of the chart of ztunnel"
|
|
15394
|
+
},
|
|
15373
15395
|
keepidle: {
|
|
15374
15396
|
key: "the TCP keepalive idle of ztunnel",
|
|
15375
15397
|
scope: "process",
|
|
@@ -15455,10 +15477,9 @@ const ZTUNNEL_HBONE = machineSchema.parse({
|
|
|
15455
15477
|
knob: "slack",
|
|
15456
15478
|
unit: "s"
|
|
15457
15479
|
},
|
|
15458
|
-
arms: ["local.
|
|
15459
|
-
cancels: ["local.accept"],
|
|
15480
|
+
arms: ["local.checkout"],
|
|
15460
15481
|
fires: "timer.release",
|
|
15461
|
-
note: "pool.rs:
|
|
15482
|
+
note: "pool.rs:150-176, :338-341: from the last checkout. Each checkout starts a new timer, and the end of a stream does not start one"
|
|
15462
15483
|
},
|
|
15463
15484
|
deadline: {
|
|
15464
15485
|
duration: {
|
|
@@ -15472,6 +15493,19 @@ const ZTUNNEL_HBONE = machineSchema.parse({
|
|
|
15472
15493
|
arms: ["app.stop"],
|
|
15473
15494
|
fires: "timer.deadline",
|
|
15474
15495
|
note: "app.rs:391-399: from SIGTERM"
|
|
15496
|
+
},
|
|
15497
|
+
grace: {
|
|
15498
|
+
duration: {
|
|
15499
|
+
knob: "grace",
|
|
15500
|
+
unit: "s"
|
|
15501
|
+
},
|
|
15502
|
+
lateness: {
|
|
15503
|
+
knob: "slack",
|
|
15504
|
+
unit: "s"
|
|
15505
|
+
},
|
|
15506
|
+
arms: ["app.stop"],
|
|
15507
|
+
fires: "timer.grace",
|
|
15508
|
+
note: "kuberuntime_container.go:864-915 and api.proto:69-72: the grace of the pod from SIGTERM, then the kill"
|
|
15475
15509
|
}
|
|
15476
15510
|
},
|
|
15477
15511
|
realizes: {
|
|
@@ -15523,6 +15557,15 @@ const ZTUNNEL_HBONE = machineSchema.parse({
|
|
|
15523
15557
|
emits: ["tx.app-close"],
|
|
15524
15558
|
source: "proxy.rs:645, :695"
|
|
15525
15559
|
},
|
|
15560
|
+
{
|
|
15561
|
+
id: "zt.checkout",
|
|
15562
|
+
from: "ready",
|
|
15563
|
+
to: "ready",
|
|
15564
|
+
on: "local.checkout",
|
|
15565
|
+
timer: "release",
|
|
15566
|
+
note: "A new flow takes the connection as a new stream, and the pool starts a new release timer",
|
|
15567
|
+
source: "pool.rs:150-176, :338-341"
|
|
15568
|
+
},
|
|
15526
15569
|
{
|
|
15527
15570
|
id: "zt.ping",
|
|
15528
15571
|
from: "ready",
|
|
@@ -15576,7 +15619,8 @@ const ZTUNNEL_HBONE = machineSchema.parse({
|
|
|
15576
15619
|
timer: "release",
|
|
15577
15620
|
guard: "no stream is open and no other flow holds the connection",
|
|
15578
15621
|
emits: ["tx.close"],
|
|
15579
|
-
|
|
15622
|
+
note: "The pool drops its reference, and HTTP/2 closes the connection when no stream is left. Thus a flow that is open at the timer keeps the connection",
|
|
15623
|
+
source: "pool.rs:142-176, :338-341"
|
|
15580
15624
|
},
|
|
15581
15625
|
{
|
|
15582
15626
|
id: "zt.stop",
|
|
@@ -15602,10 +15646,22 @@ const ZTUNNEL_HBONE = machineSchema.parse({
|
|
|
15602
15646
|
to: "ended",
|
|
15603
15647
|
on: "timer.deadline",
|
|
15604
15648
|
timer: "deadline",
|
|
15649
|
+
guard: "deadline < grace",
|
|
15605
15650
|
emits: ["tx.close", "tx.app-fin"],
|
|
15606
15651
|
note: "ztunnel ends what is left itself, before the SIGKILL of the kubelet",
|
|
15607
15652
|
source: "app.rs:391-399, pool.rs:345-347"
|
|
15608
15653
|
},
|
|
15654
|
+
{
|
|
15655
|
+
id: "zt.killed",
|
|
15656
|
+
from: "draining",
|
|
15657
|
+
to: "ended",
|
|
15658
|
+
on: "timer.grace",
|
|
15659
|
+
timer: "grace",
|
|
15660
|
+
guard: "grace <= deadline",
|
|
15661
|
+
emits: ["tx.app-fin"],
|
|
15662
|
+
note: "The kubelet kills ztunnel at the end of the grace, before its deadline. The kernel closes each socket: a FIN, or a reset when bytes are unread",
|
|
15663
|
+
source: "kuberuntime_container.go:864-915, api.proto:69-72, tcp.c:2781-2807"
|
|
15664
|
+
},
|
|
15609
15665
|
{
|
|
15610
15666
|
id: "zt.del-workload",
|
|
15611
15667
|
from: [
|