@platformatic/kafka 2.1.0 → 2.2.0
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 +4 -1
- package/dist/apis/admin/alter-client-quotas-v0.d.ts +40 -0
- package/dist/apis/admin/alter-client-quotas-v0.js +60 -0
- package/dist/apis/admin/alter-client-quotas-v1.d.ts +6 -5
- package/dist/apis/admin/alter-client-quotas-v1.js +3 -1
- package/dist/apis/admin/alter-configs-v0.d.ts +7 -0
- package/dist/apis/admin/alter-configs-v0.js +10 -0
- package/dist/apis/admin/alter-configs-v1.d.ts +2 -0
- package/dist/apis/admin/alter-configs-v1.js +5 -0
- package/dist/apis/admin/alter-configs-v2.js +3 -1
- package/dist/apis/admin/alter-partition-reassignments-v0.d.ts +3 -2
- package/dist/apis/admin/alter-partition-reassignments-v0.js +4 -1
- package/dist/apis/admin/alter-partition-reassignments-v1.d.ts +6 -4
- package/dist/apis/admin/alter-partition-reassignments-v1.js +7 -3
- package/dist/apis/admin/alter-partition-v0.d.ts +40 -0
- package/dist/apis/admin/alter-partition-v0.js +81 -0
- package/dist/apis/admin/alter-partition-v1.d.ts +37 -0
- package/dist/apis/admin/alter-partition-v1.js +84 -0
- package/dist/apis/admin/alter-partition-v2.d.ts +36 -0
- package/dist/apis/admin/alter-partition-v2.js +83 -0
- package/dist/apis/admin/alter-partition-v3.d.ts +6 -35
- package/dist/apis/admin/alter-partition-v3.js +10 -8
- package/dist/apis/admin/alter-replica-log-dirs-v0.d.ts +23 -0
- package/dist/apis/admin/alter-replica-log-dirs-v0.js +29 -0
- package/dist/apis/admin/alter-replica-log-dirs-v1.d.ts +4 -0
- package/dist/apis/admin/alter-replica-log-dirs-v1.js +8 -0
- package/dist/apis/admin/alter-replica-log-dirs-v2.d.ts +1 -1
- package/dist/apis/admin/alter-replica-log-dirs-v2.js +1 -0
- package/dist/apis/admin/alter-user-scram-credentials-v0.js +1 -1
- package/dist/apis/admin/client-quotas.d.ts +2 -0
- package/dist/apis/admin/client-quotas.js +1 -0
- package/dist/apis/admin/consumer-group-describe-v0.d.ts +2 -1
- package/dist/apis/admin/consumer-group-describe-v0.js +51 -30
- package/dist/apis/admin/create-acls-v0.d.ts +16 -0
- package/dist/apis/admin/create-acls-v0.js +10 -0
- package/dist/apis/admin/create-acls-v1.d.ts +15 -0
- package/dist/apis/admin/create-acls-v1.js +10 -0
- package/dist/apis/admin/create-acls-v2.js +1 -0
- package/dist/apis/admin/create-acls-v3.js +1 -0
- package/dist/apis/admin/create-delegation-token-v0.d.ts +24 -0
- package/dist/apis/admin/create-delegation-token-v0.js +47 -0
- package/dist/apis/admin/create-delegation-token-v1.d.ts +4 -0
- package/dist/apis/admin/create-delegation-token-v1.js +8 -0
- package/dist/apis/admin/create-delegation-token-v2.d.ts +9 -0
- package/dist/apis/admin/create-delegation-token-v2.js +30 -0
- package/dist/apis/admin/create-delegation-token-v3.js +1 -0
- package/dist/apis/admin/create-partitions-v0.d.ts +2 -0
- package/dist/apis/admin/create-partitions-v0.js +5 -0
- package/dist/apis/admin/create-partitions-v1.d.ts +2 -2
- package/dist/apis/admin/create-partitions-v1.js +5 -5
- package/dist/apis/admin/create-partitions-v2.d.ts +2 -2
- package/dist/apis/admin/create-partitions-v2.js +1 -0
- package/dist/apis/admin/create-partitions-v3.js +1 -0
- package/dist/apis/admin/create-topics-v0.d.ts +42 -0
- package/dist/apis/admin/create-topics-v0.js +63 -0
- package/dist/apis/admin/create-topics-v1.d.ts +42 -0
- package/dist/apis/admin/create-topics-v1.js +65 -0
- package/dist/apis/admin/create-topics-v2.d.ts +42 -0
- package/dist/apis/admin/create-topics-v2.js +66 -0
- package/dist/apis/admin/create-topics-v3.d.ts +42 -0
- package/dist/apis/admin/create-topics-v3.js +66 -0
- package/dist/apis/admin/create-topics-v4.d.ts +42 -0
- package/dist/apis/admin/create-topics-v4.js +66 -0
- package/dist/apis/admin/create-topics-v5.d.ts +42 -0
- package/dist/apis/admin/create-topics-v5.js +88 -0
- package/dist/apis/admin/create-topics-v6.d.ts +42 -0
- package/dist/apis/admin/create-topics-v6.js +88 -0
- package/dist/apis/admin/create-topics-v7.d.ts +2 -1
- package/dist/apis/admin/create-topics-v7.js +20 -5
- package/dist/apis/admin/delete-acls-v0.d.ts +28 -0
- package/dist/apis/admin/delete-acls-v0.js +12 -0
- package/dist/apis/admin/delete-acls-v1.d.ts +27 -0
- package/dist/apis/admin/delete-acls-v1.js +11 -0
- package/dist/apis/admin/delete-acls-v2.js +5 -2
- package/dist/apis/admin/delete-acls-v3.js +1 -0
- package/dist/apis/admin/delete-groups-v0.d.ts +14 -0
- package/dist/apis/admin/delete-groups-v0.js +38 -0
- package/dist/apis/admin/delete-groups-v1.d.ts +14 -0
- package/dist/apis/admin/delete-groups-v1.js +38 -0
- package/dist/apis/admin/delete-groups-v2.js +1 -0
- package/dist/apis/admin/delete-records-v0.d.ts +27 -0
- package/dist/apis/admin/delete-records-v0.js +50 -0
- package/dist/apis/admin/delete-records-v1.d.ts +27 -0
- package/dist/apis/admin/delete-records-v1.js +50 -0
- package/dist/apis/admin/delete-records-v2.js +1 -0
- package/dist/apis/admin/delete-topics-v0.d.ts +19 -0
- package/dist/apis/admin/delete-topics-v0.js +39 -0
- package/dist/apis/admin/delete-topics-v1.d.ts +19 -0
- package/dist/apis/admin/delete-topics-v1.js +37 -0
- package/dist/apis/admin/delete-topics-v2.d.ts +19 -0
- package/dist/apis/admin/delete-topics-v2.js +37 -0
- package/dist/apis/admin/delete-topics-v3.d.ts +19 -0
- package/dist/apis/admin/delete-topics-v3.js +37 -0
- package/dist/apis/admin/delete-topics-v4.d.ts +19 -0
- package/dist/apis/admin/delete-topics-v4.js +41 -0
- package/dist/apis/admin/delete-topics-v5.d.ts +19 -0
- package/dist/apis/admin/delete-topics-v5.js +45 -0
- package/dist/apis/admin/delete-topics-v6.d.ts +1 -1
- package/dist/apis/admin/delete-topics-v6.js +5 -1
- package/dist/apis/admin/describe-acls-v0.d.ts +21 -0
- package/dist/apis/admin/describe-acls-v0.js +19 -0
- package/dist/apis/admin/describe-acls-v1.d.ts +21 -0
- package/dist/apis/admin/describe-acls-v1.js +18 -0
- package/dist/apis/admin/describe-acls-v2.js +1 -0
- package/dist/apis/admin/describe-acls-v3.js +1 -0
- package/dist/apis/admin/describe-client-quotas-v0.d.ts +8 -7
- package/dist/apis/admin/describe-client-quotas-v0.js +28 -25
- package/dist/apis/admin/describe-client-quotas-v1.d.ts +9 -0
- package/dist/apis/admin/describe-client-quotas-v1.js +34 -0
- package/dist/apis/admin/describe-cluster-v0.d.ts +4 -3
- package/dist/apis/admin/describe-cluster-v0.js +3 -1
- package/dist/apis/admin/describe-cluster-v1.d.ts +4 -3
- package/dist/apis/admin/describe-cluster-v1.js +1 -0
- package/dist/apis/admin/describe-configs-v0.d.ts +41 -0
- package/dist/apis/admin/describe-configs-v0.js +72 -0
- package/dist/apis/admin/describe-configs-v1.d.ts +39 -0
- package/dist/apis/admin/describe-configs-v1.js +81 -0
- package/dist/apis/admin/describe-configs-v2.d.ts +9 -8
- package/dist/apis/admin/describe-configs-v2.js +10 -14
- package/dist/apis/admin/describe-configs-v3.d.ts +9 -8
- package/dist/apis/admin/describe-configs-v3.js +7 -7
- package/dist/apis/admin/describe-configs-v4.d.ts +2 -2
- package/dist/apis/admin/describe-configs-v4.js +14 -7
- package/dist/apis/admin/describe-delegation-token-v0.d.ts +31 -0
- package/dist/apis/admin/describe-delegation-token-v0.js +51 -0
- package/dist/apis/admin/describe-delegation-token-v1.d.ts +4 -0
- package/dist/apis/admin/describe-delegation-token-v1.js +8 -0
- package/dist/apis/admin/describe-delegation-token-v2.d.ts +8 -0
- package/dist/apis/admin/describe-delegation-token-v2.js +32 -0
- package/dist/apis/admin/describe-delegation-token-v3.d.ts +4 -27
- package/dist/apis/admin/describe-delegation-token-v3.js +1 -0
- package/dist/apis/admin/describe-groups-v0.d.ts +28 -0
- package/dist/apis/admin/describe-groups-v0.js +60 -0
- package/dist/apis/admin/describe-groups-v1.d.ts +28 -0
- package/dist/apis/admin/describe-groups-v1.js +62 -0
- package/dist/apis/admin/describe-groups-v2.d.ts +28 -0
- package/dist/apis/admin/describe-groups-v2.js +62 -0
- package/dist/apis/admin/describe-groups-v3.d.ts +28 -0
- package/dist/apis/admin/describe-groups-v3.js +64 -0
- package/dist/apis/admin/describe-groups-v4.d.ts +28 -0
- package/dist/apis/admin/describe-groups-v4.js +64 -0
- package/dist/apis/admin/describe-groups-v5.js +1 -0
- package/dist/apis/admin/describe-log-dirs-v0.d.ts +30 -0
- package/dist/apis/admin/describe-log-dirs-v0.js +39 -0
- package/dist/apis/admin/describe-log-dirs-v1.d.ts +4 -0
- package/dist/apis/admin/describe-log-dirs-v1.js +8 -0
- package/dist/apis/admin/describe-log-dirs-v2.d.ts +3 -2
- package/dist/apis/admin/describe-log-dirs-v2.js +9 -5
- package/dist/apis/admin/describe-log-dirs-v3.d.ts +3 -2
- package/dist/apis/admin/describe-log-dirs-v3.js +3 -2
- package/dist/apis/admin/describe-log-dirs-v4.d.ts +3 -2
- package/dist/apis/admin/describe-log-dirs-v4.js +1 -0
- package/dist/apis/admin/describe-producers-v0.js +1 -0
- package/dist/apis/admin/describe-quorum-v0.d.ts +13 -0
- package/dist/apis/admin/describe-quorum-v0.js +85 -0
- package/dist/apis/admin/describe-quorum-v1.d.ts +13 -0
- package/dist/apis/admin/describe-quorum-v1.js +84 -0
- package/dist/apis/admin/describe-quorum-v2.js +1 -0
- package/dist/apis/admin/describe-topic-partitions-v0.d.ts +3 -3
- package/dist/apis/admin/describe-topic-partitions-v0.js +5 -2
- package/dist/apis/admin/describe-transactions-v0.js +1 -0
- package/dist/apis/admin/describe-user-scram-credentials-v0.d.ts +4 -3
- package/dist/apis/admin/describe-user-scram-credentials-v0.js +1 -0
- package/dist/apis/admin/envelope-v0.js +1 -0
- package/dist/apis/admin/expire-delegation-token-v0.d.ts +11 -0
- package/dist/apis/admin/expire-delegation-token-v0.js +29 -0
- package/dist/apis/admin/expire-delegation-token-v1.d.ts +4 -0
- package/dist/apis/admin/expire-delegation-token-v1.js +8 -0
- package/dist/apis/admin/expire-delegation-token-v2.js +1 -0
- package/dist/apis/admin/incremental-alter-configs-v0.d.ts +26 -0
- package/dist/apis/admin/incremental-alter-configs-v0.js +10 -0
- package/dist/apis/admin/incremental-alter-configs-v1.js +1 -0
- package/dist/apis/admin/index.d.ts +60 -0
- package/dist/apis/admin/index.js +60 -0
- package/dist/apis/admin/list-groups-v0.d.ts +18 -0
- package/dist/apis/admin/list-groups-v0.js +30 -0
- package/dist/apis/admin/list-groups-v1.d.ts +18 -0
- package/dist/apis/admin/list-groups-v1.js +37 -0
- package/dist/apis/admin/list-groups-v2.d.ts +18 -0
- package/dist/apis/admin/list-groups-v2.js +37 -0
- package/dist/apis/admin/list-groups-v3.d.ts +18 -0
- package/dist/apis/admin/list-groups-v3.js +38 -0
- package/dist/apis/admin/list-groups-v4.d.ts +4 -3
- package/dist/apis/admin/list-groups-v4.js +15 -4
- package/dist/apis/admin/list-groups-v5.d.ts +3 -3
- package/dist/apis/admin/list-groups-v5.js +25 -3
- package/dist/apis/admin/list-partition-reassignments-v0.d.ts +3 -3
- package/dist/apis/admin/list-partition-reassignments-v0.js +1 -0
- package/dist/apis/admin/list-transactions-v0.d.ts +5 -3
- package/dist/apis/admin/list-transactions-v0.js +23 -1
- package/dist/apis/admin/list-transactions-v1.d.ts +5 -3
- package/dist/apis/admin/list-transactions-v1.js +15 -1
- package/dist/apis/admin/list-transactions-v2.d.ts +5 -4
- package/dist/apis/admin/list-transactions-v2.js +17 -5
- package/dist/apis/admin/renew-delegation-token-v0.d.ts +11 -0
- package/dist/apis/admin/renew-delegation-token-v0.js +29 -0
- package/dist/apis/admin/renew-delegation-token-v1.d.ts +4 -0
- package/dist/apis/admin/renew-delegation-token-v1.js +8 -0
- package/dist/apis/admin/renew-delegation-token-v2.js +1 -0
- package/dist/apis/admin/unregister-broker-v0.js +1 -0
- package/dist/apis/admin/update-features-v0.d.ts +24 -0
- package/dist/apis/admin/update-features-v0.js +59 -0
- package/dist/apis/admin/update-features-v1.d.ts +2 -1
- package/dist/apis/admin/update-features-v1.js +1 -0
- package/dist/apis/callbacks.d.ts +1 -3
- package/dist/apis/callbacks.js +26 -11
- package/dist/apis/consumer/consumer-group-heartbeat-v0.d.ts +2 -2
- package/dist/apis/consumer/consumer-group-heartbeat-v0.js +17 -10
- package/dist/apis/consumer/consumer-group-heartbeat-v1.d.ts +2 -2
- package/dist/apis/consumer/consumer-group-heartbeat-v1.js +17 -10
- package/dist/apis/consumer/fetch-v10.d.ts +51 -0
- package/dist/apis/consumer/fetch-v10.js +122 -0
- package/dist/apis/consumer/fetch-v11.d.ts +51 -0
- package/dist/apis/consumer/fetch-v11.js +125 -0
- package/dist/apis/consumer/fetch-v12.d.ts +20 -4
- package/dist/apis/consumer/fetch-v12.js +29 -12
- package/dist/apis/consumer/fetch-v13.d.ts +20 -4
- package/dist/apis/consumer/fetch-v13.js +25 -7
- package/dist/apis/consumer/fetch-v14.d.ts +20 -4
- package/dist/apis/consumer/fetch-v14.js +25 -7
- package/dist/apis/consumer/fetch-v15.d.ts +20 -4
- package/dist/apis/consumer/fetch-v15.js +25 -7
- package/dist/apis/consumer/fetch-v16.d.ts +27 -4
- package/dist/apis/consumer/fetch-v16.js +36 -8
- package/dist/apis/consumer/fetch-v17.d.ts +28 -4
- package/dist/apis/consumer/fetch-v17.js +43 -9
- package/dist/apis/consumer/fetch-v4.d.ts +51 -0
- package/dist/apis/consumer/fetch-v4.js +87 -0
- package/dist/apis/consumer/fetch-v5.d.ts +51 -0
- package/dist/apis/consumer/fetch-v5.js +89 -0
- package/dist/apis/consumer/fetch-v6.d.ts +51 -0
- package/dist/apis/consumer/fetch-v6.js +99 -0
- package/dist/apis/consumer/fetch-v7.d.ts +51 -0
- package/dist/apis/consumer/fetch-v7.js +117 -0
- package/dist/apis/consumer/fetch-v8.d.ts +51 -0
- package/dist/apis/consumer/fetch-v8.js +117 -0
- package/dist/apis/consumer/fetch-v9.d.ts +51 -0
- package/dist/apis/consumer/fetch-v9.js +122 -0
- package/dist/apis/consumer/heartbeat-v0.d.ts +11 -0
- package/dist/apis/consumer/heartbeat-v0.js +24 -0
- package/dist/apis/consumer/heartbeat-v1.d.ts +11 -0
- package/dist/apis/consumer/heartbeat-v1.js +31 -0
- package/dist/apis/consumer/heartbeat-v2.d.ts +11 -0
- package/dist/apis/consumer/heartbeat-v2.js +31 -0
- package/dist/apis/consumer/heartbeat-v3.d.ts +11 -0
- package/dist/apis/consumer/heartbeat-v3.js +33 -0
- package/dist/apis/consumer/heartbeat-v4.js +1 -0
- package/dist/apis/consumer/index.d.ts +51 -0
- package/dist/apis/consumer/index.js +51 -0
- package/dist/apis/consumer/join-group-v0.d.ts +27 -0
- package/dist/apis/consumer/join-group-v0.js +51 -0
- package/dist/apis/consumer/join-group-v1.d.ts +8 -0
- package/dist/apis/consumer/join-group-v1.js +43 -0
- package/dist/apis/consumer/join-group-v2.d.ts +27 -0
- package/dist/apis/consumer/join-group-v2.js +60 -0
- package/dist/apis/consumer/join-group-v3.d.ts +27 -0
- package/dist/apis/consumer/join-group-v3.js +60 -0
- package/dist/apis/consumer/join-group-v4.d.ts +27 -0
- package/dist/apis/consumer/join-group-v4.js +60 -0
- package/dist/apis/consumer/join-group-v5.d.ts +27 -0
- package/dist/apis/consumer/join-group-v5.js +63 -0
- package/dist/apis/consumer/join-group-v6.d.ts +2 -2
- package/dist/apis/consumer/join-group-v6.js +10 -7
- package/dist/apis/consumer/join-group-v7.d.ts +2 -2
- package/dist/apis/consumer/join-group-v7.js +5 -3
- package/dist/apis/consumer/join-group-v8.d.ts +2 -2
- package/dist/apis/consumer/join-group-v8.js +5 -3
- package/dist/apis/consumer/join-group-v9.d.ts +2 -2
- package/dist/apis/consumer/join-group-v9.js +5 -3
- package/dist/apis/consumer/leave-group-v0.d.ts +22 -0
- package/dist/apis/consumer/leave-group-v0.js +23 -0
- package/dist/apis/consumer/leave-group-v1.d.ts +22 -0
- package/dist/apis/consumer/leave-group-v1.js +30 -0
- package/dist/apis/consumer/leave-group-v2.d.ts +22 -0
- package/dist/apis/consumer/leave-group-v2.js +30 -0
- package/dist/apis/consumer/leave-group-v3.d.ts +22 -0
- package/dist/apis/consumer/leave-group-v3.js +54 -0
- package/dist/apis/consumer/leave-group-v4.d.ts +1 -1
- package/dist/apis/consumer/leave-group-v4.js +4 -2
- package/dist/apis/consumer/leave-group-v5.d.ts +1 -1
- package/dist/apis/consumer/leave-group-v5.js +4 -2
- package/dist/apis/consumer/list-offsets-v0.d.ts +30 -0
- package/dist/apis/consumer/list-offsets-v0.js +50 -0
- package/dist/apis/consumer/list-offsets-v1.d.ts +12 -0
- package/dist/apis/consumer/list-offsets-v1.js +52 -0
- package/dist/apis/consumer/list-offsets-v2.d.ts +30 -0
- package/dist/apis/consumer/list-offsets-v2.js +64 -0
- package/dist/apis/consumer/list-offsets-v3.d.ts +30 -0
- package/dist/apis/consumer/list-offsets-v3.js +64 -0
- package/dist/apis/consumer/list-offsets-v4.d.ts +30 -0
- package/dist/apis/consumer/list-offsets-v4.js +67 -0
- package/dist/apis/consumer/list-offsets-v6.js +6 -3
- package/dist/apis/consumer/list-offsets-v7.js +6 -3
- package/dist/apis/consumer/list-offsets-v8.js +6 -3
- package/dist/apis/consumer/list-offsets-v9.js +6 -3
- package/dist/apis/consumer/offset-commit-v0.d.ts +29 -0
- package/dist/apis/consumer/offset-commit-v0.js +52 -0
- package/dist/apis/consumer/offset-commit-v1.d.ts +7 -0
- package/dist/apis/consumer/offset-commit-v1.js +30 -0
- package/dist/apis/consumer/offset-commit-v2.d.ts +8 -0
- package/dist/apis/consumer/offset-commit-v2.js +31 -0
- package/dist/apis/consumer/offset-commit-v3.d.ts +29 -0
- package/dist/apis/consumer/offset-commit-v3.js +58 -0
- package/dist/apis/consumer/offset-commit-v4.d.ts +29 -0
- package/dist/apis/consumer/offset-commit-v4.js +58 -0
- package/dist/apis/consumer/offset-commit-v5.d.ts +29 -0
- package/dist/apis/consumer/offset-commit-v5.js +56 -0
- package/dist/apis/consumer/offset-commit-v6.d.ts +29 -0
- package/dist/apis/consumer/offset-commit-v6.js +60 -0
- package/dist/apis/consumer/offset-commit-v7.d.ts +29 -0
- package/dist/apis/consumer/offset-commit-v7.js +62 -0
- package/dist/apis/consumer/offset-commit-v8.d.ts +2 -2
- package/dist/apis/consumer/offset-commit-v8.js +6 -3
- package/dist/apis/consumer/offset-commit-v9.d.ts +2 -2
- package/dist/apis/consumer/offset-commit-v9.js +6 -3
- package/dist/apis/consumer/offset-fetch-v0.d.ts +40 -0
- package/dist/apis/consumer/offset-fetch-v0.js +62 -0
- package/dist/apis/consumer/offset-fetch-v1.d.ts +6 -0
- package/dist/apis/consumer/offset-fetch-v1.js +41 -0
- package/dist/apis/consumer/offset-fetch-v2.d.ts +7 -0
- package/dist/apis/consumer/offset-fetch-v2.js +48 -0
- package/dist/apis/consumer/offset-fetch-v3.d.ts +39 -0
- package/dist/apis/consumer/offset-fetch-v3.js +64 -0
- package/dist/apis/consumer/offset-fetch-v4.d.ts +39 -0
- package/dist/apis/consumer/offset-fetch-v4.js +64 -0
- package/dist/apis/consumer/offset-fetch-v5.d.ts +39 -0
- package/dist/apis/consumer/offset-fetch-v5.js +65 -0
- package/dist/apis/consumer/offset-fetch-v6.d.ts +39 -0
- package/dist/apis/consumer/offset-fetch-v6.js +68 -0
- package/dist/apis/consumer/offset-fetch-v7.d.ts +39 -0
- package/dist/apis/consumer/offset-fetch-v7.js +70 -0
- package/dist/apis/consumer/offset-fetch-v8.js +5 -2
- package/dist/apis/consumer/offset-fetch-v9.js +5 -2
- package/dist/apis/consumer/offset-for-leader-epoch-v0.d.ts +29 -0
- package/dist/apis/consumer/offset-for-leader-epoch-v0.js +48 -0
- package/dist/apis/consumer/offset-for-leader-epoch-v1.d.ts +29 -0
- package/dist/apis/consumer/offset-for-leader-epoch-v1.js +54 -0
- package/dist/apis/consumer/offset-for-leader-epoch-v2.d.ts +29 -0
- package/dist/apis/consumer/offset-for-leader-epoch-v2.js +58 -0
- package/dist/apis/consumer/offset-for-leader-epoch-v3.d.ts +29 -0
- package/dist/apis/consumer/offset-for-leader-epoch-v3.js +59 -0
- package/dist/apis/consumer/offset-for-leader-epoch-v4.d.ts +1 -1
- package/dist/apis/consumer/offset-for-leader-epoch-v4.js +11 -8
- package/dist/apis/consumer/sync-group-v0.d.ts +18 -0
- package/dist/apis/consumer/sync-group-v0.js +38 -0
- package/dist/apis/consumer/sync-group-v1.d.ts +18 -0
- package/dist/apis/consumer/sync-group-v1.js +39 -0
- package/dist/apis/consumer/sync-group-v2.d.ts +18 -0
- package/dist/apis/consumer/sync-group-v2.js +39 -0
- package/dist/apis/consumer/sync-group-v3.d.ts +18 -0
- package/dist/apis/consumer/sync-group-v3.js +41 -0
- package/dist/apis/consumer/sync-group-v4.js +1 -0
- package/dist/apis/consumer/sync-group-v5.js +1 -0
- package/dist/apis/enumerations.d.ts +21 -6
- package/dist/apis/enumerations.js +57 -5
- package/dist/apis/index.d.ts +1 -0
- package/dist/apis/index.js +1 -0
- package/dist/apis/metadata/api-versions-v0.d.ts +17 -0
- package/dist/apis/metadata/api-versions-v0.js +24 -0
- package/dist/apis/metadata/api-versions-v1.d.ts +17 -0
- package/dist/apis/metadata/api-versions-v1.js +39 -0
- package/dist/apis/metadata/api-versions-v2.d.ts +17 -0
- package/dist/apis/metadata/api-versions-v2.js +39 -0
- package/dist/apis/metadata/api-versions-v3.d.ts +16 -2
- package/dist/apis/metadata/api-versions-v3.js +43 -4
- package/dist/apis/metadata/api-versions-v4.d.ts +16 -2
- package/dist/apis/metadata/api-versions-v4.js +35 -3
- package/dist/apis/metadata/find-coordinator-v0.d.ts +18 -0
- package/dist/apis/metadata/find-coordinator-v0.js +24 -0
- package/dist/apis/metadata/find-coordinator-v1.d.ts +18 -0
- package/dist/apis/metadata/find-coordinator-v1.js +41 -0
- package/dist/apis/metadata/find-coordinator-v2.d.ts +18 -0
- package/dist/apis/metadata/find-coordinator-v2.js +41 -0
- package/dist/apis/metadata/find-coordinator-v3.d.ts +18 -0
- package/dist/apis/metadata/find-coordinator-v3.js +44 -0
- package/dist/apis/metadata/find-coordinator-v4.js +3 -1
- package/dist/apis/metadata/find-coordinator-v5.js +3 -1
- package/dist/apis/metadata/find-coordinator-v6.js +3 -1
- package/dist/apis/metadata/index.d.ts +16 -0
- package/dist/apis/metadata/index.js +16 -0
- package/dist/apis/metadata/metadata-v0.d.ts +38 -0
- package/dist/apis/metadata/metadata-v0.js +47 -0
- package/dist/apis/metadata/metadata-v1.d.ts +38 -0
- package/dist/apis/metadata/metadata-v1.js +52 -0
- package/dist/apis/metadata/metadata-v10.d.ts +4 -2
- package/dist/apis/metadata/metadata-v10.js +29 -16
- package/dist/apis/metadata/metadata-v11.d.ts +3 -2
- package/dist/apis/metadata/metadata-v11.js +23 -15
- package/dist/apis/metadata/metadata-v12.d.ts +9 -2
- package/dist/apis/metadata/metadata-v12.js +21 -9
- package/dist/apis/metadata/metadata-v2.d.ts +38 -0
- package/dist/apis/metadata/metadata-v2.js +52 -0
- package/dist/apis/metadata/metadata-v3.d.ts +38 -0
- package/dist/apis/metadata/metadata-v3.js +52 -0
- package/dist/apis/metadata/metadata-v4.d.ts +38 -0
- package/dist/apis/metadata/metadata-v4.js +54 -0
- package/dist/apis/metadata/metadata-v5.d.ts +38 -0
- package/dist/apis/metadata/metadata-v5.js +85 -0
- package/dist/apis/metadata/metadata-v6.d.ts +38 -0
- package/dist/apis/metadata/metadata-v6.js +85 -0
- package/dist/apis/metadata/metadata-v7.d.ts +38 -0
- package/dist/apis/metadata/metadata-v7.js +86 -0
- package/dist/apis/metadata/metadata-v8.d.ts +39 -0
- package/dist/apis/metadata/metadata-v8.js +94 -0
- package/dist/apis/metadata/metadata-v9.d.ts +5 -3
- package/dist/apis/metadata/metadata-v9.js +28 -21
- package/dist/apis/producer/add-offsets-to-txn-v0.d.ts +10 -0
- package/dist/apis/producer/add-offsets-to-txn-v0.js +30 -0
- package/dist/apis/producer/add-offsets-to-txn-v3.js +1 -0
- package/dist/apis/producer/add-offsets-to-txn-v4.js +1 -0
- package/dist/apis/producer/add-partitions-to-txn-v0.d.ts +34 -0
- package/dist/apis/producer/add-partitions-to-txn-v0.js +62 -0
- package/dist/apis/producer/add-partitions-to-txn-v1.d.ts +5 -0
- package/dist/apis/producer/add-partitions-to-txn-v1.js +9 -0
- package/dist/apis/producer/add-partitions-to-txn-v2.d.ts +5 -0
- package/dist/apis/producer/add-partitions-to-txn-v2.js +9 -0
- package/dist/apis/producer/add-partitions-to-txn-v3.js +13 -8
- package/dist/apis/producer/add-partitions-to-txn-v4.js +11 -5
- package/dist/apis/producer/add-partitions-to-txn-v5.js +11 -5
- package/dist/apis/producer/end-txn-v0.d.ts +10 -0
- package/dist/apis/producer/end-txn-v0.js +30 -0
- package/dist/apis/producer/end-txn-v1.d.ts +5 -0
- package/dist/apis/producer/end-txn-v1.js +9 -0
- package/dist/apis/producer/end-txn-v2.d.ts +5 -0
- package/dist/apis/producer/end-txn-v2.js +9 -0
- package/dist/apis/producer/end-txn-v3.js +1 -0
- package/dist/apis/producer/end-txn-v4.js +1 -0
- package/dist/apis/producer/index.d.ts +17 -0
- package/dist/apis/producer/index.js +17 -0
- package/dist/apis/producer/init-producer-id-v0.d.ts +13 -0
- package/dist/apis/producer/init-producer-id-v0.js +31 -0
- package/dist/apis/producer/init-producer-id-v1.d.ts +5 -0
- package/dist/apis/producer/init-producer-id-v1.js +9 -0
- package/dist/apis/producer/init-producer-id-v2.d.ts +13 -0
- package/dist/apis/producer/init-producer-id-v2.js +24 -0
- package/dist/apis/producer/init-producer-id-v3.d.ts +2 -2
- package/dist/apis/producer/init-producer-id-v3.js +9 -1
- package/dist/apis/producer/init-producer-id-v4.d.ts +2 -2
- package/dist/apis/producer/init-producer-id-v4.js +9 -1
- package/dist/apis/producer/init-producer-id-v5.d.ts +2 -2
- package/dist/apis/producer/init-producer-id-v5.js +9 -1
- package/dist/apis/producer/produce-v10.d.ts +12 -0
- package/dist/apis/producer/produce-v10.js +42 -5
- package/dist/apis/producer/produce-v11.d.ts +12 -0
- package/dist/apis/producer/produce-v11.js +42 -5
- package/dist/apis/producer/produce-v3.d.ts +29 -0
- package/dist/apis/producer/produce-v3.js +88 -0
- package/dist/apis/producer/produce-v4.d.ts +29 -0
- package/dist/apis/producer/produce-v4.js +88 -0
- package/dist/apis/producer/produce-v5.d.ts +29 -0
- package/dist/apis/producer/produce-v5.js +88 -0
- package/dist/apis/producer/produce-v6.d.ts +29 -0
- package/dist/apis/producer/produce-v6.js +88 -0
- package/dist/apis/producer/produce-v7.js +1 -1
- package/dist/apis/producer/produce-v9.js +7 -3
- package/dist/apis/producer/txn-offset-commit-v0.d.ts +29 -0
- package/dist/apis/producer/txn-offset-commit-v0.js +60 -0
- package/dist/apis/producer/txn-offset-commit-v1.d.ts +29 -0
- package/dist/apis/producer/txn-offset-commit-v1.js +60 -0
- package/dist/apis/producer/txn-offset-commit-v2.d.ts +29 -0
- package/dist/apis/producer/txn-offset-commit-v2.js +62 -0
- package/dist/apis/producer/txn-offset-commit-v3.js +7 -3
- package/dist/apis/producer/txn-offset-commit-v4.js +7 -3
- package/dist/apis/security/index.d.ts +3 -0
- package/dist/apis/security/index.js +3 -0
- package/dist/apis/security/sasl-authenticate-v0.d.ts +15 -0
- package/dist/apis/security/sasl-authenticate-v0.js +30 -0
- package/dist/apis/security/sasl-authenticate-v1.d.ts +15 -0
- package/dist/apis/security/sasl-authenticate-v1.js +30 -0
- package/dist/apis/security/sasl-authenticate-v2.js +1 -0
- package/dist/apis/security/sasl-handshake-v0.d.ts +10 -0
- package/dist/apis/security/sasl-handshake-v0.js +28 -0
- package/dist/apis/tagged-fields.d.ts +7 -0
- package/dist/apis/tagged-fields.js +27 -0
- package/dist/apis/telemetry/compression-types.d.ts +8 -0
- package/dist/apis/telemetry/compression-types.js +7 -0
- package/dist/apis/telemetry/get-telemetry-subscriptions-v0.d.ts +2 -1
- package/dist/apis/telemetry/get-telemetry-subscriptions-v0.js +1 -0
- package/dist/apis/telemetry/index.d.ts +3 -0
- package/dist/apis/telemetry/index.js +3 -0
- package/dist/apis/telemetry/list-client-metrics-resources-v0.d.ts +6 -4
- package/dist/apis/telemetry/list-client-metrics-resources-v0.js +13 -8
- package/dist/apis/telemetry/list-config-resources-v1.d.ts +16 -0
- package/dist/apis/telemetry/list-config-resources-v1.js +38 -0
- package/dist/apis/telemetry/push-telemetry-v0.d.ts +3 -2
- package/dist/apis/telemetry/push-telemetry-v0.js +1 -0
- package/dist/clients/admin/admin.js +428 -378
- package/dist/clients/admin/options.d.ts +62 -6
- package/dist/clients/admin/options.js +41 -10
- package/dist/clients/admin/types.d.ts +8 -2
- package/dist/clients/base/base.d.ts +3 -3
- package/dist/clients/base/base.js +77 -20
- package/dist/clients/consumer/consumer.d.ts +2 -1
- package/dist/clients/consumer/consumer.js +386 -77
- package/dist/clients/consumer/messages-stream.js +228 -43
- package/dist/clients/consumer/options.d.ts +38 -0
- package/dist/clients/consumer/options.js +3 -0
- package/dist/clients/consumer/types.d.ts +40 -2
- package/dist/clients/consumer/types.js +5 -0
- package/dist/clients/consumer/utils.d.ts +1 -0
- package/dist/clients/consumer/utils.js +6 -0
- package/dist/clients/producer/producer.js +112 -54
- package/dist/clients/serde.d.ts +1 -1
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +22 -0
- package/dist/network/connection-pool.js +12 -2
- package/dist/network/connection.js +100 -22
- package/dist/network/utils.js +26 -8
- package/dist/protocol/definitions.js +1 -1
- package/dist/protocol/reader.js +11 -6
- package/dist/protocol/records.d.ts +4 -0
- package/dist/protocol/writer.js +17 -4
- package/dist/registries/abstract.d.ts +2 -2
- package/dist/registries/abstract.js +27 -8
- package/dist/registries/confluent-schema-registry.d.ts +57 -4
- package/dist/registries/confluent-schema-registry.js +253 -41
- package/dist/symbols.d.ts +1 -0
- package/dist/symbols.js +1 -0
- package/dist/typescript-4/dist/apis/admin/alter-client-quotas-v0.d.ts +40 -0
- package/dist/typescript-4/dist/apis/admin/alter-client-quotas-v1.d.ts +6 -5
- package/dist/typescript-4/dist/apis/admin/alter-configs-v0.d.ts +7 -0
- package/dist/typescript-4/dist/apis/admin/alter-configs-v1.d.ts +2 -0
- package/dist/typescript-4/dist/apis/admin/alter-partition-reassignments-v0.d.ts +3 -2
- package/dist/typescript-4/dist/apis/admin/alter-partition-reassignments-v1.d.ts +6 -4
- package/dist/typescript-4/dist/apis/admin/alter-partition-v0.d.ts +40 -0
- package/dist/typescript-4/dist/apis/admin/alter-partition-v1.d.ts +37 -0
- package/dist/typescript-4/dist/apis/admin/alter-partition-v2.d.ts +36 -0
- package/dist/typescript-4/dist/apis/admin/alter-partition-v3.d.ts +6 -35
- package/dist/typescript-4/dist/apis/admin/alter-replica-log-dirs-v0.d.ts +23 -0
- package/dist/typescript-4/dist/apis/admin/alter-replica-log-dirs-v1.d.ts +4 -0
- package/dist/typescript-4/dist/apis/admin/alter-replica-log-dirs-v2.d.ts +1 -1
- package/dist/typescript-4/dist/apis/admin/client-quotas.d.ts +2 -0
- package/dist/typescript-4/dist/apis/admin/consumer-group-describe-v0.d.ts +2 -1
- package/dist/typescript-4/dist/apis/admin/create-acls-v0.d.ts +16 -0
- package/dist/typescript-4/dist/apis/admin/create-acls-v1.d.ts +15 -0
- package/dist/typescript-4/dist/apis/admin/create-delegation-token-v0.d.ts +24 -0
- package/dist/typescript-4/dist/apis/admin/create-delegation-token-v1.d.ts +4 -0
- package/dist/typescript-4/dist/apis/admin/create-delegation-token-v2.d.ts +9 -0
- package/dist/typescript-4/dist/apis/admin/create-partitions-v0.d.ts +2 -0
- package/dist/typescript-4/dist/apis/admin/create-partitions-v1.d.ts +2 -2
- package/dist/typescript-4/dist/apis/admin/create-partitions-v2.d.ts +2 -2
- package/dist/typescript-4/dist/apis/admin/create-topics-v0.d.ts +42 -0
- package/dist/typescript-4/dist/apis/admin/create-topics-v1.d.ts +42 -0
- package/dist/typescript-4/dist/apis/admin/create-topics-v2.d.ts +42 -0
- package/dist/typescript-4/dist/apis/admin/create-topics-v3.d.ts +42 -0
- package/dist/typescript-4/dist/apis/admin/create-topics-v4.d.ts +42 -0
- package/dist/typescript-4/dist/apis/admin/create-topics-v5.d.ts +42 -0
- package/dist/typescript-4/dist/apis/admin/create-topics-v6.d.ts +42 -0
- package/dist/typescript-4/dist/apis/admin/create-topics-v7.d.ts +2 -1
- package/dist/typescript-4/dist/apis/admin/delete-acls-v0.d.ts +28 -0
- package/dist/typescript-4/dist/apis/admin/delete-acls-v1.d.ts +27 -0
- package/dist/typescript-4/dist/apis/admin/delete-groups-v0.d.ts +14 -0
- package/dist/typescript-4/dist/apis/admin/delete-groups-v1.d.ts +14 -0
- package/dist/typescript-4/dist/apis/admin/delete-records-v0.d.ts +27 -0
- package/dist/typescript-4/dist/apis/admin/delete-records-v1.d.ts +27 -0
- package/dist/typescript-4/dist/apis/admin/delete-topics-v0.d.ts +19 -0
- package/dist/typescript-4/dist/apis/admin/delete-topics-v1.d.ts +19 -0
- package/dist/typescript-4/dist/apis/admin/delete-topics-v2.d.ts +19 -0
- package/dist/typescript-4/dist/apis/admin/delete-topics-v3.d.ts +19 -0
- package/dist/typescript-4/dist/apis/admin/delete-topics-v4.d.ts +19 -0
- package/dist/typescript-4/dist/apis/admin/delete-topics-v5.d.ts +19 -0
- package/dist/typescript-4/dist/apis/admin/delete-topics-v6.d.ts +1 -1
- package/dist/typescript-4/dist/apis/admin/describe-acls-v0.d.ts +21 -0
- package/dist/typescript-4/dist/apis/admin/describe-acls-v1.d.ts +21 -0
- package/dist/typescript-4/dist/apis/admin/describe-client-quotas-v0.d.ts +8 -7
- package/dist/typescript-4/dist/apis/admin/describe-client-quotas-v1.d.ts +9 -0
- package/dist/typescript-4/dist/apis/admin/describe-cluster-v0.d.ts +4 -3
- package/dist/typescript-4/dist/apis/admin/describe-cluster-v1.d.ts +4 -3
- package/dist/typescript-4/dist/apis/admin/describe-configs-v0.d.ts +41 -0
- package/dist/typescript-4/dist/apis/admin/describe-configs-v1.d.ts +39 -0
- package/dist/typescript-4/dist/apis/admin/describe-configs-v2.d.ts +9 -8
- package/dist/typescript-4/dist/apis/admin/describe-configs-v3.d.ts +9 -8
- package/dist/typescript-4/dist/apis/admin/describe-configs-v4.d.ts +2 -2
- package/dist/typescript-4/dist/apis/admin/describe-delegation-token-v0.d.ts +31 -0
- package/dist/typescript-4/dist/apis/admin/describe-delegation-token-v1.d.ts +4 -0
- package/dist/typescript-4/dist/apis/admin/describe-delegation-token-v2.d.ts +8 -0
- package/dist/typescript-4/dist/apis/admin/describe-delegation-token-v3.d.ts +4 -27
- package/dist/typescript-4/dist/apis/admin/describe-groups-v0.d.ts +28 -0
- package/dist/typescript-4/dist/apis/admin/describe-groups-v1.d.ts +28 -0
- package/dist/typescript-4/dist/apis/admin/describe-groups-v2.d.ts +28 -0
- package/dist/typescript-4/dist/apis/admin/describe-groups-v3.d.ts +28 -0
- package/dist/typescript-4/dist/apis/admin/describe-groups-v4.d.ts +28 -0
- package/dist/typescript-4/dist/apis/admin/describe-log-dirs-v0.d.ts +30 -0
- package/dist/typescript-4/dist/apis/admin/describe-log-dirs-v1.d.ts +4 -0
- package/dist/typescript-4/dist/apis/admin/describe-log-dirs-v2.d.ts +3 -2
- package/dist/typescript-4/dist/apis/admin/describe-log-dirs-v3.d.ts +3 -2
- package/dist/typescript-4/dist/apis/admin/describe-log-dirs-v4.d.ts +3 -2
- package/dist/typescript-4/dist/apis/admin/describe-quorum-v0.d.ts +13 -0
- package/dist/typescript-4/dist/apis/admin/describe-quorum-v1.d.ts +13 -0
- package/dist/typescript-4/dist/apis/admin/describe-topic-partitions-v0.d.ts +3 -3
- package/dist/typescript-4/dist/apis/admin/describe-user-scram-credentials-v0.d.ts +4 -3
- package/dist/typescript-4/dist/apis/admin/expire-delegation-token-v0.d.ts +11 -0
- package/dist/typescript-4/dist/apis/admin/expire-delegation-token-v1.d.ts +4 -0
- package/dist/typescript-4/dist/apis/admin/incremental-alter-configs-v0.d.ts +26 -0
- package/dist/typescript-4/dist/apis/admin/index.d.ts +60 -0
- package/dist/typescript-4/dist/apis/admin/list-groups-v0.d.ts +18 -0
- package/dist/typescript-4/dist/apis/admin/list-groups-v1.d.ts +18 -0
- package/dist/typescript-4/dist/apis/admin/list-groups-v2.d.ts +18 -0
- package/dist/typescript-4/dist/apis/admin/list-groups-v3.d.ts +18 -0
- package/dist/typescript-4/dist/apis/admin/list-groups-v4.d.ts +4 -3
- package/dist/typescript-4/dist/apis/admin/list-groups-v5.d.ts +3 -3
- package/dist/typescript-4/dist/apis/admin/list-partition-reassignments-v0.d.ts +3 -3
- package/dist/typescript-4/dist/apis/admin/list-transactions-v0.d.ts +5 -3
- package/dist/typescript-4/dist/apis/admin/list-transactions-v1.d.ts +5 -3
- package/dist/typescript-4/dist/apis/admin/list-transactions-v2.d.ts +5 -4
- package/dist/typescript-4/dist/apis/admin/renew-delegation-token-v0.d.ts +11 -0
- package/dist/typescript-4/dist/apis/admin/renew-delegation-token-v1.d.ts +4 -0
- package/dist/typescript-4/dist/apis/admin/update-features-v0.d.ts +24 -0
- package/dist/typescript-4/dist/apis/admin/update-features-v1.d.ts +2 -1
- package/dist/typescript-4/dist/apis/callbacks.d.ts +1 -3
- package/dist/typescript-4/dist/apis/consumer/consumer-group-heartbeat-v0.d.ts +2 -2
- package/dist/typescript-4/dist/apis/consumer/consumer-group-heartbeat-v1.d.ts +2 -2
- package/dist/typescript-4/dist/apis/consumer/fetch-v10.d.ts +51 -0
- package/dist/typescript-4/dist/apis/consumer/fetch-v11.d.ts +51 -0
- package/dist/typescript-4/dist/apis/consumer/fetch-v12.d.ts +20 -4
- package/dist/typescript-4/dist/apis/consumer/fetch-v13.d.ts +20 -4
- package/dist/typescript-4/dist/apis/consumer/fetch-v14.d.ts +20 -4
- package/dist/typescript-4/dist/apis/consumer/fetch-v15.d.ts +20 -4
- package/dist/typescript-4/dist/apis/consumer/fetch-v16.d.ts +27 -4
- package/dist/typescript-4/dist/apis/consumer/fetch-v17.d.ts +28 -4
- package/dist/typescript-4/dist/apis/consumer/fetch-v4.d.ts +51 -0
- package/dist/typescript-4/dist/apis/consumer/fetch-v5.d.ts +51 -0
- package/dist/typescript-4/dist/apis/consumer/fetch-v6.d.ts +51 -0
- package/dist/typescript-4/dist/apis/consumer/fetch-v7.d.ts +51 -0
- package/dist/typescript-4/dist/apis/consumer/fetch-v8.d.ts +51 -0
- package/dist/typescript-4/dist/apis/consumer/fetch-v9.d.ts +51 -0
- package/dist/typescript-4/dist/apis/consumer/heartbeat-v0.d.ts +11 -0
- package/dist/typescript-4/dist/apis/consumer/heartbeat-v1.d.ts +11 -0
- package/dist/typescript-4/dist/apis/consumer/heartbeat-v2.d.ts +11 -0
- package/dist/typescript-4/dist/apis/consumer/heartbeat-v3.d.ts +11 -0
- package/dist/typescript-4/dist/apis/consumer/index.d.ts +51 -0
- package/dist/typescript-4/dist/apis/consumer/join-group-v0.d.ts +27 -0
- package/dist/typescript-4/dist/apis/consumer/join-group-v1.d.ts +8 -0
- package/dist/typescript-4/dist/apis/consumer/join-group-v2.d.ts +27 -0
- package/dist/typescript-4/dist/apis/consumer/join-group-v3.d.ts +27 -0
- package/dist/typescript-4/dist/apis/consumer/join-group-v4.d.ts +27 -0
- package/dist/typescript-4/dist/apis/consumer/join-group-v5.d.ts +27 -0
- package/dist/typescript-4/dist/apis/consumer/join-group-v6.d.ts +2 -2
- package/dist/typescript-4/dist/apis/consumer/join-group-v7.d.ts +2 -2
- package/dist/typescript-4/dist/apis/consumer/join-group-v8.d.ts +2 -2
- package/dist/typescript-4/dist/apis/consumer/join-group-v9.d.ts +2 -2
- package/dist/typescript-4/dist/apis/consumer/leave-group-v0.d.ts +22 -0
- package/dist/typescript-4/dist/apis/consumer/leave-group-v1.d.ts +22 -0
- package/dist/typescript-4/dist/apis/consumer/leave-group-v2.d.ts +22 -0
- package/dist/typescript-4/dist/apis/consumer/leave-group-v3.d.ts +22 -0
- package/dist/typescript-4/dist/apis/consumer/leave-group-v4.d.ts +1 -1
- package/dist/typescript-4/dist/apis/consumer/leave-group-v5.d.ts +1 -1
- package/dist/typescript-4/dist/apis/consumer/list-offsets-v0.d.ts +30 -0
- package/dist/typescript-4/dist/apis/consumer/list-offsets-v1.d.ts +12 -0
- package/dist/typescript-4/dist/apis/consumer/list-offsets-v2.d.ts +30 -0
- package/dist/typescript-4/dist/apis/consumer/list-offsets-v3.d.ts +30 -0
- package/dist/typescript-4/dist/apis/consumer/list-offsets-v4.d.ts +30 -0
- package/dist/typescript-4/dist/apis/consumer/offset-commit-v0.d.ts +29 -0
- package/dist/typescript-4/dist/apis/consumer/offset-commit-v1.d.ts +7 -0
- package/dist/typescript-4/dist/apis/consumer/offset-commit-v2.d.ts +8 -0
- package/dist/typescript-4/dist/apis/consumer/offset-commit-v3.d.ts +29 -0
- package/dist/typescript-4/dist/apis/consumer/offset-commit-v4.d.ts +29 -0
- package/dist/typescript-4/dist/apis/consumer/offset-commit-v5.d.ts +29 -0
- package/dist/typescript-4/dist/apis/consumer/offset-commit-v6.d.ts +29 -0
- package/dist/typescript-4/dist/apis/consumer/offset-commit-v7.d.ts +29 -0
- package/dist/typescript-4/dist/apis/consumer/offset-commit-v8.d.ts +2 -2
- package/dist/typescript-4/dist/apis/consumer/offset-commit-v9.d.ts +2 -2
- package/dist/typescript-4/dist/apis/consumer/offset-fetch-v0.d.ts +40 -0
- package/dist/typescript-4/dist/apis/consumer/offset-fetch-v1.d.ts +6 -0
- package/dist/typescript-4/dist/apis/consumer/offset-fetch-v2.d.ts +7 -0
- package/dist/typescript-4/dist/apis/consumer/offset-fetch-v3.d.ts +39 -0
- package/dist/typescript-4/dist/apis/consumer/offset-fetch-v4.d.ts +39 -0
- package/dist/typescript-4/dist/apis/consumer/offset-fetch-v5.d.ts +39 -0
- package/dist/typescript-4/dist/apis/consumer/offset-fetch-v6.d.ts +39 -0
- package/dist/typescript-4/dist/apis/consumer/offset-fetch-v7.d.ts +39 -0
- package/dist/typescript-4/dist/apis/consumer/offset-for-leader-epoch-v0.d.ts +29 -0
- package/dist/typescript-4/dist/apis/consumer/offset-for-leader-epoch-v1.d.ts +29 -0
- package/dist/typescript-4/dist/apis/consumer/offset-for-leader-epoch-v2.d.ts +29 -0
- package/dist/typescript-4/dist/apis/consumer/offset-for-leader-epoch-v3.d.ts +29 -0
- package/dist/typescript-4/dist/apis/consumer/offset-for-leader-epoch-v4.d.ts +1 -1
- package/dist/typescript-4/dist/apis/consumer/sync-group-v0.d.ts +18 -0
- package/dist/typescript-4/dist/apis/consumer/sync-group-v1.d.ts +18 -0
- package/dist/typescript-4/dist/apis/consumer/sync-group-v2.d.ts +18 -0
- package/dist/typescript-4/dist/apis/consumer/sync-group-v3.d.ts +18 -0
- package/dist/typescript-4/dist/apis/enumerations.d.ts +21 -6
- package/dist/typescript-4/dist/apis/index.d.ts +1 -0
- package/dist/typescript-4/dist/apis/metadata/api-versions-v0.d.ts +17 -0
- package/dist/typescript-4/dist/apis/metadata/api-versions-v1.d.ts +17 -0
- package/dist/typescript-4/dist/apis/metadata/api-versions-v2.d.ts +17 -0
- package/dist/typescript-4/dist/apis/metadata/api-versions-v3.d.ts +16 -2
- package/dist/typescript-4/dist/apis/metadata/api-versions-v4.d.ts +16 -2
- package/dist/typescript-4/dist/apis/metadata/find-coordinator-v0.d.ts +18 -0
- package/dist/typescript-4/dist/apis/metadata/find-coordinator-v1.d.ts +18 -0
- package/dist/typescript-4/dist/apis/metadata/find-coordinator-v2.d.ts +18 -0
- package/dist/typescript-4/dist/apis/metadata/find-coordinator-v3.d.ts +18 -0
- package/dist/typescript-4/dist/apis/metadata/index.d.ts +16 -0
- package/dist/typescript-4/dist/apis/metadata/metadata-v0.d.ts +38 -0
- package/dist/typescript-4/dist/apis/metadata/metadata-v1.d.ts +38 -0
- package/dist/typescript-4/dist/apis/metadata/metadata-v10.d.ts +4 -2
- package/dist/typescript-4/dist/apis/metadata/metadata-v11.d.ts +3 -2
- package/dist/typescript-4/dist/apis/metadata/metadata-v12.d.ts +9 -2
- package/dist/typescript-4/dist/apis/metadata/metadata-v2.d.ts +38 -0
- package/dist/typescript-4/dist/apis/metadata/metadata-v3.d.ts +38 -0
- package/dist/typescript-4/dist/apis/metadata/metadata-v4.d.ts +38 -0
- package/dist/typescript-4/dist/apis/metadata/metadata-v5.d.ts +38 -0
- package/dist/typescript-4/dist/apis/metadata/metadata-v6.d.ts +38 -0
- package/dist/typescript-4/dist/apis/metadata/metadata-v7.d.ts +38 -0
- package/dist/typescript-4/dist/apis/metadata/metadata-v8.d.ts +39 -0
- package/dist/typescript-4/dist/apis/metadata/metadata-v9.d.ts +5 -3
- package/dist/typescript-4/dist/apis/producer/add-offsets-to-txn-v0.d.ts +10 -0
- package/dist/typescript-4/dist/apis/producer/add-partitions-to-txn-v0.d.ts +34 -0
- package/dist/typescript-4/dist/apis/producer/add-partitions-to-txn-v1.d.ts +5 -0
- package/dist/typescript-4/dist/apis/producer/add-partitions-to-txn-v2.d.ts +5 -0
- package/dist/typescript-4/dist/apis/producer/end-txn-v0.d.ts +10 -0
- package/dist/typescript-4/dist/apis/producer/end-txn-v1.d.ts +5 -0
- package/dist/typescript-4/dist/apis/producer/end-txn-v2.d.ts +5 -0
- package/dist/typescript-4/dist/apis/producer/index.d.ts +17 -0
- package/dist/typescript-4/dist/apis/producer/init-producer-id-v0.d.ts +13 -0
- package/dist/typescript-4/dist/apis/producer/init-producer-id-v1.d.ts +5 -0
- package/dist/typescript-4/dist/apis/producer/init-producer-id-v2.d.ts +13 -0
- package/dist/typescript-4/dist/apis/producer/init-producer-id-v3.d.ts +2 -2
- package/dist/typescript-4/dist/apis/producer/init-producer-id-v4.d.ts +2 -2
- package/dist/typescript-4/dist/apis/producer/init-producer-id-v5.d.ts +2 -2
- package/dist/typescript-4/dist/apis/producer/produce-v10.d.ts +12 -0
- package/dist/typescript-4/dist/apis/producer/produce-v11.d.ts +12 -0
- package/dist/typescript-4/dist/apis/producer/produce-v3.d.ts +29 -0
- package/dist/typescript-4/dist/apis/producer/produce-v4.d.ts +29 -0
- package/dist/typescript-4/dist/apis/producer/produce-v5.d.ts +29 -0
- package/dist/typescript-4/dist/apis/producer/produce-v6.d.ts +29 -0
- package/dist/typescript-4/dist/apis/producer/txn-offset-commit-v0.d.ts +29 -0
- package/dist/typescript-4/dist/apis/producer/txn-offset-commit-v1.d.ts +29 -0
- package/dist/typescript-4/dist/apis/producer/txn-offset-commit-v2.d.ts +29 -0
- package/dist/typescript-4/dist/apis/security/index.d.ts +3 -0
- package/dist/typescript-4/dist/apis/security/sasl-authenticate-v0.d.ts +15 -0
- package/dist/typescript-4/dist/apis/security/sasl-authenticate-v1.d.ts +15 -0
- package/dist/typescript-4/dist/apis/security/sasl-handshake-v0.d.ts +10 -0
- package/dist/typescript-4/dist/apis/tagged-fields.d.ts +7 -0
- package/dist/typescript-4/dist/apis/telemetry/compression-types.d.ts +8 -0
- package/dist/typescript-4/dist/apis/telemetry/get-telemetry-subscriptions-v0.d.ts +2 -1
- package/dist/typescript-4/dist/apis/telemetry/index.d.ts +3 -0
- package/dist/typescript-4/dist/apis/telemetry/list-client-metrics-resources-v0.d.ts +6 -4
- package/dist/typescript-4/dist/apis/telemetry/list-config-resources-v1.d.ts +16 -0
- package/dist/typescript-4/dist/apis/telemetry/push-telemetry-v0.d.ts +3 -2
- package/dist/typescript-4/dist/clients/admin/options.d.ts +62 -6
- package/dist/typescript-4/dist/clients/admin/types.d.ts +8 -2
- package/dist/typescript-4/dist/clients/base/base.d.ts +3 -3
- package/dist/typescript-4/dist/clients/consumer/consumer.d.ts +2 -1
- package/dist/typescript-4/dist/clients/consumer/options.d.ts +38 -0
- package/dist/typescript-4/dist/clients/consumer/types.d.ts +40 -2
- package/dist/typescript-4/dist/clients/consumer/utils.d.ts +2 -1
- package/dist/typescript-4/dist/clients/serde.d.ts +1 -1
- package/dist/typescript-4/dist/errors.d.ts +4 -0
- package/dist/typescript-4/dist/protocol/records.d.ts +4 -0
- package/dist/typescript-4/dist/registries/abstract.d.ts +2 -2
- package/dist/typescript-4/dist/registries/confluent-schema-registry.d.ts +57 -4
- package/dist/typescript-4/dist/symbols.d.ts +1 -0
- package/dist/version.js +1 -1
- package/package.json +4 -2
|
@@ -2,7 +2,7 @@ import { randomUUID } from 'node:crypto';
|
|
|
2
2
|
import { createPromisifiedCallback, kCallbackPromise, runConcurrentCallbacks } from "../../apis/callbacks.js";
|
|
3
3
|
import { FetchIsolationLevels, FindCoordinatorKeyTypes } from "../../apis/enumerations.js";
|
|
4
4
|
import { consumerCommitsChannel, consumerConsumesChannel, consumerFetchesChannel, consumerGroupChannel, consumerHeartbeatChannel, consumerLagChannel, consumerOffsetsChannel, createDiagnosticContext } from "../../diagnostic.js";
|
|
5
|
-
import { protocolErrors, UserError } from "../../errors.js";
|
|
5
|
+
import { findErrorBy, NetworkError, protocolErrors, UserError } from "../../errors.js";
|
|
6
6
|
import { INT32_SIZE } from "../../protocol/definitions.js";
|
|
7
7
|
import { Reader } from "../../protocol/reader.js";
|
|
8
8
|
import { IS_CONTROL } from "../../protocol/records.js";
|
|
@@ -15,7 +15,7 @@ import { MessagesStream } from "./messages-stream.js";
|
|
|
15
15
|
import { commitOptionsValidator, consumeOptionsValidator, consumerOptionsValidator, defaultConsumerOptions, fetchOptionsValidator, getLagOptionsValidator, groupIdAndOptionsValidator, groupOptionsValidator, listCommitsOptionsValidator, listOffsetsOptionsValidator } from "./options.js";
|
|
16
16
|
import { roundRobinAssigner } from "./partitions-assigners.js";
|
|
17
17
|
import { TopicsMap } from "./topics-map.js";
|
|
18
|
-
import { partitionKey } from "./utils.js";
|
|
18
|
+
import { nextFetchEpoch, partitionKey } from "./utils.js";
|
|
19
19
|
export class Consumer extends Base {
|
|
20
20
|
groupId;
|
|
21
21
|
groupInstanceId;
|
|
@@ -32,10 +32,15 @@ export class Consumer extends Base {
|
|
|
32
32
|
#heartbeatInterval;
|
|
33
33
|
#lastHeartbeatIntervalMs;
|
|
34
34
|
#lastHeartbeat;
|
|
35
|
+
#heartbeatStallTimer;
|
|
36
|
+
#heartbeatStallStart;
|
|
37
|
+
#heartbeatStalled;
|
|
38
|
+
#heartbeatStallError;
|
|
35
39
|
#useConsumerGroupProtocol;
|
|
36
40
|
#memberEpoch;
|
|
37
41
|
#groupRemoteAssignor;
|
|
38
42
|
#clientRack;
|
|
43
|
+
#fetchSessions;
|
|
39
44
|
#preferredReadReplicas;
|
|
40
45
|
#streams;
|
|
41
46
|
#lagMonitoring;
|
|
@@ -76,12 +81,17 @@ export class Consumer extends Base {
|
|
|
76
81
|
this.#heartbeatInterval = null;
|
|
77
82
|
this.#lastHeartbeatIntervalMs = 0;
|
|
78
83
|
this.#lastHeartbeat = null;
|
|
84
|
+
this.#heartbeatStallTimer = null;
|
|
85
|
+
this.#heartbeatStallStart = null;
|
|
86
|
+
this.#heartbeatStalled = false;
|
|
87
|
+
this.#heartbeatStallError = undefined;
|
|
79
88
|
this.#streams = new Set();
|
|
80
89
|
this.#lagMonitoring = null;
|
|
81
90
|
this.#memberEpoch = 0;
|
|
82
91
|
this.#useConsumerGroupProtocol = this[kOptions].groupProtocol === 'consumer';
|
|
83
92
|
this.#groupRemoteAssignor = this[kOptions].groupRemoteAssignor ?? null;
|
|
84
93
|
this.#clientRack = this[kOptions].clientRack ?? '';
|
|
94
|
+
this.#fetchSessions = new Map();
|
|
85
95
|
this.#preferredReadReplicas = new Map();
|
|
86
96
|
this.#streamContext = options.streamContext ?? options.context;
|
|
87
97
|
this.#validateGroupOptions(this[kOptions], groupIdAndOptionsValidator);
|
|
@@ -119,6 +129,7 @@ export class Consumer extends Base {
|
|
|
119
129
|
}
|
|
120
130
|
this[kClosed] = true;
|
|
121
131
|
clearTimeout(this.#lagMonitoring);
|
|
132
|
+
this.#resetHeartbeatStall();
|
|
122
133
|
let closer;
|
|
123
134
|
if (this.#useConsumerGroupProtocol) {
|
|
124
135
|
closer = this.#leaveGroupConsumerProtocol.bind(this);
|
|
@@ -144,6 +155,7 @@ export class Consumer extends Base {
|
|
|
144
155
|
return;
|
|
145
156
|
}
|
|
146
157
|
this.topics.clear();
|
|
158
|
+
this.#fetchSessions.clear();
|
|
147
159
|
if (this[kPrometheus]) {
|
|
148
160
|
ensureMetric(this[kPrometheus], 'Gauge', 'kafka_consumers', 'Number of active Kafka consumers').dec();
|
|
149
161
|
}
|
|
@@ -175,6 +187,10 @@ export class Consumer extends Base {
|
|
|
175
187
|
callback(validationError);
|
|
176
188
|
return callback[kCallbackPromise];
|
|
177
189
|
}
|
|
190
|
+
if (options.onCorruptedMessage && options.onDeserializationError) {
|
|
191
|
+
callback(new UserError('Cannot specify both onCorruptedMessage and onDeserializationError.'));
|
|
192
|
+
return callback[kCallbackPromise];
|
|
193
|
+
}
|
|
178
194
|
options.autocommit ??= this[kOptions].autocommit ?? true;
|
|
179
195
|
options.maxBytes ??= this[kOptions].maxBytes;
|
|
180
196
|
options.maxBytesPerPartition ??= this[kOptions].maxBytesPerPartition ?? options.maxBytes;
|
|
@@ -392,6 +408,10 @@ export class Consumer extends Base {
|
|
|
392
408
|
options.rebalanceTimeout ??= this[kOptions].rebalanceTimeout;
|
|
393
409
|
options.heartbeatInterval ??= this[kOptions].heartbeatInterval;
|
|
394
410
|
options.protocols ??= this[kOptions].protocols;
|
|
411
|
+
const protocolsMetadata = this[kOptions].protocolsMetadata;
|
|
412
|
+
if (!options.protocolsMetadata && protocolsMetadata) {
|
|
413
|
+
options.protocolsMetadata = protocolsMetadata;
|
|
414
|
+
}
|
|
395
415
|
this.#validateGroupOptions(options);
|
|
396
416
|
this.#membershipActive = true;
|
|
397
417
|
this.#joinGroup(options, callback);
|
|
@@ -413,6 +433,7 @@ export class Consumer extends Base {
|
|
|
413
433
|
return callback[kCallbackPromise];
|
|
414
434
|
}
|
|
415
435
|
this.#membershipActive = false;
|
|
436
|
+
this.#resetHeartbeatStall();
|
|
416
437
|
this.#leaveGroupClassicProtocol(force, error => {
|
|
417
438
|
if (error) {
|
|
418
439
|
this.#membershipActive = true;
|
|
@@ -475,12 +496,15 @@ export class Consumer extends Base {
|
|
|
475
496
|
}
|
|
476
497
|
#fetch(options, callback) {
|
|
477
498
|
const isolationLevel = options.isolationLevel ?? this[kOptions].isolationLevel;
|
|
499
|
+
let refreshMetadata = false;
|
|
478
500
|
this[kPerformWithRetry]('fetch', retryCallback => {
|
|
479
|
-
this[kMetadata]({ topics: this.topics.current }, (error, metadata) => {
|
|
501
|
+
this[kMetadata]({ topics: this.topics.current, forceUpdate: refreshMetadata }, (error, metadata) => {
|
|
480
502
|
if (error) {
|
|
503
|
+
refreshMetadata = NetworkError.isRetryable(error);
|
|
481
504
|
retryCallback(error);
|
|
482
505
|
return;
|
|
483
506
|
}
|
|
507
|
+
refreshMetadata = false;
|
|
484
508
|
const topicIds = this.#topicIdsById(metadata);
|
|
485
509
|
const node = this.#fetchNodeForRequest(metadata, options.node, options.topics, topicIds, Date.now());
|
|
486
510
|
const broker = metadata.brokers.get(node);
|
|
@@ -491,7 +515,9 @@ export class Consumer extends Base {
|
|
|
491
515
|
const pool = options.connectionPool ?? this[kConnections];
|
|
492
516
|
pool.get(broker, (error, connection) => {
|
|
493
517
|
if (error) {
|
|
518
|
+
refreshMetadata = NetworkError.isRetryable(error);
|
|
494
519
|
this.#clearPreferredReadReplicas(options.topics, topicIds);
|
|
520
|
+
this.#fetchSessions.delete(node);
|
|
495
521
|
// When a connection was not available (either interrupted or not available) we
|
|
496
522
|
// reset the leader epoch in the options so that when connection is re-established again we can continue
|
|
497
523
|
for (const topic of options.topics) {
|
|
@@ -505,14 +531,107 @@ export class Consumer extends Base {
|
|
|
505
531
|
}
|
|
506
532
|
this[kGetApi]('Fetch', (error, api) => {
|
|
507
533
|
if (error) {
|
|
534
|
+
refreshMetadata = NetworkError.isRetryable(error);
|
|
508
535
|
retryCallback(error);
|
|
509
536
|
return;
|
|
510
537
|
}
|
|
511
|
-
|
|
538
|
+
let session = this.#fetchSessions.get(node);
|
|
539
|
+
if (session && session.pool !== pool) {
|
|
540
|
+
session = undefined;
|
|
541
|
+
}
|
|
542
|
+
const sessionId = session?.id ?? 0;
|
|
543
|
+
const sessionEpoch = session?.epoch ?? 0;
|
|
544
|
+
// The desired state of the session: options.topics always lists all the wanted partitions
|
|
545
|
+
const desired = new Map();
|
|
546
|
+
for (const topic of options.topics) {
|
|
547
|
+
let partitions = desired.get(topic.topicId);
|
|
548
|
+
if (!partitions) {
|
|
549
|
+
partitions = new Map();
|
|
550
|
+
desired.set(topic.topicId, partitions);
|
|
551
|
+
}
|
|
552
|
+
for (const partition of topic.partitions) {
|
|
553
|
+
// Copy the partition since the data is mutated in the error paths
|
|
554
|
+
partitions.set(partition.partition, { ...partition });
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
let requestTopics = options.topics;
|
|
558
|
+
const forgottenTopicsData = [];
|
|
559
|
+
if (session) {
|
|
560
|
+
// Only send the partitions which are new or whose state changed: the broker
|
|
561
|
+
// keeps serving the unchanged ones from the session (KIP-227)
|
|
562
|
+
requestTopics = [];
|
|
563
|
+
for (const [topicId, partitions] of desired) {
|
|
564
|
+
const cached = session.partitions.get(topicId);
|
|
565
|
+
const changed = [];
|
|
566
|
+
for (const partition of partitions.values()) {
|
|
567
|
+
const previous = cached?.get(partition.partition);
|
|
568
|
+
if (!previous ||
|
|
569
|
+
previous.fetchOffset !== partition.fetchOffset ||
|
|
570
|
+
previous.currentLeaderEpoch !== partition.currentLeaderEpoch ||
|
|
571
|
+
previous.lastFetchedEpoch !== partition.lastFetchedEpoch ||
|
|
572
|
+
previous.partitionMaxBytes !== partition.partitionMaxBytes) {
|
|
573
|
+
changed.push(partition);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
if (changed.length > 0) {
|
|
577
|
+
requestTopics.push({ topicId, partitions: changed });
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
// Ask the broker to remove from the session the partitions which are no
|
|
581
|
+
// longer wanted, otherwise it keeps serving them forever
|
|
582
|
+
for (const [topicId, partitions] of session.partitions) {
|
|
583
|
+
const stillDesired = desired.get(topicId);
|
|
584
|
+
const forgotten = [];
|
|
585
|
+
for (const partition of partitions.keys()) {
|
|
586
|
+
if (!stillDesired?.has(partition)) {
|
|
587
|
+
forgotten.push(partition);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
if (forgotten.length > 0) {
|
|
591
|
+
forgottenTopicsData.push({ topic: topicId, partitions: forgotten });
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
// Fetch v12 identifies topics by name, while later versions use UUIDs.
|
|
596
|
+
const useTopicNames = api.version <= 12;
|
|
597
|
+
let topicIdsByName;
|
|
598
|
+
if (useTopicNames) {
|
|
599
|
+
// Built here rather than in the response callback so that the fetch loop allocates
|
|
600
|
+
// it once per request instead of once per request and once per response.
|
|
601
|
+
topicIdsByName = new Map();
|
|
602
|
+
for (const [id, name] of topicIds) {
|
|
603
|
+
topicIdsByName.set(name, id);
|
|
604
|
+
}
|
|
605
|
+
requestTopics = requestTopics.map(topic => ({
|
|
606
|
+
...topic,
|
|
607
|
+
topicId: topicIds.get(topic.topicId) ?? topic.topicId
|
|
608
|
+
}));
|
|
609
|
+
for (const forgotten of forgottenTopicsData) {
|
|
610
|
+
const topicId = forgotten.topicId ?? forgotten.topic;
|
|
611
|
+
forgotten.topicId = topicIds.get(topicId) ?? topicId;
|
|
612
|
+
delete forgotten.topic;
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
api(connection, options.maxWaitTime ?? this[kOptions].maxWaitTime, options.minBytes ?? this[kOptions].minBytes, options.maxBytes ?? this[kOptions].maxBytes, isolationLevel, sessionId, sessionEpoch, requestTopics, forgottenTopicsData, this.#clientRack, (error, result) => {
|
|
616
|
+
const response = result ?? error?.response;
|
|
617
|
+
if (response && !response.nodeEndpoints) {
|
|
618
|
+
response.nodeEndpoints = [];
|
|
619
|
+
}
|
|
620
|
+
if (useTopicNames && response) {
|
|
621
|
+
for (const topic of response.responses) {
|
|
622
|
+
topic.topicId = topicIdsByName.get(topic.topicId) ?? topic.topicId;
|
|
623
|
+
}
|
|
624
|
+
}
|
|
512
625
|
if (error) {
|
|
626
|
+
refreshMetadata = NetworkError.isRetryable(error);
|
|
513
627
|
this.#clearPreferredReadReplicas(options.topics, topicIds);
|
|
514
|
-
|
|
515
|
-
|
|
628
|
+
if (findErrorBy(error, 'apiId', 'FETCH_SESSION_ID_NOT_FOUND') ||
|
|
629
|
+
findErrorBy(error, 'apiId', 'INVALID_FETCH_SESSION_EPOCH') ||
|
|
630
|
+
findErrorBy(error, 'apiId', 'FETCH_SESSION_TOPIC_ID_ERROR')) {
|
|
631
|
+
this.#fetchSessions.delete(node);
|
|
632
|
+
}
|
|
633
|
+
if (findErrorBy(error, 'apiId', 'FENCED_LEADER_EPOCH')) {
|
|
634
|
+
this.#fetchSessions.delete(node);
|
|
516
635
|
this.clearMetadata();
|
|
517
636
|
for (const topic of options.topics) {
|
|
518
637
|
for (const partition of topic.partitions) {
|
|
@@ -524,6 +643,7 @@ export class Consumer extends Base {
|
|
|
524
643
|
}
|
|
525
644
|
else {
|
|
526
645
|
this.#updatePreferredReadReplicas(metadata, topicIds, result);
|
|
646
|
+
this.#updateFetchSession(node, pool, sessionEpoch, result.sessionId, desired);
|
|
527
647
|
}
|
|
528
648
|
retryCallback(error, result);
|
|
529
649
|
});
|
|
@@ -542,6 +662,20 @@ export class Consumer extends Base {
|
|
|
542
662
|
callback(error, response);
|
|
543
663
|
}, 0);
|
|
544
664
|
}
|
|
665
|
+
#updateFetchSession(node, pool, sentEpoch, responseSessionId, desired) {
|
|
666
|
+
if (!responseSessionId) {
|
|
667
|
+
this.#fetchSessions.delete(node);
|
|
668
|
+
return;
|
|
669
|
+
}
|
|
670
|
+
// After a successful fetch the broker session contains exactly the desired partitions:
|
|
671
|
+
// unchanged ones already matched it, changed ones were sent and removed ones were forgotten
|
|
672
|
+
this.#fetchSessions.set(node, {
|
|
673
|
+
id: responseSessionId,
|
|
674
|
+
epoch: nextFetchEpoch(sentEpoch),
|
|
675
|
+
pool,
|
|
676
|
+
partitions: desired
|
|
677
|
+
});
|
|
678
|
+
}
|
|
545
679
|
#commit(options, callback, rejoinAttempts = 0) {
|
|
546
680
|
this.#performGroupOperation('commit', (connection, groupCallback) => {
|
|
547
681
|
const topics = new Map();
|
|
@@ -579,12 +713,12 @@ export class Consumer extends Base {
|
|
|
579
713
|
callback(error);
|
|
580
714
|
});
|
|
581
715
|
}
|
|
582
|
-
#listOffsets(withTimestamps, options, callback) {
|
|
716
|
+
#listOffsets(withTimestamps, options, callback, forceUpdateMetadata = false) {
|
|
583
717
|
let topics = options.topics;
|
|
584
718
|
if (!topics || topics.length === 0) {
|
|
585
719
|
topics = this.topics.current;
|
|
586
720
|
}
|
|
587
|
-
this[kMetadata]({ topics }, (error, metadata) => {
|
|
721
|
+
this[kMetadata]({ topics, forceUpdate: forceUpdateMetadata }, (error, metadata) => {
|
|
588
722
|
if (error) {
|
|
589
723
|
callback(error);
|
|
590
724
|
return;
|
|
@@ -639,6 +773,11 @@ export class Consumer extends Base {
|
|
|
639
773
|
}, concurrentCallback, 0);
|
|
640
774
|
}, (error, responses) => {
|
|
641
775
|
if (error) {
|
|
776
|
+
if (!forceUpdateMetadata && NetworkError.isRetryable(error)) {
|
|
777
|
+
this.clearMetadata();
|
|
778
|
+
this.#listOffsets(withTimestamps, options, callback, true);
|
|
779
|
+
return;
|
|
780
|
+
}
|
|
642
781
|
callback(this.#handleError(error));
|
|
643
782
|
return;
|
|
644
783
|
}
|
|
@@ -695,13 +834,23 @@ export class Consumer extends Base {
|
|
|
695
834
|
memberEpoch: this.#useConsumerGroupProtocol ? this.#memberEpoch : -1,
|
|
696
835
|
topics
|
|
697
836
|
}
|
|
698
|
-
], false,
|
|
837
|
+
], false, (error, response) => {
|
|
838
|
+
if (error || api.version >= 8) {
|
|
839
|
+
groupCallback(error, response);
|
|
840
|
+
return;
|
|
841
|
+
}
|
|
842
|
+
const legacyResponse = response;
|
|
843
|
+
groupCallback(null, {
|
|
844
|
+
throttleTimeMs: legacyResponse.throttleTimeMs,
|
|
845
|
+
groups: [{ groupId: this.groupId, topics: legacyResponse.topics, errorCode: legacyResponse.errorCode }]
|
|
846
|
+
});
|
|
847
|
+
});
|
|
699
848
|
});
|
|
700
849
|
}, (error, response) => {
|
|
701
850
|
if (error) {
|
|
702
851
|
if (this.#useConsumerGroupProtocol &&
|
|
703
852
|
staleMemberEpochRetries < this[kOptions].retries &&
|
|
704
|
-
error
|
|
853
|
+
findErrorBy(error, 'apiId', 'STALE_MEMBER_EPOCH')) {
|
|
705
854
|
this.#consumerGroupHeartbeat(this[kOptions], heartbeatError => {
|
|
706
855
|
if (heartbeatError) {
|
|
707
856
|
callback(this.#handleError(heartbeatError));
|
|
@@ -753,6 +902,7 @@ export class Consumer extends Base {
|
|
|
753
902
|
return;
|
|
754
903
|
}
|
|
755
904
|
this.emitWithDebug('consumer:heartbeat', 'start', eventPayload);
|
|
905
|
+
this.#trackHeartbeatStall(options);
|
|
756
906
|
this[kGetApi]('Heartbeat', (error, api) => {
|
|
757
907
|
if (error) {
|
|
758
908
|
groupCallback(error);
|
|
@@ -769,21 +919,43 @@ export class Consumer extends Base {
|
|
|
769
919
|
if (error) {
|
|
770
920
|
this.#cancelHeartbeat();
|
|
771
921
|
if (this.#getRejoinError(error)) {
|
|
922
|
+
// A rejoin can legitimately block up to rebalanceTimeout:
|
|
923
|
+
// - extend the stall window by that bound rather than pausing it
|
|
924
|
+
// - a rejoin that never completes still surfaces as a stall
|
|
925
|
+
this.#resetHeartbeatStall();
|
|
926
|
+
this.#trackHeartbeatStall(options, error, options.rebalanceTimeout + this.#heartbeatStallTimeoutFor(options));
|
|
772
927
|
this[kPerformWithRetry]('rejoinGroup', retryCallback => {
|
|
773
928
|
this.#joinGroup(options, retryCallback);
|
|
774
929
|
}, error => {
|
|
775
930
|
if (error) {
|
|
776
931
|
this.emitWithDebug(null, 'error', error);
|
|
932
|
+
if (!this.#heartbeatStalled) {
|
|
933
|
+
// No more heartbeats will be scheduled: restart the stall window without
|
|
934
|
+
// the rejoin grace, keeping the triggering heartbeat error as lastError.
|
|
935
|
+
const heartbeatError = this.#heartbeatStallError;
|
|
936
|
+
this.#resetHeartbeatStall();
|
|
937
|
+
this.#trackHeartbeatStall(options, heartbeatError);
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
else {
|
|
941
|
+
// Rejoin succeeded: drop the extended window; the next heartbeat opens the normal one.
|
|
942
|
+
this.#resetHeartbeatStall();
|
|
777
943
|
}
|
|
778
944
|
this.emitWithDebug('consumer', 'rejoin');
|
|
779
945
|
}, 0);
|
|
780
946
|
return;
|
|
781
947
|
}
|
|
948
|
+
// The error was not group related, so we schedule another heartbeat.
|
|
949
|
+
// Do this before notifying listeners so they can still cancel it.
|
|
950
|
+
this.#heartbeatInterval = setTimeout(() => {
|
|
951
|
+
this.#heartbeat(options);
|
|
952
|
+
}, options.heartbeatInterval);
|
|
782
953
|
this.emitWithDebug('consumer:heartbeat', 'error', { ...eventPayload, error });
|
|
783
|
-
|
|
954
|
+
this.#trackHeartbeatStall(options, error);
|
|
784
955
|
}
|
|
785
956
|
else {
|
|
786
957
|
this.#lastHeartbeat = new Date();
|
|
958
|
+
this.#resetHeartbeatStall();
|
|
787
959
|
this.emitWithDebug('consumer:heartbeat', 'end', eventPayload);
|
|
788
960
|
}
|
|
789
961
|
this.#heartbeatInterval?.refresh();
|
|
@@ -793,6 +965,47 @@ export class Consumer extends Base {
|
|
|
793
965
|
clearTimeout(this.#heartbeatInterval);
|
|
794
966
|
this.#heartbeatInterval = null;
|
|
795
967
|
}
|
|
968
|
+
#heartbeatStallTimeoutFor(options) {
|
|
969
|
+
return (options.heartbeatStallTimeout ??
|
|
970
|
+
this[kOptions].heartbeatStallTimeout ??
|
|
971
|
+
options.rebalanceTimeout ??
|
|
972
|
+
this[kOptions].rebalanceTimeout ??
|
|
973
|
+
defaultConsumerOptions.rebalanceTimeout);
|
|
974
|
+
}
|
|
975
|
+
// Opens the stall window on the first heartbeat attempt after the last success.
|
|
976
|
+
// The window survives retries and only #resetHeartbeatStall closes it.
|
|
977
|
+
#trackHeartbeatStall(options, error, timeout) {
|
|
978
|
+
if (error) {
|
|
979
|
+
this.#heartbeatStallError = error;
|
|
980
|
+
}
|
|
981
|
+
if (this.#heartbeatStalled || this.#heartbeatStallTimer) {
|
|
982
|
+
return;
|
|
983
|
+
}
|
|
984
|
+
timeout ??= this.#heartbeatStallTimeoutFor(options);
|
|
985
|
+
this.#heartbeatStallStart = Date.now();
|
|
986
|
+
this.#heartbeatStallTimer = setTimeout(() => {
|
|
987
|
+
this.#heartbeatStallTimer = null;
|
|
988
|
+
// Emit once per stall episode. The next successful heartbeat re-arms the tracking.
|
|
989
|
+
this.#heartbeatStalled = true;
|
|
990
|
+
if (this[kClosed] || !this.#membershipActive) {
|
|
991
|
+
return;
|
|
992
|
+
}
|
|
993
|
+
this.emitWithDebug('consumer:heartbeat', 'stalled', {
|
|
994
|
+
lastError: this.#heartbeatStallError,
|
|
995
|
+
lastHeartbeat: this.#lastHeartbeat,
|
|
996
|
+
stalledFor: Date.now() - this.#heartbeatStallStart
|
|
997
|
+
});
|
|
998
|
+
}, timeout);
|
|
999
|
+
}
|
|
1000
|
+
#resetHeartbeatStall() {
|
|
1001
|
+
if (this.#heartbeatStallTimer) {
|
|
1002
|
+
clearTimeout(this.#heartbeatStallTimer);
|
|
1003
|
+
this.#heartbeatStallTimer = null;
|
|
1004
|
+
}
|
|
1005
|
+
this.#heartbeatStallStart = null;
|
|
1006
|
+
this.#heartbeatStalled = false;
|
|
1007
|
+
this.#heartbeatStallError = undefined;
|
|
1008
|
+
}
|
|
796
1009
|
#consumerGroupHeartbeat(options, callback) {
|
|
797
1010
|
options.rebalanceTimeout ??= this[kOptions].rebalanceTimeout;
|
|
798
1011
|
consumerHeartbeatChannel.traceCallback(this.#performConsumerGroupHeartbeat, 1, createDiagnosticContext({ client: this, operation: 'consumerGroupHeartbeat' }), this, options, callback);
|
|
@@ -800,6 +1013,7 @@ export class Consumer extends Base {
|
|
|
800
1013
|
#performConsumerGroupHeartbeat(options, callback) {
|
|
801
1014
|
this.#performGroupOperation('consumerGroupHeartbeat', (connection, groupCallback) => {
|
|
802
1015
|
this.emitWithDebug('consumer:heartbeat', 'start');
|
|
1016
|
+
this.#trackHeartbeatStall(options);
|
|
803
1017
|
this[kGetApi]('ConsumerGroupHeartbeat', (error, api) => {
|
|
804
1018
|
if (error) {
|
|
805
1019
|
groupCallback(error);
|
|
@@ -810,6 +1024,7 @@ export class Consumer extends Base {
|
|
|
810
1024
|
});
|
|
811
1025
|
}, (error, response) => {
|
|
812
1026
|
if (this[kClosed]) {
|
|
1027
|
+
this.#resetHeartbeatStall();
|
|
813
1028
|
this.emitWithDebug('consumer:heartbeat', 'end');
|
|
814
1029
|
callback(null);
|
|
815
1030
|
return;
|
|
@@ -817,6 +1032,7 @@ export class Consumer extends Base {
|
|
|
817
1032
|
if (error) {
|
|
818
1033
|
this.#cancelHeartbeat();
|
|
819
1034
|
this.emitWithDebug('consumer:heartbeat', 'error', { error });
|
|
1035
|
+
this.#trackHeartbeatStall(options, error);
|
|
820
1036
|
const fenced = error.response?.errorCode === protocolErrors.FENCED_MEMBER_EPOCH.code;
|
|
821
1037
|
if (fenced) {
|
|
822
1038
|
this.#assignments = [];
|
|
@@ -834,6 +1050,7 @@ export class Consumer extends Base {
|
|
|
834
1050
|
return;
|
|
835
1051
|
}
|
|
836
1052
|
this.#lastHeartbeat = new Date();
|
|
1053
|
+
this.#resetHeartbeatStall();
|
|
837
1054
|
this.#memberEpoch = response.memberEpoch;
|
|
838
1055
|
if (response.memberId) {
|
|
839
1056
|
const changed = this.memberId !== response.memberId;
|
|
@@ -883,6 +1100,7 @@ export class Consumer extends Base {
|
|
|
883
1100
|
if (toRevoke.length === 0) {
|
|
884
1101
|
return;
|
|
885
1102
|
}
|
|
1103
|
+
this.emitWithDebug('consumer', 'group:rebalance', { groupId: this.groupId });
|
|
886
1104
|
for (const stream of this.#streams) {
|
|
887
1105
|
stream.pause();
|
|
888
1106
|
stream[kAutocommit]();
|
|
@@ -951,7 +1169,35 @@ export class Consumer extends Base {
|
|
|
951
1169
|
callback(err);
|
|
952
1170
|
});
|
|
953
1171
|
}
|
|
954
|
-
#leaveGroupConsumerProtocol(
|
|
1172
|
+
#leaveGroupConsumerProtocol(force, callback) {
|
|
1173
|
+
// Remove streams that might have been exited in the meanwhile
|
|
1174
|
+
for (const stream of this.#streams) {
|
|
1175
|
+
if (stream.closed || stream.destroyed) {
|
|
1176
|
+
this.#streams.delete(stream);
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1179
|
+
// Active streams must be closed before leaving the group, exactly like in the classic protocol.
|
|
1180
|
+
// Their fetch loop keeps running until they are closed and, since Consumer.close marks the client
|
|
1181
|
+
// as closed before leaving, any fetch scheduled in the meanwhile would fail with "Client is closed."
|
|
1182
|
+
// and destroy the stream with an error the user never asked for.
|
|
1183
|
+
if (this.#streams.size) {
|
|
1184
|
+
if (!force) {
|
|
1185
|
+
callback(new UserError('Cannot leave group while consuming messages.'));
|
|
1186
|
+
return;
|
|
1187
|
+
}
|
|
1188
|
+
runConcurrentCallbacks('Closing streams failed.', this.#streams, (stream, concurrentCallback) => {
|
|
1189
|
+
stream.close(concurrentCallback);
|
|
1190
|
+
}, error => {
|
|
1191
|
+
/* c8 ignore next 4 - Hard to test */
|
|
1192
|
+
if (error) {
|
|
1193
|
+
callback(error);
|
|
1194
|
+
return;
|
|
1195
|
+
}
|
|
1196
|
+
// All streams are closed, try the operation again without force
|
|
1197
|
+
this.#leaveGroupConsumerProtocol(false, callback);
|
|
1198
|
+
});
|
|
1199
|
+
return;
|
|
1200
|
+
}
|
|
955
1201
|
// Leave by sending a heartbeat with memberEpoch = -1
|
|
956
1202
|
this.#cancelHeartbeat();
|
|
957
1203
|
this.#performDeduplicateGroupOperaton('leaveGroupConsumerProtocol', (connection, groupCallback) => {
|
|
@@ -1044,7 +1290,12 @@ export class Consumer extends Base {
|
|
|
1044
1290
|
retryCallback(error);
|
|
1045
1291
|
return;
|
|
1046
1292
|
}
|
|
1047
|
-
api(connection, FindCoordinatorKeyTypes.GROUP, [this.groupId],
|
|
1293
|
+
api(connection, FindCoordinatorKeyTypes.GROUP, [this.groupId], (error, response) => {
|
|
1294
|
+
if (response && api.version < 4) {
|
|
1295
|
+
response.coordinators[0].key = this.groupId;
|
|
1296
|
+
}
|
|
1297
|
+
retryCallback(error, response);
|
|
1298
|
+
});
|
|
1048
1299
|
});
|
|
1049
1300
|
});
|
|
1050
1301
|
}, (error, response) => {
|
|
@@ -1064,45 +1315,20 @@ export class Consumer extends Base {
|
|
|
1064
1315
|
return;
|
|
1065
1316
|
}
|
|
1066
1317
|
this.#cancelHeartbeat();
|
|
1067
|
-
|
|
1068
|
-
for (const protocol of options.protocols) {
|
|
1069
|
-
protocols.push({
|
|
1070
|
-
name: protocol.name,
|
|
1071
|
-
metadata: this.#encodeProtocolSubscriptionMetadata(protocol, this.topics.current)
|
|
1072
|
-
});
|
|
1073
|
-
}
|
|
1074
|
-
this.#performDeduplicateGroupOperaton('joinGroup', (connection, groupCallback) => {
|
|
1075
|
-
this[kGetApi]('JoinGroup', (error, api) => {
|
|
1076
|
-
if (error) {
|
|
1077
|
-
groupCallback(error);
|
|
1078
|
-
return;
|
|
1079
|
-
}
|
|
1080
|
-
api(connection, this.groupId, options.sessionTimeout, options.rebalanceTimeout, this.memberId ?? '', this.groupInstanceId, 'consumer', protocols, '', groupCallback);
|
|
1081
|
-
});
|
|
1082
|
-
}, (error, response) => {
|
|
1083
|
-
if (!this.#membershipActive) {
|
|
1084
|
-
callback(null);
|
|
1085
|
-
return;
|
|
1086
|
-
}
|
|
1318
|
+
this.#createJoinGroupProtocols(options, (error, protocols) => {
|
|
1087
1319
|
if (error) {
|
|
1088
|
-
if (this.#getRejoinError(error)) {
|
|
1089
|
-
this.#performJoinGroup(options, callback);
|
|
1090
|
-
return;
|
|
1091
|
-
}
|
|
1092
1320
|
callback(error);
|
|
1093
1321
|
return;
|
|
1094
1322
|
}
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
}
|
|
1104
|
-
// Send a syncGroup request
|
|
1105
|
-
this.#syncGroup(options.partitionAssigner, (error, response) => {
|
|
1323
|
+
this.#performDeduplicateGroupOperaton('joinGroup', (connection, groupCallback) => {
|
|
1324
|
+
this[kGetApi]('JoinGroup', (error, api) => {
|
|
1325
|
+
if (error) {
|
|
1326
|
+
groupCallback(error);
|
|
1327
|
+
return;
|
|
1328
|
+
}
|
|
1329
|
+
api(connection, this.groupId, options.sessionTimeout, options.rebalanceTimeout, this.memberId ?? '', this.groupInstanceId, 'consumer', protocols, '', groupCallback);
|
|
1330
|
+
});
|
|
1331
|
+
}, (error, response) => {
|
|
1106
1332
|
if (!this.#membershipActive) {
|
|
1107
1333
|
callback(null);
|
|
1108
1334
|
return;
|
|
@@ -1115,20 +1341,44 @@ export class Consumer extends Base {
|
|
|
1115
1341
|
callback(error);
|
|
1116
1342
|
return;
|
|
1117
1343
|
}
|
|
1118
|
-
|
|
1119
|
-
this
|
|
1120
|
-
this
|
|
1121
|
-
this.#
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1344
|
+
// This is for Azure Event Hubs compatibility, which does not respond with an error on the first join
|
|
1345
|
+
this.memberId = response.memberId;
|
|
1346
|
+
this.generationId = response.generationId;
|
|
1347
|
+
this.#isLeader = response.leader === this.memberId;
|
|
1348
|
+
this.#protocol = response.protocolName;
|
|
1349
|
+
this.#members = new Map();
|
|
1350
|
+
for (const member of response.members) {
|
|
1351
|
+
this.#members.set(member.memberId, this.#decodeProtocolSubscriptionMetadata(member.memberId, member.metadata));
|
|
1352
|
+
}
|
|
1353
|
+
// Send a syncGroup request
|
|
1354
|
+
this.#syncGroup(options.partitionAssigner, (error, response) => {
|
|
1355
|
+
if (!this.#membershipActive) {
|
|
1356
|
+
callback(null);
|
|
1357
|
+
return;
|
|
1358
|
+
}
|
|
1359
|
+
if (error) {
|
|
1360
|
+
if (this.#getRejoinError(error)) {
|
|
1361
|
+
this.#performJoinGroup(options, callback);
|
|
1362
|
+
return;
|
|
1363
|
+
}
|
|
1364
|
+
callback(error);
|
|
1365
|
+
return;
|
|
1366
|
+
}
|
|
1367
|
+
this.assignments = response;
|
|
1368
|
+
this.#syncPreferredReadReplicas();
|
|
1369
|
+
this.#cancelHeartbeat();
|
|
1370
|
+
this.#heartbeatInterval = setTimeout(() => {
|
|
1371
|
+
this.#heartbeat(options);
|
|
1372
|
+
}, options.heartbeatInterval);
|
|
1373
|
+
this.emitWithDebug('consumer', 'group:join', {
|
|
1374
|
+
groupId: this.groupId,
|
|
1375
|
+
memberId: this.memberId,
|
|
1376
|
+
generationId: this.generationId,
|
|
1377
|
+
isLeader: this.#isLeader,
|
|
1378
|
+
assignments: this.assignments
|
|
1379
|
+
});
|
|
1380
|
+
callback(null, this.memberId);
|
|
1130
1381
|
});
|
|
1131
|
-
callback(null, this.memberId);
|
|
1132
1382
|
});
|
|
1133
1383
|
});
|
|
1134
1384
|
}
|
|
@@ -1171,7 +1421,7 @@ export class Consumer extends Base {
|
|
|
1171
1421
|
});
|
|
1172
1422
|
}, error => {
|
|
1173
1423
|
if (error) {
|
|
1174
|
-
const unknownMemberError = error
|
|
1424
|
+
const unknownMemberError = findErrorBy(error, 'unknownMemberId', true);
|
|
1175
1425
|
// This is to avoid throwing an error if a group join was cancelled.
|
|
1176
1426
|
if (!unknownMemberError) {
|
|
1177
1427
|
callback(error);
|
|
@@ -1209,11 +1459,17 @@ export class Consumer extends Base {
|
|
|
1209
1459
|
topicSubscriptions.push(subscription);
|
|
1210
1460
|
}
|
|
1211
1461
|
}
|
|
1212
|
-
|
|
1462
|
+
const subscribedTopics = Array.from(topicsSubscriptions.keys());
|
|
1463
|
+
this[kMetadata]({ topics: subscribedTopics }, (error, metadata) => {
|
|
1213
1464
|
if (error) {
|
|
1214
1465
|
callback(this.#handleError(error));
|
|
1215
1466
|
return;
|
|
1216
1467
|
}
|
|
1468
|
+
const missingTopic = subscribedTopics.find(topic => !metadata.topics.has(topic));
|
|
1469
|
+
if (missingTopic) {
|
|
1470
|
+
callback(this.#handleError(new NetworkError(`Cannot compute group assignments: metadata for subscribed topic "${missingTopic}" is not available in the current cluster metadata.`, { canRetry: true, hasStaleMetadata: true })));
|
|
1471
|
+
return;
|
|
1472
|
+
}
|
|
1217
1473
|
this.#performSyncGroup(partitionsAssigner, this.#createAssignments(partitionsAssigner, metadata), callback);
|
|
1218
1474
|
});
|
|
1219
1475
|
return;
|
|
@@ -1282,6 +1538,61 @@ export class Consumer extends Base {
|
|
|
1282
1538
|
throw new UserError(this[kFormatValidationErrors](validator, '/options'));
|
|
1283
1539
|
}
|
|
1284
1540
|
}
|
|
1541
|
+
#createJoinGroupProtocols(options, callback) {
|
|
1542
|
+
if (typeof options.protocolsMetadata !== 'function') {
|
|
1543
|
+
callback(null, options.protocols.map(protocol => ({
|
|
1544
|
+
name: protocol.name,
|
|
1545
|
+
metadata: this.#encodeProtocolSubscriptionMetadata(protocol, this.topics.current)
|
|
1546
|
+
})));
|
|
1547
|
+
return;
|
|
1548
|
+
}
|
|
1549
|
+
this[kMetadata]({ topics: this.topics.current, forceUpdate: true }, (error, metadata) => {
|
|
1550
|
+
if (error) {
|
|
1551
|
+
callback(this.#handleError(error));
|
|
1552
|
+
return;
|
|
1553
|
+
}
|
|
1554
|
+
this.#resolveProtocolsMetadata(options.protocolsMetadata, options.protocols, this.topics.current, metadata, (error, userData) => {
|
|
1555
|
+
if (error) {
|
|
1556
|
+
callback(error);
|
|
1557
|
+
return;
|
|
1558
|
+
}
|
|
1559
|
+
else if (!Buffer.isBuffer(userData)) {
|
|
1560
|
+
callback(new UserError('protocolsMetadata must resolve to a Buffer.'));
|
|
1561
|
+
return;
|
|
1562
|
+
}
|
|
1563
|
+
callback(null, options.protocols.map(protocol => ({
|
|
1564
|
+
name: protocol.name,
|
|
1565
|
+
metadata: this.#encodeProtocolSubscriptionMetadata({ ...protocol, metadata: userData }, this.topics.current)
|
|
1566
|
+
})));
|
|
1567
|
+
});
|
|
1568
|
+
});
|
|
1569
|
+
}
|
|
1570
|
+
#resolveProtocolsMetadata(protocolsMetadata, protocols, topics, metadata, callback) {
|
|
1571
|
+
let settled = false;
|
|
1572
|
+
function resolveCallback(error, userData) {
|
|
1573
|
+
if (settled) {
|
|
1574
|
+
return;
|
|
1575
|
+
}
|
|
1576
|
+
settled = true;
|
|
1577
|
+
callback(error, userData);
|
|
1578
|
+
}
|
|
1579
|
+
let result;
|
|
1580
|
+
try {
|
|
1581
|
+
result = protocolsMetadata(protocols, topics, metadata, resolveCallback);
|
|
1582
|
+
if (typeof result !== 'undefined') {
|
|
1583
|
+
if (typeof result.then === 'function') {
|
|
1584
|
+
;
|
|
1585
|
+
result.then(userData => process.nextTick(resolveCallback, null, userData), error => process.nextTick(resolveCallback, error));
|
|
1586
|
+
}
|
|
1587
|
+
else {
|
|
1588
|
+
resolveCallback(null, result);
|
|
1589
|
+
}
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
catch (error) {
|
|
1593
|
+
resolveCallback(error);
|
|
1594
|
+
}
|
|
1595
|
+
}
|
|
1285
1596
|
/*
|
|
1286
1597
|
The following two methods follow:
|
|
1287
1598
|
https://github.com/apache/kafka/blob/trunk/clients/src/main/resources/common/message/ConsumerProtocolSubscription.json
|
|
@@ -1365,12 +1676,13 @@ export class Consumer extends Base {
|
|
|
1365
1676
|
if (!partition.records) {
|
|
1366
1677
|
continue;
|
|
1367
1678
|
}
|
|
1368
|
-
|
|
1679
|
+
const abortedTransactions = partition.abortedTransactions ?? [];
|
|
1680
|
+
if (abortedTransactions.length) {
|
|
1369
1681
|
const abortedRanges = new Map();
|
|
1370
1682
|
// Find first offsets
|
|
1371
1683
|
// For last offsets we set -1n as special value. It allows us to detect open ranges, whichs means
|
|
1372
1684
|
// that Kafka has not sent the control marker. In that case we ignore the range for safety.
|
|
1373
|
-
for (const aborted of
|
|
1685
|
+
for (const aborted of abortedTransactions) {
|
|
1374
1686
|
abortedRanges.set(aborted.producerId, [aborted.firstOffset, -1n]);
|
|
1375
1687
|
}
|
|
1376
1688
|
// Now find last offsets
|
|
@@ -1391,7 +1703,7 @@ export class Consumer extends Base {
|
|
|
1391
1703
|
}
|
|
1392
1704
|
}
|
|
1393
1705
|
#getRejoinError(error) {
|
|
1394
|
-
const protocolError = error
|
|
1706
|
+
const protocolError = findErrorBy(error, 'needsRejoin', true);
|
|
1395
1707
|
if (!protocolError) {
|
|
1396
1708
|
return null;
|
|
1397
1709
|
}
|
|
@@ -1477,17 +1789,14 @@ export class Consumer extends Base {
|
|
|
1477
1789
|
}
|
|
1478
1790
|
}
|
|
1479
1791
|
#handleError(error) {
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
kafkaError.findBy('apiId', 'NOT_COORDINATOR')) {
|
|
1489
|
-
this.#coordinatorId = null;
|
|
1490
|
-
}
|
|
1792
|
+
if (findErrorBy(error, 'hasStaleMetadata', true)) {
|
|
1793
|
+
this.clearMetadata();
|
|
1794
|
+
}
|
|
1795
|
+
else if (findErrorBy(error, 'code', 'PLT_KFK_NETWORK') ||
|
|
1796
|
+
findErrorBy(error, 'apiId', 'COORDINATOR_LOAD_IN_PROGRESS') ||
|
|
1797
|
+
findErrorBy(error, 'apiId', 'COORDINATOR_NOT_AVAILABLE') ||
|
|
1798
|
+
findErrorBy(error, 'apiId', 'NOT_COORDINATOR')) {
|
|
1799
|
+
this.#coordinatorId = null;
|
|
1491
1800
|
}
|
|
1492
1801
|
return error;
|
|
1493
1802
|
}
|