Skip to content

Comparing two tuples with null fields causes StackOverflowError #150

@akudiyar

Description

@akudiyar

Steps to reproduce (using Scalatest):

   val defaultMapper =
    DefaultMessagePackMapperFactory.getInstance().defaultComplexTypesMapper()
   val tuple1 = new TarantoolTupleImpl(
      Seq(
        null,
        defaultMapper.toValue(List(1, 2, 3, 4).asJava),
        time
      ).asJava,
      defaultMapper
    )
    val tuple2 = new TarantoolTupleImpl(
      Seq(
        null,
        defaultMapper.toValue(List(5, 6, 7, 8).asJava),
        time
      ).asJava,
      defaultMapper
    )
    
    forAll(tuple1.toSeq.zip(tuple2.toSeq))(tuples => tuples._1 should equal(tuples._2))

This code produces this stack trace:

An exception or error caused a run to abort. 
java.lang.StackOverflowError
	at java.util.Objects.hashCode(Objects.java:98)
	at io.tarantool.driver.api.tuple.TarantoolNullField.hashCode(TarantoolNullField.java:47)

P.S. This bug reminds us about how dangerous untested code is, even if it is a tiny hashcode method.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions