Details
-
Improvement
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
-
None
-
Docs Required, Release Notes Required
Description
Currently, when CDC through Kafka is used there are possible delays in replication between clusters when KafkaToIgniteCdcStreamerApplier tries to update binary metadata and marshaller mappings.
Delays caused by calls of KafkaConsumer#poll in KafkaToIgniteMetadataUpdater#updateMetadata , when meta topic is empty:
- When first KafkaToIgniteCdcStreamerApplier meets META_UPDATE_MARKER it calls KafkaToIgniteMetadataUpdater#updateMetadata which in turn calls KafkaConsumer#poll, which returns immediately [1] when data is present in metadata topic. If there are few binary types and mappings to update, first KafkaToIgniteCdcStreamerApplier will consume all entries from metadata topic.
- KafkaToIgniteCdcStreamerApplier consequently call KafkaToIgniteMetadataUpdater#updateMetadata for each partition with meta update marker. All further consequent calls will wait for kafkaReqTimeout.
- Also there is a bottleneck, when multiple applier threads tries to update metadata and call synchronized method KafkaToIgniteMetadataUpdater#updateMetadata, because KafkaToIgniteMetadataUpdater is shared between applier threads.
- Because META_UPDATE_MARKER is sent twice to each Kafka partition of event topic from every node: firstly, in case of type mappings updates, secondly, in case of binary types update there are possible delays up to (clusterSize x topicPartitions x 2 - 1) x kafkaReqTimeout.
- Data updates are blocked for Kafka partitions with unprocessed update markers.
- For example for default timeout and 16 Kafka partitions last partition will be consumed after 1.5 minutes in case of two one-node clusters.
Links:
Attachments
Issue Links
- blocks
-
IGNITE-18267 Set up parallel feature for CDC build configuration
- Resolved
- is cloned by
-
IGNITE-19369 Metadata topic offset must be stored only after commit
- Resolved
- is part of
-
IGNITE-14449 Add binary meta change event to CDCCosumer
- Resolved
- is related to
-
IGNITE-18216 Duplicated CDC test runs on TeamCity
- Resolved
-
IGNITE-18549 Fix timeouts of CdcKafkaReplicationTest#afterTest
- Open
-
IGNITE-18552 Fix TopicExistsException in CdcKafkaReplicationTest
- Open
-
IGNITE-19063 Fix incorrect behaviour of MemorizingAppender with MutableLogEvent
- Open
-
IGNITE-19067 MemorizingAppender improvements
- Open
-
IGNITE-18512 Add ACL to CdcKafkaReplicationTest
- Resolved
-
IGNITE-18548 Fix CdcIgniteToIgniteReplicationTest#testActivePassiveReplication flakiness
- Resolved
-
IGNITE-18995 CDC test failures on BinaryMetadataFileStore.restoreMetadata
- Resolved
-
IGNITE-19102 CDC: Use manual assignment for consumer in KafkatoIgniteMetadataUpdater
- Open
-
IGNITE-18515 CDC: add documentation about metadata replication
- Resolved
-
IGNITE-18992 CDC: Use single partition topic for metadata updates
- Resolved
-
IGNITE-18574 CDC: add documentation about Kafka request timeouts
- Resolved
- relates to
-
IGNITE-18251 Refactor testing of ignite-extensions
- Resolved
- links to