[ 
https://issues.apache.org/jira/browse/KAFKA-17270?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chia-Ping Tsai updated KAFKA-17270:
-----------------------------------
    Description: 
Exit.scala is a wrap of Exit.java, and the benefit is "Nothing" which can make 
methods throw exception. IMHO, the benefit is too small, and also we are going 
to drop scala code. Hence, it would be great to use Exit.java directly and then 
remove Exit.scala




*BEFORE*
I noticed it due to following exception.

{code:java}
java.lang.ClassCastException: class scala.runtime.BoxedUnit cannot be cast to 
class scala.runtime.Nothing$ (scala.runtime.BoxedUnit and 
scala.runtime.Nothing$ are in unnamed module of loader 'app')
        at 
kafka.server.ServerShutdownTest.$anonfun$testNoCleanShutdownAfterFailedStartupDueToCorruptLogs$3(ServerShutdownTest.scala:176)
        at 
kafka.server.ServerShutdownTest.$anonfun$testNoCleanShutdownAfterFailedStartupDueToCorruptLogs$3$adapted(ServerShutdownTest.scala:174)
        at kafka.utils.Exit$$anon$1.execute(Exit.scala:81)
        at org.apache.kafka.common.utils.Exit.halt(Exit.java:71)
        at kafka.utils.Exit$.halt(Exit.scala:33)
        at kafka.log.LogManager.handleLogDirFailure(LogManager.scala:230)
        at 
kafka.server.ReplicaManager.handleLogDirFailure(ReplicaManager.scala:2501)
        at 
kafka.server.ReplicaManager$LogDirFailureHandler.doWork(ReplicaManager.scala:325)
        at 
org.apache.kafka.server.util.ShutdownableThread.run(ShutdownableThread.java:136)
{code}

It seems to me using `Nothing` as returned type is weird and in this case the 
suitable type should be `Unit` (same as other methods). Also, that can fix the 
casting error in `testNoCleanShutdownAfterFailedStartupDueToCorruptLogs`

[0] 
https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/utils/Exit.scala#44
[1] 
https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/utils/Exit.scala#50

  was:
I noticed it due to following exception.

{code:java}
java.lang.ClassCastException: class scala.runtime.BoxedUnit cannot be cast to 
class scala.runtime.Nothing$ (scala.runtime.BoxedUnit and 
scala.runtime.Nothing$ are in unnamed module of loader 'app')
        at 
kafka.server.ServerShutdownTest.$anonfun$testNoCleanShutdownAfterFailedStartupDueToCorruptLogs$3(ServerShutdownTest.scala:176)
        at 
kafka.server.ServerShutdownTest.$anonfun$testNoCleanShutdownAfterFailedStartupDueToCorruptLogs$3$adapted(ServerShutdownTest.scala:174)
        at kafka.utils.Exit$$anon$1.execute(Exit.scala:81)
        at org.apache.kafka.common.utils.Exit.halt(Exit.java:71)
        at kafka.utils.Exit$.halt(Exit.scala:33)
        at kafka.log.LogManager.handleLogDirFailure(LogManager.scala:230)
        at 
kafka.server.ReplicaManager.handleLogDirFailure(ReplicaManager.scala:2501)
        at 
kafka.server.ReplicaManager$LogDirFailureHandler.doWork(ReplicaManager.scala:325)
        at 
org.apache.kafka.server.util.ShutdownableThread.run(ShutdownableThread.java:136)
{code}

It seems to me using `Nothing` as returned type is weird and in this case the 
suitable type should be `Unit` (same as other methods). Also, that can fix the 
casting error in `testNoCleanShutdownAfterFailedStartupDueToCorruptLogs`

[0] 
https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/utils/Exit.scala#44
[1] 
https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/utils/Exit.scala#50


> Let test code use Exit.java rather than Exit.scala
> --------------------------------------------------
>
>                 Key: KAFKA-17270
>                 URL: https://issues.apache.org/jira/browse/KAFKA-17270
>             Project: Kafka
>          Issue Type: Test
>            Reporter: Chia-Ping Tsai
>            Assignee: Ming-Yen Chung
>            Priority: Minor
>
> Exit.scala is a wrap of Exit.java, and the benefit is "Nothing" which can 
> make methods throw exception. IMHO, the benefit is too small, and also we are 
> going to drop scala code. Hence, it would be great to use Exit.java directly 
> and then remove Exit.scala
> *BEFORE*
> I noticed it due to following exception.
> {code:java}
> java.lang.ClassCastException: class scala.runtime.BoxedUnit cannot be cast to 
> class scala.runtime.Nothing$ (scala.runtime.BoxedUnit and 
> scala.runtime.Nothing$ are in unnamed module of loader 'app')
>       at 
> kafka.server.ServerShutdownTest.$anonfun$testNoCleanShutdownAfterFailedStartupDueToCorruptLogs$3(ServerShutdownTest.scala:176)
>       at 
> kafka.server.ServerShutdownTest.$anonfun$testNoCleanShutdownAfterFailedStartupDueToCorruptLogs$3$adapted(ServerShutdownTest.scala:174)
>       at kafka.utils.Exit$$anon$1.execute(Exit.scala:81)
>       at org.apache.kafka.common.utils.Exit.halt(Exit.java:71)
>       at kafka.utils.Exit$.halt(Exit.scala:33)
>       at kafka.log.LogManager.handleLogDirFailure(LogManager.scala:230)
>       at 
> kafka.server.ReplicaManager.handleLogDirFailure(ReplicaManager.scala:2501)
>       at 
> kafka.server.ReplicaManager$LogDirFailureHandler.doWork(ReplicaManager.scala:325)
>       at 
> org.apache.kafka.server.util.ShutdownableThread.run(ShutdownableThread.java:136)
> {code}
> It seems to me using `Nothing` as returned type is weird and in this case the 
> suitable type should be `Unit` (same as other methods). Also, that can fix 
> the casting error in `testNoCleanShutdownAfterFailedStartupDueToCorruptLogs`
> [0] 
> https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/utils/Exit.scala#44
> [1] 
> https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/utils/Exit.scala#50



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to