@mark1russell7/machines 0.3.31 → 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 +2 -0
- package/build/index.d.ts +39 -0
- package/build/index.js +748 -4
- package/build/index.js.map +1 -1
- package/package.json +3 -3
package/build/index.js
CHANGED
|
@@ -3792,10 +3792,19 @@ var linux_tcp_default = {
|
|
|
3792
3792
|
],
|
|
3793
3793
|
"unit": "s"
|
|
3794
3794
|
},
|
|
3795
|
+
"early": {
|
|
3796
|
+
"model": "linux.syn-giveup-early",
|
|
3797
|
+
"knobs": [
|
|
3798
|
+
"tcp_syn_retries",
|
|
3799
|
+
"tcp_syn_linear_timeouts",
|
|
3800
|
+
"hz"
|
|
3801
|
+
],
|
|
3802
|
+
"unit": "s"
|
|
3803
|
+
},
|
|
3795
3804
|
"arms": ["enter:SYN_SENT"],
|
|
3796
3805
|
"cancels": ["rx.synack", "rx.rst"],
|
|
3797
3806
|
"fires": "timer.syn.exhausted",
|
|
3798
|
-
"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"
|
|
3807
|
+
"note": "6.6: linear 1 s waits for the first tcp_syn_linear_timeouts retransmissions, then doubling; 131 s at the defaults. A firing gives up by count, after tcp_syn_retries + tcp_syn_linear_timeouts retransmissions, or by time, after the budget of tcp_model_timeout for tcp_syn_retries alone: 7 s at tcp_syn_retries 2, before the count of 11 s. 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"
|
|
3799
3808
|
},
|
|
3800
3809
|
"syn_retransmit": {
|
|
3801
3810
|
"duration": {
|
|
@@ -5333,6 +5342,720 @@ const KUBELET_READINESS = machineSchema.parse({
|
|
|
5333
5342
|
}]
|
|
5334
5343
|
});
|
|
5335
5344
|
//#endregion
|
|
5345
|
+
//#region src/kafka/group.ts
|
|
5346
|
+
const GROUP = "kafka 4.3.2 group-coordinator/src/main/java/org/apache/kafka/coordinator/group";
|
|
5347
|
+
const INTERNALS = "kafka 4.3.2 clients/src/main/java/org/apache/kafka/clients/consumer/internals";
|
|
5348
|
+
/**
|
|
5349
|
+
* This document is Apache Kafka 4.3.2, for one member of a consumer group that a process stop holds.
|
|
5350
|
+
* It gives when the coordinator removes the member, and when another member gets its partition. It
|
|
5351
|
+
* also gives the answer to a commit of the old offsets after the stop.
|
|
5352
|
+
*
|
|
5353
|
+
* In the consumer protocol the session is a setting of the broker. Each heartbeat starts the session
|
|
5354
|
+
* timer again. The last heartbeat came up to one interval before the stop, thus the fence comes one
|
|
5355
|
+
* session after the stop, less up to one interval. The other member takes the partition at one of its
|
|
5356
|
+
* own heartbeats after the fence.
|
|
5357
|
+
*
|
|
5358
|
+
* A commit of the member after the fence gets UNKNOWN_MEMBER_ID, and the client throws
|
|
5359
|
+
* CommitFailedException. The rejoin changes this. A member that polls after the fence joins again at
|
|
5360
|
+
* epoch 0 and gets a new epoch. The commit check at the same epoch asks no question about who owns the
|
|
5361
|
+
* partition. Thus the broker accepts a commit of the old offsets at the new epoch. That commit moves
|
|
5362
|
+
* the committed offset back while another member owns the partition.
|
|
5363
|
+
*/
|
|
5364
|
+
const KAFKA_CONSUMER_GROUP = machineSchema.parse({
|
|
5365
|
+
format: "mark1russell7.machine/1",
|
|
5366
|
+
id: "kafka-consumer-group",
|
|
5367
|
+
title: "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",
|
|
5368
|
+
layer: "server",
|
|
5369
|
+
version: "4.3.2",
|
|
5370
|
+
conditions: {
|
|
5371
|
+
kafka: "4.3.2",
|
|
5372
|
+
mode: "KRaft, with one controller that is not a broker",
|
|
5373
|
+
group: "two members and two partitions, with one partition for each member before the stop",
|
|
5374
|
+
fault: "a stop of the process of one member, for a time, in the processing of one batch"
|
|
5375
|
+
},
|
|
5376
|
+
sources: [
|
|
5377
|
+
{
|
|
5378
|
+
ref: `${GROUP}/GroupCoordinatorConfig.java:184-204 the session of the consumer protocol is 45000, its minimum 45000, its maximum 60000, and the heartbeat interval is 5000`,
|
|
5379
|
+
rung: "implemented"
|
|
5380
|
+
},
|
|
5381
|
+
{
|
|
5382
|
+
ref: `${GROUP}/GroupCoordinatorConfig.java:592-598 the session is at or above its minimum and at or below its maximum, and the interval is below the session`,
|
|
5383
|
+
rung: "implemented"
|
|
5384
|
+
},
|
|
5385
|
+
{
|
|
5386
|
+
ref: `${GROUP}/GroupCoordinatorConfig.java:163-168 the classic session is between 6000 and 1800000, a value that the client sets`,
|
|
5387
|
+
rung: "implemented"
|
|
5388
|
+
},
|
|
5389
|
+
{
|
|
5390
|
+
ref: `${GROUP}/GroupMetadataManager.java:2475 each heartbeat schedules the session again, and :4775-4787 the timer fences the member`,
|
|
5391
|
+
rung: "implemented"
|
|
5392
|
+
},
|
|
5393
|
+
{
|
|
5394
|
+
ref: `${GROUP}/GroupMetadataManager.java:4687 the log line of a fence of the consumer protocol, and :7026 the line of a classic member`,
|
|
5395
|
+
rung: "implemented"
|
|
5396
|
+
},
|
|
5397
|
+
{
|
|
5398
|
+
ref: `${GROUP}/GroupMetadataManager.java:4358 the fence removes the member, raises the group epoch and cancels the timers of the member`,
|
|
5399
|
+
rung: "implemented"
|
|
5400
|
+
},
|
|
5401
|
+
{
|
|
5402
|
+
ref: `${GROUP}/GroupMetadataManager.java:3867 and :3900-3947 the next heartbeat of another member computes the target and reconciles`,
|
|
5403
|
+
rung: "implemented"
|
|
5404
|
+
},
|
|
5405
|
+
{
|
|
5406
|
+
ref: `${GROUP}/modern/consumer/ConsumerGroup.java:649-690 a commit of a member that is gone gets UNKNOWN_MEMBER_ID, and a commit at the epoch of the member passes with no check of who owns the partition`,
|
|
5407
|
+
rung: "implemented"
|
|
5408
|
+
},
|
|
5409
|
+
{
|
|
5410
|
+
ref: `${INTERNALS}/CommitRequestManager.java:826-832 a commit sends the member and the epoch, and :901-905 UNKNOWN_MEMBER_ID becomes CommitFailedException`,
|
|
5411
|
+
rung: "implemented"
|
|
5412
|
+
},
|
|
5413
|
+
{
|
|
5414
|
+
ref: `${INTERNALS}/AbstractHeartbeatRequestManager.java:427-442 a fenced epoch and an unknown member both fence the client`,
|
|
5415
|
+
rung: "implemented"
|
|
5416
|
+
},
|
|
5417
|
+
{
|
|
5418
|
+
ref: `${INTERNALS}/AbstractMembershipManager.java:388 a fenced client resets its epoch, signals the lost partitions, clears its assignment and joins again`,
|
|
5419
|
+
rung: "implemented"
|
|
5420
|
+
},
|
|
5421
|
+
{
|
|
5422
|
+
ref: `${INTERNALS}/ConsumerMembershipManager.java:367-374 with a listener, the lost callback waits for the poll of the application`,
|
|
5423
|
+
rung: "implemented"
|
|
5424
|
+
},
|
|
5425
|
+
{
|
|
5426
|
+
ref: `${INTERNALS}/AsyncKafkaConsumer.java:1006 a poll runs the callbacks, thus the rejoin follows the poll`,
|
|
5427
|
+
rung: "implemented"
|
|
5428
|
+
},
|
|
5429
|
+
{
|
|
5430
|
+
ref: `${INTERNALS}/ConsumerCoordinator.java:1312-1325 and :1433-1448 a classic commit with no generation, or with UNKNOWN_MEMBER_ID, gets CommitFailedException`,
|
|
5431
|
+
rung: "implemented"
|
|
5432
|
+
}
|
|
5433
|
+
],
|
|
5434
|
+
states: {
|
|
5435
|
+
stable: {
|
|
5436
|
+
initial: true,
|
|
5437
|
+
note: "the coordinator holds the member, and the member holds its partition"
|
|
5438
|
+
},
|
|
5439
|
+
fenced: { note: "the coordinator removed the member, and the stopped client does not know" },
|
|
5440
|
+
rejoined: { note: "the client joined again and has a new epoch, and another member can own its old partition" }
|
|
5441
|
+
},
|
|
5442
|
+
events: {
|
|
5443
|
+
"rx.heartbeat": {
|
|
5444
|
+
kind: "rx",
|
|
5445
|
+
note: "a heartbeat of this member reaches the coordinator"
|
|
5446
|
+
},
|
|
5447
|
+
"rx.commit": {
|
|
5448
|
+
kind: "rx",
|
|
5449
|
+
note: "a commit of the old offsets, at the epoch of the member"
|
|
5450
|
+
},
|
|
5451
|
+
"rx.commit-after-fence": {
|
|
5452
|
+
kind: "rx",
|
|
5453
|
+
note: "a commit of the old offsets from a member that the coordinator removed"
|
|
5454
|
+
},
|
|
5455
|
+
"local.poll": {
|
|
5456
|
+
kind: "local",
|
|
5457
|
+
note: "the application polls after the thaw"
|
|
5458
|
+
},
|
|
5459
|
+
"timer.session": {
|
|
5460
|
+
kind: "timer",
|
|
5461
|
+
note: "the session of the member ends in the coordinator"
|
|
5462
|
+
},
|
|
5463
|
+
"timer.takeover": {
|
|
5464
|
+
kind: "timer",
|
|
5465
|
+
note: "a heartbeat of the other member after the fence gives it the partition"
|
|
5466
|
+
}
|
|
5467
|
+
},
|
|
5468
|
+
knobs: {
|
|
5469
|
+
consumer_session_timeout: {
|
|
5470
|
+
key: "group.consumer.session.timeout.ms",
|
|
5471
|
+
scope: "broker",
|
|
5472
|
+
unit: "ms",
|
|
5473
|
+
default: 45e3,
|
|
5474
|
+
note: "GroupCoordinatorConfig.java:184"
|
|
5475
|
+
},
|
|
5476
|
+
consumer_heartbeat_interval: {
|
|
5477
|
+
key: "group.consumer.heartbeat.interval.ms",
|
|
5478
|
+
scope: "broker",
|
|
5479
|
+
unit: "ms",
|
|
5480
|
+
default: 5e3,
|
|
5481
|
+
note: "GroupCoordinatorConfig.java:196"
|
|
5482
|
+
},
|
|
5483
|
+
classic_session_timeout: {
|
|
5484
|
+
key: "session.timeout.ms",
|
|
5485
|
+
scope: "client",
|
|
5486
|
+
unit: "ms",
|
|
5487
|
+
default: 45e3,
|
|
5488
|
+
note: "a value of the client, between the limits at GroupCoordinatorConfig.java:163-168"
|
|
5489
|
+
},
|
|
5490
|
+
classic_heartbeat_interval: {
|
|
5491
|
+
key: "heartbeat.interval.ms",
|
|
5492
|
+
scope: "client",
|
|
5493
|
+
unit: "ms",
|
|
5494
|
+
default: 3e3,
|
|
5495
|
+
note: "a value of the client"
|
|
5496
|
+
},
|
|
5497
|
+
early_slack: {
|
|
5498
|
+
key: "the time from a heartbeat of the client to its arrival at the coordinator",
|
|
5499
|
+
scope: "broker",
|
|
5500
|
+
unit: "ms",
|
|
5501
|
+
default: 100,
|
|
5502
|
+
note: "an assumption of this document, not a value of Kafka"
|
|
5503
|
+
},
|
|
5504
|
+
late_slack: {
|
|
5505
|
+
key: "the time from the end of a session to the line of the fence, and to the takeover",
|
|
5506
|
+
scope: "broker",
|
|
5507
|
+
unit: "ms",
|
|
5508
|
+
default: 1e3,
|
|
5509
|
+
note: "an assumption of this document, not a value of Kafka: the timer wheel and the write of the coordinator"
|
|
5510
|
+
},
|
|
5511
|
+
takeover_slack: {
|
|
5512
|
+
key: "the time from a heartbeat of the other member to its report of the partition",
|
|
5513
|
+
scope: "broker",
|
|
5514
|
+
unit: "ms",
|
|
5515
|
+
default: 500,
|
|
5516
|
+
note: "an assumption of this document, not a value of Kafka: the reconcile and the next poll"
|
|
5517
|
+
}
|
|
5518
|
+
},
|
|
5519
|
+
timers: {
|
|
5520
|
+
fence: {
|
|
5521
|
+
duration: {
|
|
5522
|
+
expr: "consumer_session_timeout",
|
|
5523
|
+
unit: "ms"
|
|
5524
|
+
},
|
|
5525
|
+
early: {
|
|
5526
|
+
expr: "consumer_heartbeat_interval + early_slack",
|
|
5527
|
+
unit: "ms"
|
|
5528
|
+
},
|
|
5529
|
+
lateness: {
|
|
5530
|
+
expr: "late_slack",
|
|
5531
|
+
unit: "ms"
|
|
5532
|
+
},
|
|
5533
|
+
arms: ["enter:stable"],
|
|
5534
|
+
cancels: ["rx.heartbeat"],
|
|
5535
|
+
fires: "timer.session",
|
|
5536
|
+
note: "from the stop. It runs in the coordinator"
|
|
5537
|
+
},
|
|
5538
|
+
takeover: {
|
|
5539
|
+
duration: {
|
|
5540
|
+
expr: "consumer_session_timeout",
|
|
5541
|
+
unit: "ms"
|
|
5542
|
+
},
|
|
5543
|
+
early: {
|
|
5544
|
+
expr: "consumer_heartbeat_interval + early_slack",
|
|
5545
|
+
unit: "ms"
|
|
5546
|
+
},
|
|
5547
|
+
lateness: {
|
|
5548
|
+
expr: "consumer_heartbeat_interval + late_slack + takeover_slack",
|
|
5549
|
+
unit: "ms"
|
|
5550
|
+
},
|
|
5551
|
+
arms: ["enter:stable"],
|
|
5552
|
+
fires: "timer.takeover",
|
|
5553
|
+
note: "from the stop: the fence, then the next heartbeat of the other member and its next poll"
|
|
5554
|
+
},
|
|
5555
|
+
classic_fence: {
|
|
5556
|
+
duration: {
|
|
5557
|
+
expr: "classic_session_timeout",
|
|
5558
|
+
unit: "ms"
|
|
5559
|
+
},
|
|
5560
|
+
early: {
|
|
5561
|
+
expr: "classic_heartbeat_interval + early_slack",
|
|
5562
|
+
unit: "ms"
|
|
5563
|
+
},
|
|
5564
|
+
lateness: {
|
|
5565
|
+
expr: "late_slack",
|
|
5566
|
+
unit: "ms"
|
|
5567
|
+
},
|
|
5568
|
+
arms: ["enter:stable"],
|
|
5569
|
+
cancels: ["rx.heartbeat"],
|
|
5570
|
+
fires: "timer.session",
|
|
5571
|
+
note: "from the stop, for a classic member. It runs in the coordinator"
|
|
5572
|
+
}
|
|
5573
|
+
},
|
|
5574
|
+
transitions: [
|
|
5575
|
+
{
|
|
5576
|
+
id: "group.heartbeat",
|
|
5577
|
+
from: "stable",
|
|
5578
|
+
to: "stable",
|
|
5579
|
+
on: "rx.heartbeat",
|
|
5580
|
+
note: "the session starts again",
|
|
5581
|
+
source: "GroupMetadataManager.java:2475"
|
|
5582
|
+
},
|
|
5583
|
+
{
|
|
5584
|
+
id: "group.commit",
|
|
5585
|
+
from: "stable",
|
|
5586
|
+
to: "stable",
|
|
5587
|
+
on: "rx.commit",
|
|
5588
|
+
emits: ["reply"],
|
|
5589
|
+
note: "a stop below the session: the epoch is the same, and the commit passes",
|
|
5590
|
+
source: "ConsumerGroup.java:649-690"
|
|
5591
|
+
},
|
|
5592
|
+
{
|
|
5593
|
+
id: "group.fence",
|
|
5594
|
+
from: "stable",
|
|
5595
|
+
to: "fenced",
|
|
5596
|
+
on: "timer.session",
|
|
5597
|
+
emits: ["fence line"],
|
|
5598
|
+
note: "the coordinator removes the member and raises the group epoch",
|
|
5599
|
+
source: "GroupMetadataManager.java:4358, :4687, :4775-4787, :7026"
|
|
5600
|
+
},
|
|
5601
|
+
{
|
|
5602
|
+
id: "group.takeover",
|
|
5603
|
+
from: "fenced",
|
|
5604
|
+
to: "fenced",
|
|
5605
|
+
on: "timer.takeover",
|
|
5606
|
+
note: "the other member owns the partition and reads from the last committed offset",
|
|
5607
|
+
source: "GroupMetadataManager.java:3867, :3900-3947"
|
|
5608
|
+
},
|
|
5609
|
+
{
|
|
5610
|
+
id: "group.commit-fails",
|
|
5611
|
+
from: "fenced",
|
|
5612
|
+
to: "fenced",
|
|
5613
|
+
on: "rx.commit-after-fence",
|
|
5614
|
+
emits: ["UNKNOWN_MEMBER_ID"],
|
|
5615
|
+
note: "the client throws CommitFailedException",
|
|
5616
|
+
source: "ConsumerGroup.java:649-690, CommitRequestManager.java:901-905, ConsumerCoordinator.java:1433-1448"
|
|
5617
|
+
},
|
|
5618
|
+
{
|
|
5619
|
+
id: "group.rejoin",
|
|
5620
|
+
from: "fenced",
|
|
5621
|
+
to: "rejoined",
|
|
5622
|
+
on: "local.poll",
|
|
5623
|
+
note: "the client signals the lost partitions, clears its assignment and joins at epoch 0",
|
|
5624
|
+
source: "AbstractMembershipManager.java:388, ConsumerMembershipManager.java:367-374, AsyncKafkaConsumer.java:1006"
|
|
5625
|
+
},
|
|
5626
|
+
{
|
|
5627
|
+
id: "group.stale-commit",
|
|
5628
|
+
from: "rejoined",
|
|
5629
|
+
to: "rejoined",
|
|
5630
|
+
on: "rx.commit",
|
|
5631
|
+
emits: ["reply"],
|
|
5632
|
+
note: "the check at the same epoch asks no question about who owns the partition, thus the committed offset moves back",
|
|
5633
|
+
source: "ConsumerGroup.java:649-690"
|
|
5634
|
+
}
|
|
5635
|
+
]
|
|
5636
|
+
});
|
|
5637
|
+
//#endregion
|
|
5638
|
+
//#region src/kafka/partition.ts
|
|
5639
|
+
const CORE = "kafka 4.3.2 core/src/main/scala/kafka";
|
|
5640
|
+
const SERVER = "kafka 4.3.2 server/src/main/java/org/apache/kafka/server";
|
|
5641
|
+
const STORAGE = "kafka 4.3.2 storage/src/main/java/org/apache/kafka/storage/internals/log";
|
|
5642
|
+
const CONTROLLER = "kafka 4.3.2 metadata/src/main/java/org/apache/kafka/controller";
|
|
5643
|
+
const RAFT = "kafka 4.3.2 raft/src/main/java/org/apache/kafka/raft";
|
|
5644
|
+
const CLIENTS = "kafka 4.3.2 clients/src/main/java/org/apache/kafka/clients";
|
|
5645
|
+
/**
|
|
5646
|
+
* This document is Apache Kafka 4.3.2, for one broker that leads one partition, in KRaft mode. It
|
|
5647
|
+
* gives what the broker answers at each `acks`, and how the high watermark moves. It also gives how
|
|
5648
|
+
* the broker loses the leadership when a fault cuts it from the other brokers and the controller.
|
|
5649
|
+
*
|
|
5650
|
+
* With `acks=1` a broker answers after its own append. With `acks=all` the write waits in a purgatory
|
|
5651
|
+
* until the high watermark passes it. The high watermark is the smallest log end of the maximal
|
|
5652
|
+
* in-sync replicas. A leader that cannot reach the controller cannot shrink that set, thus its high
|
|
5653
|
+
* watermark stays.
|
|
5654
|
+
*
|
|
5655
|
+
* The controller fences a broker when no heartbeat came for `broker.session.timeout.ms`, and it
|
|
5656
|
+
* elects another leader. The cut broker is not told, and it has no timer that stops it. It stays a
|
|
5657
|
+
* leader in its own view until the metadata of the change reaches it, after the cut lifts. It then
|
|
5658
|
+
* becomes a follower, and it ends each write in the purgatory with NOT_LEADER_OR_FOLLOWER. It fetches
|
|
5659
|
+
* from the new leader, which answers with the end of its log at its election. The old leader
|
|
5660
|
+
* truncates to that offset, not to the high watermark.
|
|
5661
|
+
*/
|
|
5662
|
+
const KAFKA_PARTITION = machineSchema.parse({
|
|
5663
|
+
format: "mark1russell7.machine/1",
|
|
5664
|
+
id: "kafka-partition",
|
|
5665
|
+
title: "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",
|
|
5666
|
+
layer: "server",
|
|
5667
|
+
version: "4.3.2",
|
|
5668
|
+
conditions: {
|
|
5669
|
+
kafka: "4.3.2",
|
|
5670
|
+
mode: "KRaft, with one controller that is not a broker",
|
|
5671
|
+
partition: "one partition with a replica on each of three brokers, unclean leader election off",
|
|
5672
|
+
fault: "the leader is cut from the other brokers and the controller, and the client keeps its route to the leader"
|
|
5673
|
+
},
|
|
5674
|
+
sources: [
|
|
5675
|
+
{
|
|
5676
|
+
ref: `${CORE}/server/ReplicaManager.scala:1360-1366 a delayed produce only when requiredAcks is -1, and :911-915 each other write is answered at once`,
|
|
5677
|
+
rung: "implemented"
|
|
5678
|
+
},
|
|
5679
|
+
{
|
|
5680
|
+
ref: `${CORE}/server/ReplicaManager.scala:885-910 the delayed produce goes in the purgatory`,
|
|
5681
|
+
rung: "implemented"
|
|
5682
|
+
},
|
|
5683
|
+
{
|
|
5684
|
+
ref: `${SERVER}/purgatory/DelayedProduce.java:139-152 it completes on an error, or when each partition has enough replicas`,
|
|
5685
|
+
rung: "implemented"
|
|
5686
|
+
},
|
|
5687
|
+
{
|
|
5688
|
+
ref: `${CORE}/cluster/Partition.scala:947-983 acks=all completes when the high watermark passes the write, with NOT_ENOUGH_REPLICAS_AFTER_APPEND below the minimum, and NOT_LEADER_OR_FOLLOWER off the leader`,
|
|
5689
|
+
rung: "implemented"
|
|
5690
|
+
},
|
|
5691
|
+
{
|
|
5692
|
+
ref: `${CORE}/cluster/Partition.scala:1230-1238 an append with acks=all under min.insync.replicas fails, and each other append goes on`,
|
|
5693
|
+
rung: "implemented"
|
|
5694
|
+
},
|
|
5695
|
+
{
|
|
5696
|
+
ref: `${CORE}/cluster/Partition.scala:1010-1053 the high watermark is the smallest log end of the maximal in-sync replicas, and it does not move under the minimum`,
|
|
5697
|
+
rung: "implemented"
|
|
5698
|
+
},
|
|
5699
|
+
{
|
|
5700
|
+
ref: `${CORE}/cluster/Partition.scala:1089-1127 and :1155-1165 the shrink of the in-sync replicas`,
|
|
5701
|
+
rung: "implemented"
|
|
5702
|
+
},
|
|
5703
|
+
{
|
|
5704
|
+
ref: `${CORE}/cluster/Partition.scala:1636-1659 a shrink is pending until the controller commits it, and ${SERVER}/partition/PendingShrinkIsr.java:36-42 the maximal in-sync replicas stay the committed ones`,
|
|
5705
|
+
rung: "implemented"
|
|
5706
|
+
},
|
|
5707
|
+
{
|
|
5708
|
+
ref: `${SERVER}/config/ReplicationConfigs.java:55 replica.lag.time.max.ms is 30000`,
|
|
5709
|
+
rung: "implemented"
|
|
5710
|
+
},
|
|
5711
|
+
{
|
|
5712
|
+
ref: `${RAFT}/KRaftConfigs.java:40 broker.heartbeat.interval.ms is 2000, and :44 broker.session.timeout.ms is 9000`,
|
|
5713
|
+
rung: "implemented"
|
|
5714
|
+
},
|
|
5715
|
+
{
|
|
5716
|
+
ref: `${CONTROLLER}/BrokerHeartbeatTracker.java:99-121 and :131-133 a broker expires when no heartbeat came in the session timeout`,
|
|
5717
|
+
rung: "implemented"
|
|
5718
|
+
},
|
|
5719
|
+
{
|
|
5720
|
+
ref: `${CONTROLLER}/QuorumController.java:1659-1660 the controller looks for one stale broker each max(1 ms, session / 8), and :1672-1675 repeats`,
|
|
5721
|
+
rung: "implemented"
|
|
5722
|
+
},
|
|
5723
|
+
{
|
|
5724
|
+
ref: `${CONTROLLER}/ReplicationControlManager.java:1769-1797 and :2110-2112 it fences the broker and moves each of its leaderships, and PartitionChangeBuilder.java:256-267 takes the first valid replica in replica order`,
|
|
5725
|
+
rung: "implemented"
|
|
5726
|
+
},
|
|
5727
|
+
{
|
|
5728
|
+
ref: `${SERVER}/BrokerLifecycleManager.java:601-604 and :619-624 a broker that gets no heartbeat reply schedules the next heartbeat, and it stops nothing`,
|
|
5729
|
+
rung: "implemented"
|
|
5730
|
+
},
|
|
5731
|
+
{
|
|
5732
|
+
ref: `${RAFT}/QuorumConfig.java:83 the fetch timeout is 2000, and :104 the retry backoff is 20`,
|
|
5733
|
+
rung: "implemented"
|
|
5734
|
+
},
|
|
5735
|
+
{
|
|
5736
|
+
ref: `${CORE}/raft/KafkaRaftManager.scala:236-237 the reconnect backoff of the raft client is 50 to 500 ms, and :249-251 its setup timeouts are the settings of the broker`,
|
|
5737
|
+
rung: "implemented"
|
|
5738
|
+
},
|
|
5739
|
+
{
|
|
5740
|
+
ref: `${CLIENTS}/ClusterConnectionStates.java:41 and :43 a backoff and a setup timeout take a jitter of 0.2, and :372-379 a setup that fails doubles the timeout`,
|
|
5741
|
+
rung: "implemented"
|
|
5742
|
+
},
|
|
5743
|
+
{
|
|
5744
|
+
ref: `kafka 4.3.2 server-common/src/main/java/org/apache/kafka/server/config/ServerConfigs.java:71-77 socket.connection.setup.timeout.ms on a broker`,
|
|
5745
|
+
rung: "implemented"
|
|
5746
|
+
},
|
|
5747
|
+
{
|
|
5748
|
+
ref: `${CLIENTS}/CommonClientConfigs.java:139 and :144 socket.connection.setup.timeout.ms is 10000, and its maximum is 30000`,
|
|
5749
|
+
rung: "implemented"
|
|
5750
|
+
},
|
|
5751
|
+
{
|
|
5752
|
+
ref: `${CORE}/server/ReplicaManager.scala:2448-2544 the delta of a follower: makeFollower at :2472, a new fetcher at :2535, and each delayed write ends at :2539`,
|
|
5753
|
+
rung: "implemented"
|
|
5754
|
+
},
|
|
5755
|
+
{
|
|
5756
|
+
ref: `${CORE}/cluster/Partition.scala:1383-1413 a leader answers a fetch of an older epoch with the diverging epoch, and ${CORE}/server/AbstractFetcherThread.scala:603-641 the follower truncates to the end of that epoch`,
|
|
5757
|
+
rung: "implemented"
|
|
5758
|
+
},
|
|
5759
|
+
{
|
|
5760
|
+
ref: `${CORE}/cluster/Partition.scala:635-649 makeLeader, and :694-743 makeFollower`,
|
|
5761
|
+
rung: "implemented"
|
|
5762
|
+
},
|
|
5763
|
+
{
|
|
5764
|
+
ref: `${STORAGE}/UnifiedLog.java:1411-1421 and :1261-1268 an idempotent batch that repeats is not appended, and the answer gives its first offset`,
|
|
5765
|
+
rung: "implemented"
|
|
5766
|
+
},
|
|
5767
|
+
{
|
|
5768
|
+
ref: `${STORAGE}/ProducerStateEntry.java:35 and :128-135 the broker keeps the last 5 batches of each producer, and a repeat has their exact range of sequence numbers`,
|
|
5769
|
+
rung: "implemented"
|
|
5770
|
+
}
|
|
5771
|
+
],
|
|
5772
|
+
states: {
|
|
5773
|
+
leader: {
|
|
5774
|
+
initial: true,
|
|
5775
|
+
note: "the controller and the broker agree that the broker leads"
|
|
5776
|
+
},
|
|
5777
|
+
deposed: { note: "the controller moved the leadership, and the broker does not know. It appends each write. It answers acks=1, and acks=all waits, because no fetch reaches it and its high watermark stays" },
|
|
5778
|
+
follower: { note: "the broker fetches from the new leader" }
|
|
5779
|
+
},
|
|
5780
|
+
events: {
|
|
5781
|
+
"rx.produce-1": {
|
|
5782
|
+
kind: "rx",
|
|
5783
|
+
note: "a write with acks=1"
|
|
5784
|
+
},
|
|
5785
|
+
"rx.produce-all": {
|
|
5786
|
+
kind: "rx",
|
|
5787
|
+
note: "a write with acks=all, with enough in-sync replicas"
|
|
5788
|
+
},
|
|
5789
|
+
"rx.produce-all-short": {
|
|
5790
|
+
kind: "rx",
|
|
5791
|
+
note: "a write with acks=all, under min.insync.replicas"
|
|
5792
|
+
},
|
|
5793
|
+
"rx.produce-repeat": {
|
|
5794
|
+
kind: "rx",
|
|
5795
|
+
note: "an idempotent batch with the sequence numbers of one of the last 5 batches of its producer"
|
|
5796
|
+
},
|
|
5797
|
+
"rx.fetch": {
|
|
5798
|
+
kind: "rx",
|
|
5799
|
+
note: "a fetch of a follower"
|
|
5800
|
+
},
|
|
5801
|
+
"rx.heartbeat": {
|
|
5802
|
+
kind: "rx",
|
|
5803
|
+
note: "a heartbeat of this broker reaches the controller"
|
|
5804
|
+
},
|
|
5805
|
+
"local.lift": {
|
|
5806
|
+
kind: "local",
|
|
5807
|
+
note: "the cut lifts"
|
|
5808
|
+
},
|
|
5809
|
+
"timer.lag": {
|
|
5810
|
+
kind: "timer",
|
|
5811
|
+
note: "a follower did not catch up in replica.lag.time.max.ms"
|
|
5812
|
+
},
|
|
5813
|
+
"timer.fence": {
|
|
5814
|
+
kind: "timer",
|
|
5815
|
+
note: "the controller finds the session of the broker expired"
|
|
5816
|
+
},
|
|
5817
|
+
"timer.metadata": {
|
|
5818
|
+
kind: "timer",
|
|
5819
|
+
note: "the metadata of the change reaches the broker"
|
|
5820
|
+
},
|
|
5821
|
+
"rx.diverging-epoch": {
|
|
5822
|
+
kind: "rx",
|
|
5823
|
+
note: "the new leader answers a fetch with the end of the old epoch"
|
|
5824
|
+
},
|
|
5825
|
+
"rx.elected": {
|
|
5826
|
+
kind: "rx",
|
|
5827
|
+
note: "the metadata names this broker as the leader again"
|
|
5828
|
+
}
|
|
5829
|
+
},
|
|
5830
|
+
knobs: {
|
|
5831
|
+
broker_heartbeat_interval: {
|
|
5832
|
+
key: "broker.heartbeat.interval.ms",
|
|
5833
|
+
scope: "broker",
|
|
5834
|
+
unit: "ms",
|
|
5835
|
+
default: 2e3,
|
|
5836
|
+
note: "KRaftConfigs.java:40"
|
|
5837
|
+
},
|
|
5838
|
+
broker_session_timeout: {
|
|
5839
|
+
key: "broker.session.timeout.ms",
|
|
5840
|
+
scope: "broker",
|
|
5841
|
+
unit: "ms",
|
|
5842
|
+
default: 9e3,
|
|
5843
|
+
note: "KRaftConfigs.java:44"
|
|
5844
|
+
},
|
|
5845
|
+
replica_lag_time_max: {
|
|
5846
|
+
key: "replica.lag.time.max.ms",
|
|
5847
|
+
scope: "broker",
|
|
5848
|
+
unit: "ms",
|
|
5849
|
+
default: 3e4,
|
|
5850
|
+
note: "ReplicationConfigs.java:55"
|
|
5851
|
+
},
|
|
5852
|
+
socket_connection_setup_timeout: {
|
|
5853
|
+
key: "socket.connection.setup.timeout.ms",
|
|
5854
|
+
scope: "broker",
|
|
5855
|
+
unit: "ms",
|
|
5856
|
+
default: 1e4,
|
|
5857
|
+
note: "CommonClientConfigs.java:139"
|
|
5858
|
+
},
|
|
5859
|
+
raft_reconnect_backoff_max: {
|
|
5860
|
+
key: "the largest reconnect backoff of the raft client",
|
|
5861
|
+
scope: "build",
|
|
5862
|
+
unit: "ms",
|
|
5863
|
+
default: 500,
|
|
5864
|
+
note: "KafkaRaftManager.scala:237"
|
|
5865
|
+
},
|
|
5866
|
+
connection_jitter: {
|
|
5867
|
+
key: "the jitter of a setup timeout and of a backoff",
|
|
5868
|
+
scope: "build",
|
|
5869
|
+
unit: "count",
|
|
5870
|
+
default: .2,
|
|
5871
|
+
note: "ClusterConnectionStates.java:41, :43"
|
|
5872
|
+
},
|
|
5873
|
+
slack: {
|
|
5874
|
+
key: "the round trips and the steps from the first connect to the publish of the metadata",
|
|
5875
|
+
scope: "broker",
|
|
5876
|
+
unit: "ms",
|
|
5877
|
+
default: 100,
|
|
5878
|
+
note: "an assumption of this document, not a value of Kafka: the version request, a fetch, and the publish of the batch"
|
|
5879
|
+
}
|
|
5880
|
+
},
|
|
5881
|
+
timers: {
|
|
5882
|
+
replica_lag: {
|
|
5883
|
+
duration: {
|
|
5884
|
+
expr: "replica_lag_time_max",
|
|
5885
|
+
unit: "ms"
|
|
5886
|
+
},
|
|
5887
|
+
arms: ["enter:leader"],
|
|
5888
|
+
cancels: ["rx.fetch"],
|
|
5889
|
+
fires: "timer.lag",
|
|
5890
|
+
note: "the first follower that lags. The broker asks the controller to shrink, and a cut broker gets no answer"
|
|
5891
|
+
},
|
|
5892
|
+
fence: {
|
|
5893
|
+
duration: {
|
|
5894
|
+
expr: "broker_session_timeout",
|
|
5895
|
+
unit: "ms"
|
|
5896
|
+
},
|
|
5897
|
+
early: {
|
|
5898
|
+
expr: "broker_heartbeat_interval",
|
|
5899
|
+
unit: "ms"
|
|
5900
|
+
},
|
|
5901
|
+
lateness: {
|
|
5902
|
+
expr: "max(1, broker_session_timeout / 8)",
|
|
5903
|
+
unit: "ms"
|
|
5904
|
+
},
|
|
5905
|
+
arms: ["enter:leader"],
|
|
5906
|
+
cancels: ["rx.heartbeat"],
|
|
5907
|
+
fires: "timer.fence",
|
|
5908
|
+
note: "from the fault. It runs in the controller"
|
|
5909
|
+
},
|
|
5910
|
+
step_down: {
|
|
5911
|
+
duration: {
|
|
5912
|
+
const: 0,
|
|
5913
|
+
unit: "ms"
|
|
5914
|
+
},
|
|
5915
|
+
lateness: {
|
|
5916
|
+
expr: "socket_connection_setup_timeout * (1 + connection_jitter) + raft_reconnect_backoff_max * (1 + connection_jitter) + slack",
|
|
5917
|
+
unit: "ms"
|
|
5918
|
+
},
|
|
5919
|
+
arms: ["local.lift"],
|
|
5920
|
+
fires: "timer.metadata",
|
|
5921
|
+
note: "from the lift. No timer of Kafka: the longest wait of the raft client for its next fetch from the controller. A hold above the fetch timeout has no fetch in flight at the lift"
|
|
5922
|
+
}
|
|
5923
|
+
},
|
|
5924
|
+
transitions: [
|
|
5925
|
+
{
|
|
5926
|
+
id: "kafka.append-1",
|
|
5927
|
+
from: "leader",
|
|
5928
|
+
to: "leader",
|
|
5929
|
+
on: "rx.produce-1",
|
|
5930
|
+
emits: ["reply"],
|
|
5931
|
+
note: "the reply follows the local append",
|
|
5932
|
+
source: "ReplicaManager.scala:911-915, :1360-1366"
|
|
5933
|
+
},
|
|
5934
|
+
{
|
|
5935
|
+
id: "kafka.append-all",
|
|
5936
|
+
from: "leader",
|
|
5937
|
+
to: "leader",
|
|
5938
|
+
on: "rx.produce-all",
|
|
5939
|
+
note: "the write waits in the purgatory",
|
|
5940
|
+
source: "ReplicaManager.scala:885-910, DelayedProduce.java:139-152"
|
|
5941
|
+
},
|
|
5942
|
+
{
|
|
5943
|
+
id: "kafka.refuse",
|
|
5944
|
+
from: "leader",
|
|
5945
|
+
to: "leader",
|
|
5946
|
+
on: "rx.produce-all-short",
|
|
5947
|
+
emits: ["NOT_ENOUGH_REPLICAS"],
|
|
5948
|
+
source: "Partition.scala:1230-1238"
|
|
5949
|
+
},
|
|
5950
|
+
{
|
|
5951
|
+
id: "kafka.repeat",
|
|
5952
|
+
from: "leader",
|
|
5953
|
+
to: "leader",
|
|
5954
|
+
on: "rx.produce-repeat",
|
|
5955
|
+
emits: ["reply"],
|
|
5956
|
+
note: "the log does not change, and the reply gives the first offset",
|
|
5957
|
+
source: "UnifiedLog.java:1411-1421, ProducerStateEntry.java:128-135"
|
|
5958
|
+
},
|
|
5959
|
+
{
|
|
5960
|
+
id: "kafka.fetch",
|
|
5961
|
+
from: "leader",
|
|
5962
|
+
to: "leader",
|
|
5963
|
+
on: "rx.fetch",
|
|
5964
|
+
emits: ["reply"],
|
|
5965
|
+
note: "the high watermark moves, and each write that it passes completes",
|
|
5966
|
+
source: "Partition.scala:947-983, :1010-1053"
|
|
5967
|
+
},
|
|
5968
|
+
{
|
|
5969
|
+
id: "kafka.heartbeat",
|
|
5970
|
+
from: "leader",
|
|
5971
|
+
to: "leader",
|
|
5972
|
+
on: "rx.heartbeat",
|
|
5973
|
+
source: "BrokerHeartbeatTracker.java:99-121"
|
|
5974
|
+
},
|
|
5975
|
+
{
|
|
5976
|
+
id: "kafka.lift-early",
|
|
5977
|
+
from: "leader",
|
|
5978
|
+
to: "leader",
|
|
5979
|
+
on: "local.lift",
|
|
5980
|
+
note: "a hold that ends before the fence: the heartbeats go on, and the leadership stays",
|
|
5981
|
+
source: "BrokerLifecycleManager.java:601-604"
|
|
5982
|
+
},
|
|
5983
|
+
{
|
|
5984
|
+
id: "kafka.shrink-pending",
|
|
5985
|
+
from: "leader",
|
|
5986
|
+
to: "leader",
|
|
5987
|
+
on: "timer.lag",
|
|
5988
|
+
note: "the shrink stays pending: the maximal in-sync replicas keep each follower",
|
|
5989
|
+
source: "Partition.scala:1636-1659, PendingShrinkIsr.java:36-42"
|
|
5990
|
+
},
|
|
5991
|
+
{
|
|
5992
|
+
id: "kafka.fenced",
|
|
5993
|
+
from: "leader",
|
|
5994
|
+
to: "deposed",
|
|
5995
|
+
on: "timer.fence",
|
|
5996
|
+
note: "the first valid replica in replica order leads, with the log end that it has",
|
|
5997
|
+
source: "BrokerHeartbeatTracker.java:131-133, QuorumController.java:1659-1660, ReplicationControlManager.java:1769-1797, PartitionChangeBuilder.java:256-267"
|
|
5998
|
+
},
|
|
5999
|
+
{
|
|
6000
|
+
id: "kafka.deposed-append-1",
|
|
6001
|
+
from: "deposed",
|
|
6002
|
+
to: "deposed",
|
|
6003
|
+
on: "rx.produce-1",
|
|
6004
|
+
emits: ["reply"],
|
|
6005
|
+
note: "the broker has no check of its own fence",
|
|
6006
|
+
source: "ReplicaManager.scala:911-915, BrokerLifecycleManager.java:619-624"
|
|
6007
|
+
},
|
|
6008
|
+
{
|
|
6009
|
+
id: "kafka.deposed-append-all",
|
|
6010
|
+
from: "deposed",
|
|
6011
|
+
to: "deposed",
|
|
6012
|
+
on: "rx.produce-all",
|
|
6013
|
+
note: "the write waits: the high watermark stays",
|
|
6014
|
+
source: "Partition.scala:969, :1028-1032"
|
|
6015
|
+
},
|
|
6016
|
+
{
|
|
6017
|
+
id: "kafka.deposed-shrink",
|
|
6018
|
+
from: "deposed",
|
|
6019
|
+
to: "deposed",
|
|
6020
|
+
on: "timer.lag",
|
|
6021
|
+
note: "the shrink stays pending",
|
|
6022
|
+
source: "Partition.scala:1636-1659"
|
|
6023
|
+
},
|
|
6024
|
+
{
|
|
6025
|
+
id: "kafka.deposed-lift",
|
|
6026
|
+
from: "deposed",
|
|
6027
|
+
to: "deposed",
|
|
6028
|
+
on: "local.lift",
|
|
6029
|
+
note: "the wait for the metadata starts",
|
|
6030
|
+
source: "KafkaRaftManager.scala:236-237, :249-251"
|
|
6031
|
+
},
|
|
6032
|
+
{
|
|
6033
|
+
id: "kafka.step-down",
|
|
6034
|
+
from: "deposed",
|
|
6035
|
+
to: "follower",
|
|
6036
|
+
on: "timer.metadata",
|
|
6037
|
+
emits: ["NOT_LEADER_OR_FOLLOWER"],
|
|
6038
|
+
note: "each write in the purgatory ends, and the producer sends it to the new leader",
|
|
6039
|
+
source: "ReplicaManager.scala:2448-2544, Partition.scala:694-743"
|
|
6040
|
+
},
|
|
6041
|
+
{
|
|
6042
|
+
id: "kafka.truncate",
|
|
6043
|
+
from: "follower",
|
|
6044
|
+
to: "follower",
|
|
6045
|
+
on: "rx.diverging-epoch",
|
|
6046
|
+
note: "the log ends at the end of the new leader's log at its election",
|
|
6047
|
+
source: "Partition.scala:1383-1413, AbstractFetcherThread.scala:603-641"
|
|
6048
|
+
},
|
|
6049
|
+
{
|
|
6050
|
+
id: "kafka.elected",
|
|
6051
|
+
from: "follower",
|
|
6052
|
+
to: "leader",
|
|
6053
|
+
on: "rx.elected",
|
|
6054
|
+
source: "Partition.scala:635-649"
|
|
6055
|
+
}
|
|
6056
|
+
]
|
|
6057
|
+
});
|
|
6058
|
+
//#endregion
|
|
5336
6059
|
//#region src/mongo/mongod-replication.ts
|
|
5337
6060
|
const AT$13 = "mongodb r9.0.4 src/mongo/db/repl";
|
|
5338
6061
|
/**
|
|
@@ -9588,6 +10311,18 @@ const PGBOUNCER_SERVER = machineSchema.parse({
|
|
|
9588
10311
|
ref: `${PB} src/objects.c:1876-1897 launch_new_connection: one connect of a pool at a time, and none for server_login_retry from the launch of a failed one`,
|
|
9589
10312
|
rung: "implemented"
|
|
9590
10313
|
},
|
|
10314
|
+
{
|
|
10315
|
+
ref: `${PB} src/server.c:294-303 pool_pool_size: the pool_size of the user, else the pool_size of the database, else default_pool_size`,
|
|
10316
|
+
rung: "implemented"
|
|
10317
|
+
},
|
|
10318
|
+
{
|
|
10319
|
+
ref: `${PB} src/objects.c:1927-1955 launch_new_connection: a pool with default_pool_size servers starts no more, and the client stays in the queue. reserve_pool_size is 0 at the defaults (src/main.c:317)`,
|
|
10320
|
+
rung: "implemented"
|
|
10321
|
+
},
|
|
10322
|
+
{
|
|
10323
|
+
ref: `${PB} src/janitor.c:166-169 a waiting client with no idle server starts one server. Thus the pool opens each server only when a client needs it, and min_pool_size is 0 at the defaults (src/main.c:308)`,
|
|
10324
|
+
rung: "implemented"
|
|
10325
|
+
},
|
|
9591
10326
|
{
|
|
9592
10327
|
ref: `${PB} src/objects.c:1990-2008 the launch sets the time of the connect, before the DNS lookup and the TCP connect`,
|
|
9593
10328
|
rung: "implemented"
|
|
@@ -9770,6 +10505,13 @@ const PGBOUNCER_SERVER = machineSchema.parse({
|
|
|
9770
10505
|
}
|
|
9771
10506
|
},
|
|
9772
10507
|
knobs: {
|
|
10508
|
+
default_pool_size: {
|
|
10509
|
+
key: "pgbouncer default_pool_size",
|
|
10510
|
+
scope: "proxy",
|
|
10511
|
+
unit: "count",
|
|
10512
|
+
default: 20,
|
|
10513
|
+
note: "src/main.c:284. The most servers of a pool, for one database and one user (src/server.c:294-303, src/objects.c:1927-1955)"
|
|
10514
|
+
},
|
|
9773
10515
|
server_connect_timeout: {
|
|
9774
10516
|
key: "pgbouncer server_connect_timeout",
|
|
9775
10517
|
scope: "proxy",
|
|
@@ -9931,9 +10673,9 @@ const PGBOUNCER_SERVER = machineSchema.parse({
|
|
|
9931
10673
|
from: "[none]",
|
|
9932
10674
|
to: "connecting",
|
|
9933
10675
|
on: "local.launch",
|
|
9934
|
-
guard: "no connect of the pool is in progress",
|
|
10676
|
+
guard: "a client waits, no connect of the pool is in progress, and the pool has fewer servers than default_pool_size",
|
|
9935
10677
|
timer: "connect_timeout",
|
|
9936
|
-
source: "src/objects.c:1876-1887, :1990-2008"
|
|
10678
|
+
source: "src/janitor.c:166-169, src/objects.c:1876-1887, :1927-1955, :1990-2008"
|
|
9937
10679
|
},
|
|
9938
10680
|
{
|
|
9939
10681
|
id: "pbs.connected",
|
|
@@ -18401,6 +19143,8 @@ const MACHINES = byId([
|
|
|
18401
19143
|
RABBITMQ_CONNECTION,
|
|
18402
19144
|
ATEN_DETECTOR,
|
|
18403
19145
|
RA_MEMBER,
|
|
19146
|
+
KAFKA_CONSUMER_GROUP,
|
|
19147
|
+
KAFKA_PARTITION,
|
|
18404
19148
|
GRPC_JS,
|
|
18405
19149
|
GRPC_GO_SERVER,
|
|
18406
19150
|
ETCD_SERVER,
|
|
@@ -18419,6 +19163,6 @@ const MACHINES = byId([
|
|
|
18419
19163
|
KUBELET_READINESS
|
|
18420
19164
|
]);
|
|
18421
19165
|
//#endregion
|
|
18422
|
-
export { AMQPLIB, ATEN_DETECTOR, CADDY_HTTP2, DEADLINE_CALL, DOCKER_PROXY_LINK, ENVOY_HTTP2, ETCD_SERVER, GO_TRANSPORT, GRPC_GO_SERVER, GRPC_JS, HAPROXY_TCP, HIKARICP_PGJDBC, IOREDIS_SENTINEL, IOREDIS_STATUS, ISTIO_SIDECAR_INBOUND, ISTIO_SIDECAR_OUTBOUND, KUBELET_READINESS, LINUX_TCP, MACHINES, MANIFESTATIONS, MONGODB_NODE, MONGOD_REPL, MONGOD_SESSION, NF_CONNTRACK_TCP, NGINX_GRPC, NODE_HTTP_AGENT, NODE_HTTP_SERVER, NODE_POSTGRES, NODE_TIMER_EARLY, PGBOUNCER_CLIENT, PGBOUNCER_SERVER, PGPOOL_SESSION, PILOT_AGENT, POSTGRES_SESSION, PROCEDURES_WS_CLIENT, PROCEDURES_WS_SERVER, RABBITMQ_CONNECTION, RA_MEMBER, REDIS_CLIENT, SENTINEL, SUPAVISOR_CLIENT, SUPAVISOR_SERVER, TOXIPROXY_LINK, TRAEFIK_HTTP2, UNDICI_CLIENT, UNDICI_RETRY, UNDICI_TICK_MS, ZTUNNEL_HBONE, goLateSeconds, goTimerLateness, istioSidecar, nodeEarlySeconds, nodeLateSeconds, nodeTimerLateness, undiciFastEarly, undiciFastLateness };
|
|
19166
|
+
export { AMQPLIB, ATEN_DETECTOR, CADDY_HTTP2, DEADLINE_CALL, DOCKER_PROXY_LINK, ENVOY_HTTP2, ETCD_SERVER, GO_TRANSPORT, GRPC_GO_SERVER, GRPC_JS, HAPROXY_TCP, HIKARICP_PGJDBC, IOREDIS_SENTINEL, IOREDIS_STATUS, ISTIO_SIDECAR_INBOUND, ISTIO_SIDECAR_OUTBOUND, KAFKA_CONSUMER_GROUP, KAFKA_PARTITION, KUBELET_READINESS, LINUX_TCP, MACHINES, MANIFESTATIONS, MONGODB_NODE, MONGOD_REPL, MONGOD_SESSION, NF_CONNTRACK_TCP, NGINX_GRPC, NODE_HTTP_AGENT, NODE_HTTP_SERVER, NODE_POSTGRES, NODE_TIMER_EARLY, PGBOUNCER_CLIENT, PGBOUNCER_SERVER, PGPOOL_SESSION, PILOT_AGENT, POSTGRES_SESSION, PROCEDURES_WS_CLIENT, PROCEDURES_WS_SERVER, RABBITMQ_CONNECTION, RA_MEMBER, REDIS_CLIENT, SENTINEL, SUPAVISOR_CLIENT, SUPAVISOR_SERVER, TOXIPROXY_LINK, TRAEFIK_HTTP2, UNDICI_CLIENT, UNDICI_RETRY, UNDICI_TICK_MS, ZTUNNEL_HBONE, goLateSeconds, goTimerLateness, istioSidecar, nodeEarlySeconds, nodeLateSeconds, nodeTimerLateness, undiciFastEarly, undiciFastLateness };
|
|
18423
19167
|
|
|
18424
19168
|
//# sourceMappingURL=index.js.map
|