Documentation ¶
Overview ¶
Package kversion specifies versions for Kafka request keys.
Kafka technically has internal broker versions that bump multiple times per release. This package only defines releases and tip.
Index ¶
- type VersionGuessOpt
- type Versions
- func FromApiVersionsResponse(r *kmsg.ApiVersionsResponse) *Versions
- func Stable() *Versions
- func Tip() *Versions
- func V0_10_0() *Versions
- func V0_10_1() *Versions
- func V0_10_2() *Versions
- func V0_11_0() *Versions
- func V0_8_0() *Versions
- func V0_8_1() *Versions
- func V0_8_2() *Versions
- func V0_9_0() *Versions
- func V1_0_0() *Versions
- func V1_1_0() *Versions
- func V2_0_0() *Versions
- func V2_1_0() *Versions
- func V2_2_0() *Versions
- func V2_3_0() *Versions
- func V2_4_0() *Versions
- func V2_5_0() *Versions
- func V2_6_0() *Versions
- func V2_7_0() *Versions
- func V2_8_0() *Versions
- func V3_0_0() *Versions
- func V3_1_0() *Versions
- func V3_2_0() *Versions
- func V3_3_0() *Versions
- func (vs *Versions) EachMaxKeyVersion(fn func(k, v int16))
- func (vs *Versions) Equal(other *Versions) bool
- func (vs *Versions) HasKey(k int16) bool
- func (vs *Versions) LookupMaxKeyVersion(k int16) (int16, bool)
- func (vs *Versions) SetMaxKeyVersion(k, v int16)
- func (vs *Versions) String() string
- func (vs *Versions) VersionGuess(opts ...VersionGuessOpt) string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type VersionGuessOpt ¶
type VersionGuessOpt interface {
// contains filtered or unexported methods
}
VersionGuessOpt is an option to change how version guessing is done.
func SkipKeys ¶
func SkipKeys(keys ...int16) VersionGuessOpt
SkipKeys skips the given keys while guessing versions.
The current default is to skip keys that are only used by brokers:
4: LeaderAndISR 5: StopReplica 6: UpdateMetadata 7: ControlledShutdown 27: WriteTxnMarkers
func TryRaftBroker ¶
func TryRaftBroker() VersionGuessOpt
TryRaftBroker changes from guessing the version for a classical ZooKeeper based broker to guessing for a raft based broker (v2.8.0+).
Note that with raft, there can be a TryRaftController attempt as well.
func TryRaftController ¶
func TryRaftController() VersionGuessOpt
TryRaftController changes from guessing the version for a classical ZooKeeper based broker to guessing for a raft based controller broker (v2.8.0+).
Note that with raft, there can be a TryRaftBroker attempt as well. Odds are that if you are an end user speaking to a raft based Kafka cluster, you are speaking to a raft broker. The controller is specifically for broker to broker communication.
type Versions ¶
type Versions struct {
// contains filtered or unexported fields
}
Versions is a list of versions, with each item corresponding to a Kafka key and each item's value corresponding to the max version supported.
Minimum versions are not currently tracked because all keys have a minimum version of zero. The internals of a Versions may change in the future to support minimum versions; the outward facing API of Versions should not change to support this.
As well, supported features may be added in the future.
func FromApiVersionsResponse ¶
func FromApiVersionsResponse(r *kmsg.ApiVersionsResponse) *Versions
FromApiVersionsResponse returns a Versions from a kmsg.ApiVersionsResponse.
func Stable ¶
func Stable() *Versions
Stable is a shortcut for the latest _released_ Kafka versions.
This is the default version used in kgo to avoid breaking tip changes.
func Tip ¶
func Tip() *Versions
Tip is the latest defined Kafka key versions; this may be slightly out of date.
func (*Versions) EachMaxKeyVersion ¶
EachMaxKeyVersion calls fn for each key and max version
func (*Versions) LookupMaxKeyVersion ¶
LookupMaxKeyVersion returns the version for the given key and whether the key exists. If the key does not exist, this returns (-1, false).
func (*Versions) SetMaxKeyVersion ¶
SetMaxKeyVersion sets the max version for the given key.
Setting a version to -1 unsets the key.
Versions are backed by a slice; if the slice is not long enough, it is extended to fit the key.
func (*Versions) String ¶
String returns a string representation of the versions; the format may change.
func (*Versions) VersionGuess ¶
func (vs *Versions) VersionGuess(opts ...VersionGuessOpt) string
VersionGuess attempts to guess which version of Kafka these versions belong to. If an exact match can be determined, this returns a string in the format v0.#.# or v#.# (depending on whether Kafka is pre-1.0.0 or post). For example, v0.8.0 or v2.7.
Patch numbers are not included in the guess as it is not possible to determine the Kafka patch version being used as a client.
If the version is determined to be higher than kversion knows of or is tip, this package returns "at least v#.#".
Custom versions, or in-between versions, are detected and return slightly more verbose strings.
Options can be specified to change how version guessing is performed, for example, certain keys can be skipped, or the guessing can try evaluating the versions as Raft broker based versions.