@mark1russell7/machines 0.3.7 → 0.3.9

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
@@ -45,8 +45,9 @@ The algebra reads these documents. It gives the closed form of each timer, the f
45
45
  | `HIKARICP_PGJDBC` | `hikaricp-pgjdbc` | HikariCP 7.1.0 over pgjdbc 42.7.13: one connection of a pool | driver | 41 implemented, 1 documented, 2 derived |
46
46
  | `PGBOUNCER_CLIENT` | `pgbouncer-client` | PgBouncer 1.26.1 in transaction pooling: one client connection | proxy | 29 implemented |
47
47
  | `PGBOUNCER_SERVER` | `pgbouncer-server` | PgBouncer 1.26.1 in transaction pooling: one server connection of a pool | proxy | 26 implemented |
48
+ | `PGPOOL_SESSION` | `pgpool-session` | Pgpool-II 4.7.3 with one backend: one session of a client in its child process | proxy | 15 implemented |
48
49
 
49
- Sixteen documents operate on Linux TCP (`over`). Linux TCP, conntrack, the Sentinel and the replication of mongod operate on no other document. The `conditions` of each document give the range where it holds, for example a range of kernels.
50
+ Seventeen documents operate on Linux TCP (`over`). Linux TCP, conntrack, the Sentinel and the replication of mongod operate on no other document. The `conditions` of each document give the range where it holds, for example a range of kernels.
50
51
 
51
52
  The package also gives these parts:
52
53
 
@@ -92,6 +93,18 @@ A change to the version of a system changes its sources too. Each fact of the do
92
93
 
93
94
  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.
94
95
 
96
+ ### 0.3.9
97
+
98
+ - **The SYN give-up of Linux TCP has its lateness.** Each wait of the SYN is a timer of the wheel, which rounds it up at its level. At the defaults and HZ 1000, the wait of 64 s can be 4.096 s late. Thus the give-up is 131 s to 137.08 s. At HZ 250 it is up to 5.056 s late. The lateness needs `@mark1russell7/algebra` 0.7.2.
99
+
100
+ ### 0.3.8
101
+
102
+ - **Pgpool-II 4.7.3, with one backend.** A new document, `pgpool-session`, from the C source at the tag V4_7_3. It is one session of a client in its child process, on the socket of the client:
103
+ - Between two queries, the child waits in one select() on the client and on the backend. Thus the close of either side ends the session at once.
104
+ - While a query is in flight, the child waits on the backend only, in steps of 30 s. After each step it writes a dummy ParameterStatus to the client. No timer of Pgpool-II ends the query.
105
+ - The FIN of the backend ends the session with FATAL XX000. A failed read of the backend and a failed connect to it ask for a failover (failover_on_backend_error).
106
+ - At the defaults, no timer bounds an idle session: client_idle_limit is 0. When it is set, the session ends one tick of 1 s after the limit.
107
+
95
108
  ### 0.3.7
96
109
 
97
110
  - **PgBouncer 1.26.1, in transaction pooling.** Two new documents, each from the C source at the tag pgbouncer_1_26_1. Each of them operates on one socket, on Linux TCP:
package/build/index.d.ts CHANGED
@@ -225,6 +225,27 @@ export declare const PGBOUNCER_CLIENT: Machine;
225
225
  */
226
226
  export declare const PGBOUNCER_SERVER: Machine;
227
227
  //#endregion
228
+ //#region src/pg/pgpool.d.ts
229
+ /**
230
+ * This document is Pgpool-II 4.7.3 with one backend, for one session of a client. It gives the states
231
+ * of the session in its child process, from the accept of the client to its close. It also gives the
232
+ * timers that act on it.
233
+ *
234
+ * A child process serves one client at a time. Between two queries it waits in one select() on the
235
+ * client and on the backend. Thus the close of either side ends the session at once. At the defaults
236
+ * no timer bounds an idle session: client_idle_limit is 0.
237
+ *
238
+ * While a query is in flight, the child waits on the backend only. It does not read the client, and
239
+ * no timer of Pgpool-II ends the query. Each 30 s of that wait, it writes a dummy ParameterStatus to
240
+ * the client, and a failed write ends the session.
241
+ *
242
+ * An error of a session reaches the client as an ErrorResponse, with the SQLSTATE of Pgpool-II or
243
+ * XX000. The FIN of the backend ends the session with a FATAL error. A failed read of the backend,
244
+ * for example a reset, and a failed connect to the backend ask the main process for a failover
245
+ * (failover_on_backend_error).
246
+ */
247
+ export declare const PGPOOL_SESSION: Machine;
248
+ //#endregion
228
249
  //#region src/pg/postgres-session.d.ts
229
250
  /**
230
251
  * This document is the hold of a PostgreSQL 17.11 backend on one client connection, over its TCP
package/build/index.js CHANGED
@@ -2194,10 +2194,19 @@ var linux_tcp_default = {
2194
2194
  "knobs": ["tcp_syn_retries", "tcp_syn_linear_timeouts"],
2195
2195
  "unit": "s"
2196
2196
  },
2197
+ "lateness": {
2198
+ "model": "linux.syn-giveup-lateness",
2199
+ "knobs": [
2200
+ "tcp_syn_retries",
2201
+ "tcp_syn_linear_timeouts",
2202
+ "hz"
2203
+ ],
2204
+ "unit": "s"
2205
+ },
2197
2206
  "arms": ["enter:SYN_SENT"],
2198
2207
  "cancels": ["rx.synack", "rx.rst"],
2199
2208
  "fires": "timer.syn.exhausted",
2200
- "note": "6.6: linear 1 s waits for the first tcp_syn_linear_timeouts retransmissions, then doubling; 131 s at the defaults"
2209
+ "note": "6.6: linear 1 s waits for the first tcp_syn_linear_timeouts retransmissions, then doubling; 131 s at the defaults. Each wait is a timer of the wheel, rounded up at its level: up to 6.08 s late in all at HZ 1000, because the wait of 64 s can be 4.096 s late"
2201
2210
  },
2202
2211
  "retransmit": {
2203
2212
  "duration": {
@@ -8354,6 +8363,424 @@ const PGBOUNCER_SERVER = machineSchema.parse({
8354
8363
  }
8355
8364
  });
8356
8365
  //#endregion
8366
+ //#region src/pg/pgpool.ts
8367
+ const PP = "V4_7_3";
8368
+ /**
8369
+ * This document is Pgpool-II 4.7.3 with one backend, for one session of a client. It gives the states
8370
+ * of the session in its child process, from the accept of the client to its close. It also gives the
8371
+ * timers that act on it.
8372
+ *
8373
+ * A child process serves one client at a time. Between two queries it waits in one select() on the
8374
+ * client and on the backend. Thus the close of either side ends the session at once. At the defaults
8375
+ * no timer bounds an idle session: client_idle_limit is 0.
8376
+ *
8377
+ * While a query is in flight, the child waits on the backend only. It does not read the client, and
8378
+ * no timer of Pgpool-II ends the query. Each 30 s of that wait, it writes a dummy ParameterStatus to
8379
+ * the client, and a failed write ends the session.
8380
+ *
8381
+ * An error of a session reaches the client as an ErrorResponse, with the SQLSTATE of Pgpool-II or
8382
+ * XX000. The FIN of the backend ends the session with a FATAL error. A failed read of the backend,
8383
+ * for example a reset, and a failed connect to the backend ask the main process for a failover
8384
+ * (failover_on_backend_error).
8385
+ */
8386
+ const PGPOOL_SESSION = machineSchema.parse({
8387
+ format: "mark1russell7.machine/1",
8388
+ id: "pgpool-session",
8389
+ title: "Pgpool-II 4.7.3 with one backend: one session of a client in its child process",
8390
+ layer: "proxy",
8391
+ version: "4.7.3",
8392
+ conditions: {
8393
+ pgpool: "4.7.3",
8394
+ backend_clustering_mode: "streaming_replication, the default, with one backend",
8395
+ client: "a PostgreSQL client over TCP, with no TLS",
8396
+ backend: "one PostgreSQL server"
8397
+ },
8398
+ sources: [
8399
+ {
8400
+ ref: `${PP} src/config/pool_config_variables.c:570-607, :1661-1761, :2003-2121, :2388-2396 the defaults: connection_cache on, failover_on_backend_error on, failover_on_backend_shutdown off, health_check_period 0, health_check_timeout 20 s, connect_timeout 10000 ms, num_init_children 32, child_life_time 300 s, client_idle_limit 0, connection_life_time 0, authentication_timeout 60 s, max_pool 4, backend_clustering_mode streaming_replication`,
8401
+ rung: "implemented"
8402
+ },
8403
+ {
8404
+ ref: `${PP} src/protocol/pool_connection_pool.c:849 and src/protocol/child.c:1789, :1981 each socket to the backend and to the client gets TCP_NODELAY. Only the watchdog sets SO_KEEPALIVE (src/watchdog/watchdog.c:961, :1089)`,
8405
+ rung: "implemented"
8406
+ },
8407
+ {
8408
+ ref: `${PP} src/protocol/child.c:163-516 do_child: wait for a client, check that a backend is up, connect or reuse the backend, then the loop of pool_process_query until the session ends`,
8409
+ rung: "implemented"
8410
+ },
8411
+ {
8412
+ ref: `${PP} src/protocol/child.c:617-632, :800, :1281-1310 authentication_timeout: an alarm over the read of the startup packet. Its expiry exits the child`,
8413
+ rung: "implemented"
8414
+ },
8415
+ {
8416
+ ref: `${PP} src/protocol/child.c:2016-2170 get_backend_connection: the startup packet, then a connection of the pool of the child for the same user, database and startup packet, else a new connect. With enable_pool_hba off, the backend does the authentication`,
8417
+ rung: "implemented"
8418
+ },
8419
+ {
8420
+ ref: `${PP} src/protocol/child.c:344-353, :1670-1691 child_life_time counts the 1 s timeouts of a child that waits for a client: it never ends a session`,
8421
+ rung: "implemented"
8422
+ },
8423
+ {
8424
+ ref: `${PP} src/protocol/pool_connection_pool.c:590-669 the connect to the backend is non-blocking, and one select() bounds it by connect_timeout. At 0 it has no bound`,
8425
+ rung: "implemented"
8426
+ },
8427
+ {
8428
+ ref: `${PP} src/protocol/pool_connection_pool.c:953-1012 a failed connect to the backend: with failover_on_backend_error, a request of failover, then FATAL 'failed to create a backend connection'`,
8429
+ rung: "implemented"
8430
+ },
8431
+ {
8432
+ ref: `${PP} src/protocol/pool_process_query.c:4867-5002 between two queries: one select() on the client and on each backend. With client_idle_limit, its timeout is 1 s, and more than client_idle_limit timeouts end the session with 57000`,
8433
+ rung: "implemented"
8434
+ },
8435
+ {
8436
+ ref: `${PP} src/protocol/pool_process_query.c:5004-5146 a backend that is readable between two queries: its error or its end is read at once`,
8437
+ rung: "implemented"
8438
+ },
8439
+ {
8440
+ ref: `${PP} src/protocol/pool_process_query.c:539-627 and src/context/pool_query_context.c:658-693, :877-911 each query waits for its backend in steps of 30 s. After each step with no data, a dummy ParameterStatus goes to the client, and a failed flush ends the session`,
8441
+ rung: "implemented"
8442
+ },
8443
+ {
8444
+ ref: `${PP} src/utils/pool_stream.c:1303-1387 pool_check_fd: one select() with the timeout of the step, or none`,
8445
+ rung: "implemented"
8446
+ },
8447
+ {
8448
+ ref: `${PP} src/utils/pool_stream.c:225-248 a failed read of the backend: with failover_on_backend_error, a request of failover, then the child exits`,
8449
+ rung: "implemented"
8450
+ },
8451
+ {
8452
+ ref: `${PP} src/utils/pool_stream.c:263-276 a read of 0 bytes from the backend, its FIN: FATAL 'unable to read data from DB node', and no failover`,
8453
+ rung: "implemented"
8454
+ },
8455
+ {
8456
+ ref: `${PP} src/utils/error/elog.c:1888-2007 an error of the session goes to the client as an ErrorResponse: its severity, the SQLSTATE of Pgpool-II or XX000, and the message`,
8457
+ rung: "implemented"
8458
+ }
8459
+ ],
8460
+ states: {
8461
+ "[none]": {
8462
+ initial: true,
8463
+ pseudo: true,
8464
+ note: "Before the child accepts the connection"
8465
+ },
8466
+ login: { note: "The read of the startup packet. The alarm of authentication_timeout runs" },
8467
+ connecting: { note: "The connect to the backend and its authentication, when the pool of the child has no connection for the user and the database. The select() of the connect is bounded by connect_timeout" },
8468
+ idle: { note: "Between two queries: one select() on the client and on the backend, thus a close of either side is read at once" },
8469
+ waiting: { note: "A query in flight: the child waits on the backend only, in steps of 30 s. It does not read the client" },
8470
+ ended: {
8471
+ final: true,
8472
+ note: "The child closed the client, after an ErrorResponse for an error, or the client went"
8473
+ }
8474
+ },
8475
+ events: {
8476
+ "local.accept": {
8477
+ kind: "local",
8478
+ note: "The child accepts the TCP connection"
8479
+ },
8480
+ "rx.startup": {
8481
+ kind: "rx",
8482
+ note: "The startup packet of the client"
8483
+ },
8484
+ "local.cached": {
8485
+ kind: "local",
8486
+ note: "The pool of the child has a connection for the user and the database: no connect"
8487
+ },
8488
+ "local.connected": {
8489
+ kind: "local",
8490
+ note: "The connect to the backend succeeds"
8491
+ },
8492
+ "rx.query": {
8493
+ kind: "rx",
8494
+ note: "The first packet of a query of the client"
8495
+ },
8496
+ "rx.ready-for-query": {
8497
+ kind: "rx",
8498
+ note: "The backend sends ReadyForQuery: the end of the query"
8499
+ },
8500
+ "backend.eof": {
8501
+ kind: "peer",
8502
+ note: "A read of the backend gets 0 bytes: its FIN"
8503
+ },
8504
+ "backend.error": {
8505
+ kind: "peer",
8506
+ note: "A read or a select() of the backend fails: a reset, or an error of the socket"
8507
+ },
8508
+ "frontend.eof": {
8509
+ kind: "peer",
8510
+ note: "The client closes its connection, or a write to it fails"
8511
+ },
8512
+ "timer.auth": {
8513
+ kind: "timer",
8514
+ note: "The alarm of authentication_timeout"
8515
+ },
8516
+ "timer.connect": {
8517
+ kind: "timer",
8518
+ note: "The select() of the connect to the backend times out"
8519
+ },
8520
+ "timer.idle": {
8521
+ kind: "timer",
8522
+ note: "More than client_idle_limit timeouts of 1 s of the select() between two queries"
8523
+ },
8524
+ "timer.probe": {
8525
+ kind: "timer",
8526
+ note: "A step of 30 s of the wait for the backend ends with no data"
8527
+ },
8528
+ "tx.error": {
8529
+ kind: "tx",
8530
+ note: "An ErrorResponse: its severity, the SQLSTATE of Pgpool-II or XX000, and the message"
8531
+ },
8532
+ "tx.probe": {
8533
+ kind: "tx",
8534
+ note: "A dummy ParameterStatus to the client: pgpool_dummy_param = pgpool_dummy_value"
8535
+ },
8536
+ "tx.failover": {
8537
+ kind: "local",
8538
+ note: "A request of failover for the backend to the main process"
8539
+ }
8540
+ },
8541
+ knobs: {
8542
+ authentication_timeout: {
8543
+ key: "pgpool authentication_timeout",
8544
+ scope: "proxy",
8545
+ unit: "s",
8546
+ default: 60,
8547
+ off: 0,
8548
+ note: "src/config/pool_config_variables.c:2102-2110"
8549
+ },
8550
+ connect_timeout: {
8551
+ key: "pgpool connect_timeout",
8552
+ scope: "proxy",
8553
+ unit: "ms",
8554
+ default: 1e4,
8555
+ off: 0,
8556
+ note: "src/config/pool_config_variables.c:1745-1761. It bounds the connect to the backend"
8557
+ },
8558
+ client_idle_limit: {
8559
+ key: "pgpool client_idle_limit",
8560
+ scope: "proxy",
8561
+ unit: "s",
8562
+ default: 0,
8563
+ off: 0,
8564
+ note: "src/config/pool_config_variables.c:2069-2077"
8565
+ },
8566
+ tick: {
8567
+ key: "the timeout of the select() between two queries when client_idle_limit is set",
8568
+ scope: "process",
8569
+ unit: "s",
8570
+ default: 1,
8571
+ note: "src/protocol/pool_process_query.c:4938-4947: a constant of the source, not a setting"
8572
+ },
8573
+ probe: {
8574
+ key: "the step of the wait for the backend of a query",
8575
+ scope: "process",
8576
+ unit: "s",
8577
+ default: 30,
8578
+ note: "src/protocol/pool_process_query.c:561: a constant of the source, not a setting"
8579
+ },
8580
+ slack: {
8581
+ key: "the lateness of the loop of the child for one step",
8582
+ scope: "process",
8583
+ unit: "ms",
8584
+ default: 10,
8585
+ note: "An assumption of this document, not a value of Pgpool-II: the child does each step in one process with no other work"
8586
+ }
8587
+ },
8588
+ timers: {
8589
+ authentication_timeout: {
8590
+ duration: {
8591
+ knob: "authentication_timeout",
8592
+ unit: "s"
8593
+ },
8594
+ lateness: {
8595
+ knob: "slack",
8596
+ unit: "ms"
8597
+ },
8598
+ arms: ["enter:login"],
8599
+ cancels: ["rx.startup"],
8600
+ fires: "timer.auth",
8601
+ note: "src/protocol/child.c:617-632, :1281-1310: alarm() in whole seconds"
8602
+ },
8603
+ connect_timeout: {
8604
+ duration: {
8605
+ knob: "connect_timeout",
8606
+ unit: "ms"
8607
+ },
8608
+ lateness: {
8609
+ knob: "slack",
8610
+ unit: "ms"
8611
+ },
8612
+ arms: ["enter:connecting"],
8613
+ cancels: ["local.connected", "backend.error"],
8614
+ fires: "timer.connect",
8615
+ note: "src/protocol/pool_connection_pool.c:645-669"
8616
+ },
8617
+ client_idle_limit: {
8618
+ duration: {
8619
+ expr: "client_idle_limit + tick",
8620
+ unit: "s"
8621
+ },
8622
+ lateness: {
8623
+ knob: "slack",
8624
+ unit: "ms"
8625
+ },
8626
+ arms: ["enter:idle"],
8627
+ cancels: ["rx.query"],
8628
+ fires: "timer.idle",
8629
+ note: "src/protocol/pool_process_query.c:4962-4976: each timeout of 1 s counts, and the count must exceed client_idle_limit, thus the session ends one tick after the limit. Each packet starts the count again. No bound at the defaults"
8630
+ },
8631
+ probe: {
8632
+ duration: {
8633
+ knob: "probe",
8634
+ unit: "s"
8635
+ },
8636
+ lateness: {
8637
+ knob: "slack",
8638
+ unit: "ms"
8639
+ },
8640
+ arms: ["enter:waiting"],
8641
+ cancels: ["rx.ready-for-query"],
8642
+ fires: "timer.probe",
8643
+ backoff: { resets: ["enter:waiting"] },
8644
+ note: "src/protocol/pool_process_query.c:558-595: each wait is 30 s, the same each time. It does not end the query: it checks the client"
8645
+ }
8646
+ },
8647
+ transitions: [
8648
+ {
8649
+ id: "pps.accept",
8650
+ from: "[none]",
8651
+ to: "login",
8652
+ on: "local.accept",
8653
+ timer: "authentication_timeout",
8654
+ source: "src/protocol/child.c:342-398"
8655
+ },
8656
+ {
8657
+ id: "pps.reuse",
8658
+ from: "login",
8659
+ to: "idle",
8660
+ on: "local.cached",
8661
+ guard: "the pool of the child has a connection for the user, the database and the same startup packet (connection_cache)",
8662
+ timer: "client_idle_limit",
8663
+ source: "src/protocol/child.c:2112-2166"
8664
+ },
8665
+ {
8666
+ id: "pps.connect",
8667
+ from: "login",
8668
+ to: "connecting",
8669
+ on: "rx.startup",
8670
+ guard: "no connection in the pool of the child",
8671
+ timer: "connect_timeout",
8672
+ source: "src/protocol/child.c:2153-2160, src/protocol/pool_connection_pool.c:907-955"
8673
+ },
8674
+ {
8675
+ id: "pps.connected",
8676
+ from: "connecting",
8677
+ to: "idle",
8678
+ on: "local.connected",
8679
+ timer: "client_idle_limit",
8680
+ source: "src/protocol/pool_connection_pool.c:1013-1019"
8681
+ },
8682
+ {
8683
+ id: "pps.connect-failed",
8684
+ from: "connecting",
8685
+ to: "ended",
8686
+ on: ["timer.connect", "backend.error"],
8687
+ errno: "XX000",
8688
+ emits: ["tx.failover", "tx.error"],
8689
+ note: "FATAL 'failed to create a backend connection', 'executing failover on backend'",
8690
+ source: "src/protocol/pool_connection_pool.c:953-969"
8691
+ },
8692
+ {
8693
+ id: "pps.auth-timed-out",
8694
+ from: "login",
8695
+ to: "ended",
8696
+ on: "timer.auth",
8697
+ timer: "authentication_timeout",
8698
+ note: "The child exits",
8699
+ source: "src/protocol/child.c:1281-1287"
8700
+ },
8701
+ {
8702
+ id: "pps.query",
8703
+ from: "idle",
8704
+ to: "waiting",
8705
+ on: "rx.query",
8706
+ timer: "probe",
8707
+ source: "src/context/pool_query_context.c:658-693, :877-911"
8708
+ },
8709
+ {
8710
+ id: "pps.reply",
8711
+ from: "waiting",
8712
+ to: "idle",
8713
+ on: "rx.ready-for-query",
8714
+ timer: "client_idle_limit",
8715
+ source: "src/protocol/pool_process_query.c:558-626"
8716
+ },
8717
+ {
8718
+ id: "pps.probe",
8719
+ from: "waiting",
8720
+ to: "waiting",
8721
+ on: "timer.probe",
8722
+ timer: "probe",
8723
+ emits: ["tx.probe"],
8724
+ note: "The dummy ParameterStatus, each 30 s of the wait",
8725
+ source: "src/protocol/pool_process_query.c:570-595"
8726
+ },
8727
+ {
8728
+ id: "pps.idle-timed-out",
8729
+ from: "idle",
8730
+ to: "ended",
8731
+ on: "timer.idle",
8732
+ timer: "client_idle_limit",
8733
+ errno: "57000",
8734
+ emits: ["tx.error"],
8735
+ note: "'child connection forced to terminate due to client_idle_limit:%d is reached'",
8736
+ source: "src/protocol/pool_process_query.c:4965-4976"
8737
+ },
8738
+ {
8739
+ id: "pps.backend-eof",
8740
+ from: ["idle", "waiting"],
8741
+ to: "ended",
8742
+ on: "backend.eof",
8743
+ errno: "XX000",
8744
+ emits: ["tx.error"],
8745
+ note: "FATAL 'unable to read data from DB node', 'EOF encountered with backend', with no request of failover",
8746
+ source: "src/utils/pool_stream.c:263-276, src/protocol/pool_process_query.c:5021-5146"
8747
+ },
8748
+ {
8749
+ id: "pps.backend-error",
8750
+ from: ["idle", "waiting"],
8751
+ to: "ended",
8752
+ on: "backend.error",
8753
+ emits: ["tx.failover"],
8754
+ note: "The child exits before it reports the error, thus the client gets the close only",
8755
+ source: "src/utils/pool_stream.c:225-248"
8756
+ },
8757
+ {
8758
+ id: "pps.gone",
8759
+ from: [
8760
+ "login",
8761
+ "idle",
8762
+ "waiting"
8763
+ ],
8764
+ to: "ended",
8765
+ on: "frontend.eof",
8766
+ note: "Between two queries the child reads the close at once. In a wait it finds it only at the write of a probe or of the reply",
8767
+ source: "src/protocol/pool_process_query.c:570-595, :4895-4933"
8768
+ }
8769
+ ],
8770
+ over: {
8771
+ machine: "systems.machine.linux-tcp",
8772
+ states: {
8773
+ login: "ESTABLISHED",
8774
+ connecting: "ESTABLISHED",
8775
+ idle: "ESTABLISHED",
8776
+ waiting: "ESTABLISHED"
8777
+ },
8778
+ sets: {},
8779
+ ends: "frontend.eof",
8780
+ note: "The socket of the client. It has TCP_NODELAY and no SO_KEEPALIVE. In a wait the child does not read it: the kernel takes its FIN, and Pgpool-II finds it at the next write"
8781
+ }
8782
+ });
8783
+ //#endregion
8357
8784
  //#region src/pg/postgres-session.ts
8358
8785
  const AT$1 = "postgresql REL_17_11 src";
8359
8786
  const DOC = "postgresql REL_17_11 doc/src/sgml";
@@ -10414,9 +10841,10 @@ const MACHINES = byId([
10414
10841
  POSTGRES_SESSION,
10415
10842
  HIKARICP_PGJDBC,
10416
10843
  PGBOUNCER_CLIENT,
10417
- PGBOUNCER_SERVER
10844
+ PGBOUNCER_SERVER,
10845
+ PGPOOL_SESSION
10418
10846
  ]);
10419
10847
  //#endregion
10420
- export { GO_TRANSPORT, HIKARICP_PGJDBC, IOREDIS_SENTINEL, IOREDIS_STATUS, LINUX_TCP, MACHINES, MANIFESTATIONS, MONGODB_NODE, MONGOD_REPL, MONGOD_SESSION, NF_CONNTRACK_TCP, NODE_HTTP_AGENT, NODE_HTTP_SERVER, NODE_POSTGRES, NODE_TIMER_EARLY, PGBOUNCER_CLIENT, PGBOUNCER_SERVER, POSTGRES_SESSION, PROCEDURES_WS_CLIENT, PROCEDURES_WS_SERVER, REDIS_CLIENT, SENTINEL, UNDICI_CLIENT, UNDICI_TICK_MS, goLateSeconds, goTimerLateness, nodeEarlySeconds, nodeLateSeconds, nodeTimerLateness, undiciFastEarly, undiciFastLateness };
10848
+ export { GO_TRANSPORT, HIKARICP_PGJDBC, IOREDIS_SENTINEL, IOREDIS_STATUS, LINUX_TCP, MACHINES, MANIFESTATIONS, MONGODB_NODE, MONGOD_REPL, MONGOD_SESSION, NF_CONNTRACK_TCP, NODE_HTTP_AGENT, NODE_HTTP_SERVER, NODE_POSTGRES, NODE_TIMER_EARLY, PGBOUNCER_CLIENT, PGBOUNCER_SERVER, PGPOOL_SESSION, POSTGRES_SESSION, PROCEDURES_WS_CLIENT, PROCEDURES_WS_SERVER, REDIS_CLIENT, SENTINEL, UNDICI_CLIENT, UNDICI_TICK_MS, goLateSeconds, goTimerLateness, nodeEarlySeconds, nodeLateSeconds, nodeTimerLateness, undiciFastEarly, undiciFastLateness };
10421
10849
 
10422
10850
  //# sourceMappingURL=index.js.map