public class TierMetadataManager
extends java.lang.Object
TierPartitionState
. This serves as the central place to tie
all tiering components with other Kafka components.
For a particular topic partition, Log
layer initializes the TierPartitionState
by invoking
initState(org.apache.kafka.common.TopicPartition, java.io.File, kafka.log.LogConfig)
. When the partition is made a replica, either one of becomeLeader(org.apache.kafka.common.TopicPartition, int)
or becomeFollower(org.apache.kafka.common.TopicPartition)
is invoked. Finally delete(org.apache.kafka.common.TopicPartition)
is invoked when the replica is deleted from the broker. onConfigChange(org.apache.kafka.common.TopicPartition, kafka.log.LogConfig)
is invoked to track topic configuration changes.
Listeners can be registered using addListener(kafka.tier.TierMetadataManager.ChangeListener)
and appropriate callbacks are fired for each lifecycle stage.
Notably, kafka.tier.archiver.TierArchiver
and TierTopicManager
register listeners so they could track
the set of partitions for which tiering is enabled, and whether the broker is a leader or not.Modifier and Type | Class and Description |
---|---|
static interface |
TierMetadataManager.ChangeListener
Interface to register callbacks on the lifecycle of tiering enabled topic partitions.
|
static class |
TierMetadataManager.PartitionMetadata
Tiering metadata for a particular topic-partition.
|
Constructor and Description |
---|
TierMetadataManager(TierPartitionStateFactory tierPartitionStateFactory,
scala.Option<TierObjectStore> tierObjectStore,
kafka.server.LogDirFailureChannel logDirFailureChannel,
boolean tierFeatureEnabled) |
Modifier and Type | Method and Description |
---|---|
void |
addListener(TierMetadataManager.ChangeListener listener)
Register a change listener.
|
void |
becomeFollower(org.apache.kafka.common.TopicPartition topicPartition)
Called when replica becomes follower.
|
void |
becomeLeader(org.apache.kafka.common.TopicPartition topicPartition,
int leaderEpoch)
Called when replica is elected to be the leader.
|
void |
close() |
void |
delete(org.apache.kafka.common.TopicPartition topicPartition)
Delete tier metadata for given topic partition.
|
TierPartitionState |
initState(org.apache.kafka.common.TopicPartition topicPartition,
java.io.File dir,
kafka.log.LogConfig logConfig)
Initialize tier state for given topic partition.
|
java.util.concurrent.Future<TierObjectMetadata> |
materializeUntilOffset(org.apache.kafka.common.TopicPartition topicPartition,
java.lang.Long target) |
void |
onConfigChange(org.apache.kafka.common.TopicPartition topicPartition,
kafka.log.LogConfig config)
Called when log configuration for a topic partition is changed.
|
java.util.Iterator<TierPartitionState> |
tierEnabledPartitionStateIterator()
Get an iterator over states for all topic partitions for which tiering is enabled.
|
TierObjectStore |
tierObjectStore()
Get the tier object store handle.
|
java.util.Optional<TierMetadataManager.PartitionMetadata> |
tierPartitionMetadata(org.apache.kafka.common.TopicPartition topicPartition)
Retrieve the partition metadata, if present.
|
java.util.Optional<TierPartitionState> |
tierPartitionState(org.apache.kafka.common.TopicPartition topicPartition)
Retrieve the tier partition state for a particular topic partition, if present.
|
public TierMetadataManager(TierPartitionStateFactory tierPartitionStateFactory, scala.Option<TierObjectStore> tierObjectStore, kafka.server.LogDirFailureChannel logDirFailureChannel, boolean tierFeatureEnabled)
public TierPartitionState initState(org.apache.kafka.common.TopicPartition topicPartition, java.io.File dir, kafka.log.LogConfig logConfig) throws java.io.IOException
topicPartition
- Topic partition for which tier metadata needs to be initializeddir
- Log directorylogConfig
- Log configurationjava.io.IOException
public java.util.concurrent.Future<TierObjectMetadata> materializeUntilOffset(org.apache.kafka.common.TopicPartition topicPartition, java.lang.Long target) throws java.io.IOException
java.io.IOException
public void delete(org.apache.kafka.common.TopicPartition topicPartition)
topicPartition
- Topic partition to delete tier metadata forpublic void becomeLeader(org.apache.kafka.common.TopicPartition topicPartition, int leaderEpoch)
topicPartition
- Topic partition being elected leaderleaderEpoch
- Leader epochpublic void becomeFollower(org.apache.kafka.common.TopicPartition topicPartition)
topicPartition
- Topic partition becoming followerpublic void onConfigChange(org.apache.kafka.common.TopicPartition topicPartition, kafka.log.LogConfig config)
topicPartition
- Topic partitionconfig
- New log configurationpublic void close()
public java.util.Optional<TierPartitionState> tierPartitionState(org.apache.kafka.common.TopicPartition topicPartition)
topicPartition
- Topic partitionpublic java.util.Optional<TierMetadataManager.PartitionMetadata> tierPartitionMetadata(org.apache.kafka.common.TopicPartition topicPartition)
topicPartition
- Topic partitionpublic java.util.Iterator<TierPartitionState> tierEnabledPartitionStateIterator()
public void addListener(TierMetadataManager.ChangeListener listener)
listener
- Listener to registerpublic TierObjectStore tierObjectStore()