Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Update security

...

RPC

Component

ACL Operation

ACL Resource

Purpose

FetchMFTReadTopicData replication
MetadataMMMDescribeTopicTopic discovery and leader tracking
DescribeConfigsMMMDescribeDescribeConfigsTopicTopic configuration sync
ListGroupsMMMDescribeGroupConsumer group offset sync
OffsetFetchMMMDescribeGroupConsumer group offset sync
DescribeAclsMMMDescribeClusterACL synchronization
LastMirroredEpochsMCReadClusterLog truncation when preparing
ApiVersionsMMM

Feature negotiation
ListOffsetsMFTDescribeTopicOffset bounds discovery
OffsetsForLeaderEpochMFTDescribeTopicLeader epoch validation for truncation

...

RPC

Component

ACL Operation

ACL Resource

Purpose

CreateMirrorControllerCreateClusterMirrorNew cluster mirror creation
AddTopicsToMirrorControllerAlterClusterMirrorMirror topics creation
AddTopicsToMirrorControllerReadTopicMirror topics creation
RemoveTopicsFromMirrorControllerAlterClusterMirrorMirror topics removal (failover)
RemoveTopicsFromMirrorControllerReadTopicMirror topics removal (failover)
PauseMirrorTopicsControllerAlterClusterMirrorMirror topics pause
PauseMirrorTopicsControllerReadTopicMirror topics pause
ResumeMirrorTopicsControllerAlterClusterMirrorMirror topics resume
ResumeMirrorTopicsControllerReadTopicMirror topics resume
DeleteMirrorControllerAlterClusterMirrorDelete a cluster mirror
ListMirrorsBrokerDescribeClusterMirrorMirror topic listing
DescribeMirrorsBrokerDescribeClusterMirrorMirror topic describe (state, lag)
DescribeConfigsBrokerDescribeConfigsClusterMirrorMirror configuration describe
WriteMirrorStatesMCClusterActionClusterMirror partition state write
ReadMirrorStatesMCClusterActionClusterMirror partition state read
BumpLeaderEpochsMCClusterActionClusterLeader epoch bump when stopping
FindCoordinatorBrokerClusterActionClusterMirror coordinator location
CreateTopicsMMMCreateTopicTopic creation
CreatePartitionsMMMAlterTopicPartitions scaling
IncrementalAlterConfigsMMMAlterConfigsClusterMirrorMirror configuration update
OffsetCommitMMMReadTopicSource CG offsets commit
OffsetCommitMMMReadGroupSource CG offsets commit
CreateAclsMMMAlterClusterSource ACLs creation
DeleteAclsMMMAlterClusterSource ACLs removal

An operator can grant ClusterMirror:*:CREATE,ALTER,DESCRIBE for full mirror management, or scope it to specific mirrors like ClusterMirror:prod-dr:DESCRIBE for read-only monitoring of a single mirror, without granting any broker-level privileges.

Inter-broker coordinator RPCs (WriteMirrorStates, ReadMirrorStates, LastMirroredEpochs, BumpLeaderEpochs, and FindCoordinator) require CLUSTER_ACTION on the Cluster resource, as they are only issued by the broker service account.

CreatePartitions, OffsetCommit, IncrementalAlterConfigs, CreateAcls, and DeleteAcls are issued internally by MMM through the inter-broker channel or direct coordinator calls, bypassing normal ACL checks. No explicit ACL grants are needed for these operations.

Idempotent Producer

The approach is to proactively expire the stale producer state on failover. The key insight is that, during mirroring, the destination partition is read-only: no local producers exist, so all ProducerStateManager (PSM) entries originate from mirrored data. When mirroring stops, all PSM entries are stale and can be safely expired. Records from the source are stored as-is on the destination, with no PID modification, which otherwise would require a checksum recalculation. A MIRROR_PID_RESET control record (type 7) is written to each destination partition's log during the STOPPING state transition, after the fetcher has been removed and truncation to LSO is completed, but before the partition becomes writable.

...

CodeNameMessageUsed By
3UNKNOWN_TOPIC_OR_PARTITIONThe topic does not exist on the target clusterRemoveTopicsFromMirror, PauseMirrorTopics, ResumeMirrorTopics
15COORDINATOR_NOT_AVAILABLEThe mirror coordinator is not activeWriteMirrorStates, ReadMirrorStates, LastMirroredOffsets
31CLUSTER_AUTHORIZATION_FAILEDThe client is not authorized to perform the mirror operationCreateMirror, AddTopicsToMirror, RemoveTopicsFromMirror, PauseMirrorTopics, ResumeMirrorTopics,

ListMirrors, DescribeMirrors, WriteMirrorStates, ReadMirrorStates, LastMirroredOffsets

35UNSUPPORTED_VERSIONCluster mirroring is disabled (mirror.version=0)

CreateMirror, AddTopicsToMirror, RemoveTopicsFromMirror, PauseMirrorTopics, ResumeMirrorTopics, ListMirrors, DescribeMirrors, DeleteMirror

TBDMIRROR_AUTHORIZATION_FAILEDMirror authorization failed

CreateMirror, AddTopicsToMirror, RemoveTopicsFromMirror, PauseMirrorTopics, ResumeMirrorTopics, DeleteMirror, WriteMirrorStates, ReadMirrorStates, LastMirroredOffsets

TBDREAD_ONLY_TOPICThe topic is read-only because it is a mirror topic on the target clusterProduce
TBDINVALID_MIRROR_NAMEThe mirror name does not meet the naming rulesCreateMirror
TBDUNKNOWN_MIRRORThe topic is not assigned to any mirrorRemoveTopicsFromMirror, PauseMirrorTopics, ResumeMirrorTopics
TBDTOPIC_ALREADY_IN_MIRRORThe topic is already assigned to a mirrorAddTopicsToMirror
TBDTOPIC_NOT_IN_MIRRORThe topic does not belong to the specified mirrorRemoveTopicsFromMirror, PauseMirrorTopics, ResumeMirrorTopics
TBDMIRROR_TOPIC_ALREADY_PAUSEDThe mirror topic is already pausedPauseMirrorTopics
TBDMIRROR_TOPIC_NOT_PAUSEDThe mirror topic is not pausedResumeMirrorTopics
TBDMIRROR_TOPIC_BEING_REMOVEDThe mirror topic is being removedResumeMirrorTopics
TBDMIRROR_NOT_EMPTYThe mirror still has active or non-removed topicsDeleteMirror

...