mirror of
https://github.com/hanzoai/traces.git
synced 2026-10-30 18:20:41 +00:00
* Update Prometheus to v0.307.2 * Update otel collector * Update OTel collector
85 lines
3.3 KiB
Go
85 lines
3.3 KiB
Go
package sarama
|
|
|
|
type apiVersionRange struct {
|
|
minVersion int16
|
|
maxVersion int16
|
|
}
|
|
|
|
type apiVersionMap map[int16]*apiVersionRange
|
|
|
|
// restrictApiVersion selects the appropriate API version for a given protocol body according to
|
|
// the client and broker version ranges. By default, it selects the maximum version supported by both
|
|
// client and broker, capped by the maximum Kafka version from Config.
|
|
// It then calls setVersion() on the protocol body.
|
|
// If no valid version is found, an error is returned.
|
|
func restrictApiVersion(pb protocolBody, brokerVersions apiVersionMap) error {
|
|
key := pb.key()
|
|
// Since message constructors take a Kafka version and select the maximum supported protocol version already, we can
|
|
// rely on pb.version() being the max version supported for the user-selected Kafka API version.
|
|
clientMax := pb.version()
|
|
|
|
if brokerVersionRange := brokerVersions[key]; brokerVersionRange != nil {
|
|
// Select the maximum version that both client and server support
|
|
// Clamp to the client max to respect user preference above broker advertised version range
|
|
pb.setVersion(min(clientMax, max(min(clientMax, brokerVersionRange.maxVersion), brokerVersionRange.minVersion)))
|
|
return nil
|
|
}
|
|
|
|
return nil // no version ranges available, no restriction
|
|
}
|
|
|
|
const (
|
|
apiKeyProduce = 0
|
|
apiKeyFetch = 1
|
|
apiKeyListOffsets = 2
|
|
apiKeyMetadata = 3
|
|
apiKeyLeaderAndIsr = 4
|
|
apiKeyStopReplica = 5
|
|
apiKeyUpdateMetadata = 6
|
|
apiKeyControlledShutdown = 7
|
|
apiKeyOffsetCommit = 8
|
|
apiKeyOffsetFetch = 9
|
|
apiKeyFindCoordinator = 10
|
|
apiKeyJoinGroup = 11
|
|
apiKeyHeartbeat = 12
|
|
apiKeyLeaveGroup = 13
|
|
apiKeySyncGroup = 14
|
|
apiKeyDescribeGroups = 15
|
|
apiKeyListGroups = 16
|
|
apiKeySaslHandshake = 17
|
|
apiKeyApiVersions = 18
|
|
apiKeyCreateTopics = 19
|
|
apiKeyDeleteTopics = 20
|
|
apiKeyDeleteRecords = 21
|
|
apiKeyInitProducerId = 22
|
|
apiKeyOffsetForLeaderEpoch = 23
|
|
apiKeyAddPartitionsToTxn = 24
|
|
apiKeyAddOffsetsToTxn = 25
|
|
apiKeyEndTxn = 26
|
|
apiKeyWriteTxnMarkers = 27
|
|
apiKeyTxnOffsetCommit = 28
|
|
apiKeyDescribeAcls = 29
|
|
apiKeyCreateAcls = 30
|
|
apiKeyDeleteAcls = 31
|
|
apiKeyDescribeConfigs = 32
|
|
apiKeyAlterConfigs = 33
|
|
apiKeyAlterReplicaLogDirs = 34
|
|
apiKeyDescribeLogDirs = 35
|
|
apiKeySASLAuth = 36
|
|
apiKeyCreatePartitions = 37
|
|
apiKeyCreateDelegationToken = 38
|
|
apiKeyRenewDelegationToken = 39
|
|
apiKeyExpireDelegationToken = 40
|
|
apiKeyDescribeDelegationToken = 41
|
|
apiKeyDeleteGroups = 42
|
|
apiKeyElectLeaders = 43
|
|
apiKeyIncrementalAlterConfigs = 44
|
|
apiKeyAlterPartitionReassignments = 45
|
|
apiKeyListPartitionReassignments = 46
|
|
apiKeyOffsetDelete = 47
|
|
apiKeyDescribeClientQuotas = 48
|
|
apiKeyAlterClientQuotas = 49
|
|
apiKeyDescribeUserScramCredentials = 50
|
|
apiKeyAlterUserScramCredentials = 51
|
|
)
|