kowshik commented on a change in pull request #9596: URL: https://github.com/apache/kafka/pull/9596#discussion_r525527982
########## File path: core/src/test/scala/unit/kafka/log/LogManagerTest.scala ########## @@ -83,6 +87,51 @@ class LogManagerTest { log.appendAsLeader(TestUtils.singletonRecords("test".getBytes()), leaderEpoch = 0) } + /** + * Tests that all internal futures are completed before LogManager.shutdown() returns to the + * caller during error situations. + */ + @Test + def testHandlingExceptionsDuringShutdown(): Unit = { + logManager.shutdown() + + // We create two directories logDir1 and logDir2 to help effectively test error handling + // during LogManager.shutdown(). + val logDir1 = TestUtils.tempDir() + val logDir2 = TestUtils.tempDir() + logManager = createLogManager(Seq(logDir1, logDir2)) + assertEquals(2, logManager.liveLogDirs.size) + logManager.startup() + + val log1 = logManager.getOrCreateLog(new TopicPartition(name, 0), () => logConfig) + val log2 = logManager.getOrCreateLog(new TopicPartition(name, 1), () => logConfig) + + val logFile1 = new File(logDir1, name + "-0") + assertTrue(logFile1.exists) + val logFile2 = new File(logDir2, name + "-1") + assertTrue(logFile2.exists) + + log1.appendAsLeader(TestUtils.singletonRecords("test1".getBytes()), leaderEpoch = 0) + log1.takeProducerSnapshot() + log1.appendAsLeader(TestUtils.singletonRecords("test1".getBytes()), leaderEpoch = 0) + + log2.appendAsLeader(TestUtils.singletonRecords("test2".getBytes()), leaderEpoch = 0) + log2.takeProducerSnapshot() + log2.appendAsLeader(TestUtils.singletonRecords("test2".getBytes()), leaderEpoch = 0) + + // This should cause log1.close() to fail during LogManger shutdown sequence. + FileUtils.deleteDirectory(logFile1) Review comment: It depends on the kind of error, but we do log the error information to the log today from within `KafkaServer.shutdown()`. ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org