Skip to content

Commit 45d1e43

Browse files
committed
[SPARK-32283][CORE] Kryo should support multiple user registrators
1 parent 4609f1f commit 45d1e43

8 files changed

Lines changed: 13 additions & 12 deletions

File tree

core/src/main/scala/org/apache/spark/internal/config/Kryo.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ private[spark] object Kryo {
2929
val KRYO_USER_REGISTRATORS = ConfigBuilder("spark.kryo.registrator")
3030
.version("0.5.0")
3131
.stringConf
32-
.createOptional
32+
.toSequence
33+
.createWithDefault(Nil)
3334

3435
val KRYO_CLASSES_TO_REGISTER = ConfigBuilder("spark.kryo.classesToRegister")
3536
.version("1.2.0")

core/src/test/scala/org/apache/spark/SparkConfSuite.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ class SparkConfSuite extends SparkFunSuite with LocalSparkContext with ResetSyst
221221
conf.registerKryoClasses(Array(classOf[Class1]))
222222
assert(conf.get(KRYO_CLASSES_TO_REGISTER).toSet === Seq(classOf[Class1].getName).toSet)
223223

224-
conf.set(KRYO_USER_REGISTRATORS, classOf[CustomRegistrator].getName)
224+
conf.set(KRYO_USER_REGISTRATORS, Seq(classOf[CustomRegistrator].getName))
225225

226226
// Kryo doesn't expose a way to discover registered classes, but at least make sure this doesn't
227227
// blow up.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ object KryoBenchmark extends BenchmarkBase {
125125
def createSerializer(useUnsafe: Boolean): SerializerInstance = {
126126
val conf = new SparkConf()
127127
conf.set(SERIALIZER, "org.apache.spark.serializer.KryoSerializer")
128-
conf.set(KRYO_USER_REGISTRATORS, classOf[MyRegistrator].getName)
128+
conf.set(KRYO_USER_REGISTRATORS, Seq(classOf[MyRegistrator].getName))
129129
conf.set(KRYO_USE_UNSAFE, useUnsafe)
130130

131131
new KryoSerializer(conf).newInstance()

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ object KryoSerializerBenchmark extends BenchmarkBase {
7676
conf.set(EXECUTOR_EXTRA_JAVA_OPTIONS,
7777
"-XX:+UseParallelGC -XX:-UseDynamicNumberOfGCThreads")
7878
conf.set(SERIALIZER, "org.apache.spark.serializer.KryoSerializer")
79-
conf.set(KRYO_USER_REGISTRATORS, classOf[MyRegistrator].getName)
79+
conf.set(KRYO_USER_REGISTRATORS, Seq(classOf[MyRegistrator].getName))
8080
conf.set(KRYO_USE_POOL, usePool)
8181

8282
if (sc != null) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class KryoSerializerDistributedSuite extends SparkFunSuite with LocalSparkContex
2929
test("kryo objects are serialised consistently in different processes") {
3030
val conf = new SparkConf(false)
3131
.set(config.SERIALIZER, "org.apache.spark.serializer.KryoSerializer")
32-
.set(config.Kryo.KRYO_USER_REGISTRATORS, classOf[AppJarRegistrator].getName)
32+
.set(config.Kryo.KRYO_USER_REGISTRATORS, Seq(classOf[AppJarRegistrator].getName))
3333
.set(config.TASK_MAX_FAILURES, 1)
3434
.set(config.BLACKLIST_ENABLED, false)
3535

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ import org.apache.spark.util.ThreadUtils
4242

4343
class KryoSerializerSuite extends SparkFunSuite with SharedSparkContext {
4444
conf.set(SERIALIZER, "org.apache.spark.serializer.KryoSerializer")
45-
conf.set(KRYO_USER_REGISTRATORS, classOf[MyRegistrator].getName)
45+
conf.set(KRYO_USER_REGISTRATORS, Seq(classOf[MyRegistrator].getName))
4646
conf.set(KRYO_USE_UNSAFE, false)
4747

4848
test("SPARK-7392 configuration limits") {
@@ -313,7 +313,7 @@ class KryoSerializerSuite extends SparkFunSuite with SharedSparkContext {
313313
import org.apache.spark.SparkException
314314

315315
val conf = new SparkConf(false)
316-
conf.set(KRYO_USER_REGISTRATORS, "this.class.does.not.exist")
316+
conf.set(KRYO_USER_REGISTRATORS, Seq("this.class.does.not.exist"))
317317

318318
val thrown = intercept[SparkException](new KryoSerializer(conf).newInstance().serialize(1))
319319
assert(thrown.getMessage.contains("Failed to register classes with Kryo"))
@@ -412,7 +412,7 @@ class KryoSerializerSuite extends SparkFunSuite with SharedSparkContext {
412412
val ser = new KryoSerializer(new SparkConf).newInstance().asInstanceOf[KryoSerializerInstance]
413413
assert(ser.getAutoReset)
414414
val conf = new SparkConf().set(KRYO_USER_REGISTRATORS,
415-
classOf[RegistratorWithoutAutoReset].getName)
415+
Seq(classOf[RegistratorWithoutAutoReset].getName))
416416
val ser2 = new KryoSerializer(conf).newInstance().asInstanceOf[KryoSerializerInstance]
417417
assert(!ser2.getAutoReset)
418418
}
@@ -443,7 +443,7 @@ class KryoSerializerSuite extends SparkFunSuite with SharedSparkContext {
443443
.set(KRYO_REFERENCE_TRACKING, referenceTracking)
444444
.set(KRYO_USE_POOL, usePool)
445445
if (!autoReset) {
446-
conf.set(KRYO_USER_REGISTRATORS, classOf[RegistratorWithoutAutoReset].getName)
446+
conf.set(KRYO_USER_REGISTRATORS, Seq(classOf[RegistratorWithoutAutoReset].getName))
447447
}
448448
val ser = new KryoSerializer(conf)
449449
val serInstance = ser.newInstance().asInstanceOf[KryoSerializerInstance]
@@ -530,7 +530,7 @@ class KryoSerializerSuite extends SparkFunSuite with SharedSparkContext {
530530

531531
class KryoSerializerAutoResetDisabledSuite extends SparkFunSuite with SharedSparkContext {
532532
conf.set(SERIALIZER, classOf[KryoSerializer].getName)
533-
conf.set(KRYO_USER_REGISTRATORS, classOf[RegistratorWithoutAutoReset].getName)
533+
conf.set(KRYO_USER_REGISTRATORS, Seq(classOf[RegistratorWithoutAutoReset].getName))
534534
conf.set(KRYO_REFERENCE_TRACKING, true)
535535
conf.set(SHUFFLE_MANAGER, "sort")
536536
conf.set(SHUFFLE_SORT_BYPASS_MERGE_THRESHOLD, 200)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class SerializerPropertiesSuite extends SparkFunSuite {
5252

5353
test("KryoSerializer does not support relocation when auto-reset is disabled") {
5454
val conf = new SparkConf().set(KRYO_USER_REGISTRATORS,
55-
classOf[RegistratorWithoutAutoReset].getName)
55+
Seq(classOf[RegistratorWithoutAutoReset].getName))
5656
val ser = new KryoSerializer(conf)
5757
assert(!ser.newInstance().asInstanceOf[KryoSerializerInstance].getAutoReset())
5858
testSupportsRelocationOfSerializedObjects(ser, generateRandomItem)

sql/core/src/test/scala/org/apache/spark/sql/DatasetSerializerRegistratorSuite.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class DatasetSerializerRegistratorSuite extends QueryTest with SharedSparkSessio
3434

3535
override protected def sparkConf: SparkConf = {
3636
// Make sure we use the KryoRegistrator
37-
super.sparkConf.set(KRYO_USER_REGISTRATORS, TestRegistrator().getClass.getCanonicalName)
37+
super.sparkConf.set(KRYO_USER_REGISTRATORS, Seq(TestRegistrator().getClass.getCanonicalName))
3838
}
3939

4040
test("Kryo registrator") {

0 commit comments

Comments
 (0)