apoorvmittal10 commented on code in PR #17957:
URL: https://github.com/apache/kafka/pull/17957#discussion_r1866539003
##########
core/src/main/java/kafka/server/share/SharePartition.java:
##########
@@ -380,6 +380,14 @@ public CompletableFuture<Void> maybeInitialize() {
// Update state to initializing to avoid any concurrent requests
to be processed.
partitionState = SharePartitionState.INITIALIZING;
+ } catch (Exception e) {
+ log.error("Failed to initialize the share partition: {}-{}",
groupId, topicIdPartition, e);
+ completeInitializationWithException(future, e);
+ return future;
+ } finally {
+ lock.writeLock().unlock();
+ }
+ try {
Review Comment:
>We need this try in case we have persister.readState throw any exceptions
Hmmm, I was more in line with to have the try block when lock is required
and not have `persister.readState/persister.writeState` in the try block as
persister should return the completable future with exception, if failed, and
should never throw an exception directly. The javadoc of persister do not
specify throwing any exceptions directly.
>We even have a test case testMaybeInitializeWithReadException in
SharePartitionTest that verifies this behaviour
We can change the expectation of the test in the 2nd case of the test. Also
we should see the exception is being handled at top level if this happens but
we can't write entire code in try/catch.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]