[ 
https://issues.apache.org/jira/browse/KAFKA-16640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17943638#comment-17943638
 ] 

Vladimir Bukhtoyarov edited comment on KAFKA-16640 at 4/11/25 5:18 PM:
-----------------------------------------------------------------------

[~frankvicky]  *Using* does not re-throw exception that happens inside lamda, 
if {*}get{*}(or similar) is not called. 

This pull-request [https://github.com/apache/kafka/pull/15881/files]  breaks 
all tests that it affects(about 13 tests).

 

For example this test passes despite fact that 5*5 != 5
{code:java}
@Timeout(60)
class CoordinatorLoaderImplTest {
  @Test
  def testNonexistentPartition(): Unit = {
    val tp = new TopicPartition("foo", 0)
    val replicaManager = mock(classOf[ReplicaManager])
    val serde = mock(classOf[Deserializer[(String, String)]])
    val coordinator = mock(classOf[CoordinatorPlayback[(String, String)]])

    Using(new CoordinatorLoaderImpl[(String, String)](
      time = Time.SYSTEM,
      replicaManager = replicaManager,
      deserializer = serde,
      loadBufferSize = 1000
    )) { loader =>
      assertTrue(2*2 == 5)
      when(replicaManager.getLog(tp)).thenReturn(None)

      val result = loader.load(tp, coordinator)
      assertFutureThrows(result, classOf[NotLeaderOrFollowerException])
    }
  } {code}
 

To make this test working it needs to interact with Try like bellow
{code:java}
Using(new CoordinatorLoaderImpl[(String, String)](
  time = Time.SYSTEM,
  replicaManager = replicaManager,
  deserializer = serde,
  loadBufferSize = 1000
)) { loader =>
  assertTrue(2*2 == 5)
  when(replicaManager.getLog(tp)).thenReturn(None)

  val result = loader.load(tp, coordinator)
  assertFutureThrows(result, classOf[NotLeaderOrFollowerException])
}.get // call get to rethrow exception {code}


was (Author: vladimir.bukhtoyarov):
[~frankvicky]  *Using* does not re-throw exception that happens inside lamda, 
if {*}get{*}(or similar) is not called. 

This pull-request [https://github.com/apache/kafka/pull/15881/files]  breaks 
all tests that it affects(about 13 tests).

 

For example this test passes despite fact that 5*5 != 5
{code:java}
Using(new CoordinatorLoaderImpl[(String, String)](
  time = Time.SYSTEM,
  replicaManager = replicaManager,
  deserializer = serde,
  loadBufferSize = 1000
)) { loader =>
  assertTrue(2*2 == 5)
  when(replicaManager.getLog(tp)).thenReturn(None)

  val result = loader.load(tp, coordinator)
  assertFutureThrows(result, classOf[NotLeaderOrFollowerException])
} {code}
 

To make this test working it needs to interact with Try like bellow
{code:java}
Using(new CoordinatorLoaderImpl[(String, String)](
  time = Time.SYSTEM,
  replicaManager = replicaManager,
  deserializer = serde,
  loadBufferSize = 1000
)) { loader =>
  assertTrue(2*2 == 5)
  when(replicaManager.getLog(tp)).thenReturn(None)

  val result = loader.load(tp, coordinator)
  assertFutureThrows(result, classOf[NotLeaderOrFollowerException])
}.get // call get to rethrow exception {code}

> Replace TestUtils#resource by scala.util.Using
> ----------------------------------------------
>
>                 Key: KAFKA-16640
>                 URL: https://issues.apache.org/jira/browse/KAFKA-16640
>             Project: Kafka
>          Issue Type: Improvement
>            Reporter: Chia-Ping Tsai
>            Assignee: TengYao Chi
>            Priority: Minor
>             Fix For: 3.8.0
>
>
> `scala.util.Using` is in both scala 2.13 and scala-collection-compat so we 
> don't need to have custom try-resource function.



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

Reply via email to