Greg Harris created KAFKA-16862: ----------------------------------- Summary: Refactor ConsumerTaskTest to be deterministic and avoid tight loops Key: KAFKA-16862 URL: https://issues.apache.org/jira/browse/KAFKA-16862 Project: Kafka Issue Type: Task Components: Tiered-Storage Affects Versions: 3.8.0 Reporter: Greg Harris
The ConsumerTaskTest instantiates a MockConsumer, and uses this MockConsumer instance in the ConsumerTask, which is run in a background thread. * This causes the background thread to tight loop on MockConsumer#poll, which has no sleep or other delay mechanism. This wastes CPU cycles and makes it impossible to use MockConsumer#schedulePollTask to meaningfully mock out the poll behavior. * The test thread then needs to use TestUtils.waitForCondition, which repeatedly polls a result until it is satisfactory, wasting CPU cycles and introducing opportunities for timeout errors. (The test is not currently flaky in CI, so this is less of a concern). Instead, the ConsumerTaskTest can be rewritten to not utilize a background thread, and make all calls to the MockConsumer on the same thread. This is the model that the DistributedHerderTest uses with DistributedHerder#tick, and WorkerSinkTaskTest uses with WorkerSinkTask#iteration. AbstractWorkerSourceTaskTest uses a similar model with multiple methods, the most notable being AbstractWorkerSourceTask#sendRecords. -- This message was sent by Atlassian Jira (v8.20.10#820010)