[ https://issues.apache.org/jira/browse/KAFKA-19325?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jun Rao updated KAFKA-19325: ---------------------------- Description: After [https://github.com/apache/kafka/pull/19759/files,] DelayedOperation.forceComplete() always returns true when called inside tryComplete(). Only the expiration logic checks the return value of forceComplete(). We could do the following in the expiration logic and change forceComplete() to return void and avoid using the lock there (the caller will get the lock instead). This simplifies the caller to forceComplete(). {code:java} lock.lock(); try { if (!isCompleted()) { forceComplete(); onExpiration(); } } finally { lock.unlock(); }{code} was: After [https://github.com/apache/kafka/pull/19759/files,] DelayedOperation.forceComplete() always returns true when called inside tryComplete(). Only the expiration logic checks the return value of forceComplete(). We could do the following in the expiration logic and change forceComplete() to return void and avoid using the lock there (the caller will get the lock instead). {code:java} lock.lock(); try { if (!isCompleted()) { forceComplete(); onExpiration(); } } finally { lock.unlock(); }{code} > improve forceComplete() in DelayedOperation > ------------------------------------------- > > Key: KAFKA-19325 > URL: https://issues.apache.org/jira/browse/KAFKA-19325 > Project: Kafka > Issue Type: Improvement > Components: core > Affects Versions: 4.1.0 > Reporter: Jun Rao > Priority: Major > > After [https://github.com/apache/kafka/pull/19759/files,] > DelayedOperation.forceComplete() always returns true when called inside > tryComplete(). Only the expiration logic checks the return value of > forceComplete(). We could do the following in the expiration logic and change > forceComplete() to return void and avoid using the lock there (the caller > will get the lock instead). This simplifies the caller to forceComplete(). > {code:java} > lock.lock(); > try { > if (!isCompleted()) { > forceComplete(); > onExpiration(); > } > } finally { > lock.unlock(); > }{code} -- This message was sent by Atlassian Jira (v8.20.10#820010)