Skip to content

Commit 71845e3

Browse files
committed
Add failing regression test to trigger Kryo re-use bug
1 parent eb4632f commit 71845e3

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

core/src/test/scala/org/apache/spark/serializer/KryoSerializerSuite.scala

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
package org.apache.spark.serializer
1919

20+
import java.io.ByteArrayOutputStream
21+
2022
import scala.collection.mutable
2123
import scala.reflect.ClassTag
2224

@@ -319,6 +321,35 @@ class KryoSerializerSuite extends FunSuite with SharedSparkContext {
319321
val ser2 = new KryoSerializer(conf).newInstance().asInstanceOf[KryoSerializerInstance]
320322
assert(!ser2.getAutoReset)
321323
}
324+
325+
private def testSerializerInstanceReuse(autoReset: Boolean, referenceTracking: Boolean): Unit = {
326+
val conf = new SparkConf(loadDefaults = false)
327+
.set("spark.kryo.referenceTracking", referenceTracking.toString)
328+
if (!autoReset) {
329+
conf.set("spark.kryo.registrator", classOf[RegistratorWithoutAutoReset].getName)
330+
}
331+
val ser = new KryoSerializer(conf)
332+
val serInstance = ser.newInstance().asInstanceOf[KryoSerializerInstance]
333+
assert (serInstance.getAutoReset() === autoReset)
334+
val obj = ("Hello", "World")
335+
def serializeObjects(): Array[Byte] = {
336+
val baos = new ByteArrayOutputStream()
337+
val serStream = serInstance.serializeStream(baos)
338+
serStream.writeObject(obj)
339+
serStream.writeObject(obj)
340+
serStream.close()
341+
baos.toByteArray
342+
}
343+
val output1: Array[Byte] = serializeObjects()
344+
val output2: Array[Byte] = serializeObjects()
345+
assert (output1 === output2)
346+
}
347+
348+
for (referenceTracking <- Set(true, false); autoReset <- Set(true, false)) {
349+
test(s"instance reuse with autoReset = $autoReset, referenceTracking = $referenceTracking") {
350+
testSerializerInstanceReuse(autoReset = autoReset, referenceTracking = referenceTracking)
351+
}
352+
}
322353
}
323354

324355

0 commit comments

Comments
 (0)