Page MenuHomePhabricator

Make sure that transaction.id assigned by Flink is unique for concurrent runs of Streaming Updater pipeline
Closed, ResolvedPublic

Description

As a WDQS maintainer I want to be able to run concurrent instances of Streaming Updater pipeline, so that I can test new versions or feed different query services with data.

Due to: https://issues.apache.org/jira/browse/FLINK-11654, kafka producers across two or more instances of Streaming Updater will be assigned the same transation id, which can lead to the issue:

Caused by: org.apache.kafka.common.errors.ProducerFencedException: Producer attempted an operation with an old epoch. Either there is a newer producer with the same transactionalId, or the producer's transaction has been expired by the broker.

There is a workaround mention in the Flink issue - since operatorID of a job is used for transtaction.id, we could differentiate those operatorIDs. Since when testing or feeding different query services we need to use different output_topics anyway, we can use output_topic name as a differentiator.

AC:

  • Two or more Streaming Updaters can be run while using the same Kafka cluster for output topics

Details

Event Timeline

This comment was removed by Zbyszko.

Change 626157 had a related patch set uploaded (by DCausse; owner: DCausse):
[wikidata/query/rdf@master] Set kafka producer txId prefix via operator uuid/name

https://gerrit.wikimedia.org/r/626157

Change 626157 merged by jenkins-bot:
[wikidata/query/rdf@master] Set kafka producer txId prefix via operator uuid/name

https://gerrit.wikimedia.org/r/626157