nastra commented on code in PR #12984: URL: https://github.com/apache/iceberg/pull/12984#discussion_r2076845190
########## aws/src/main/java/org/apache/iceberg/aws/AwsClientProperties.java: ########## @@ -98,7 +99,7 @@ public AwsClientProperties() { } public AwsClientProperties(Map<String, String> properties) { - this.allProperties = SerializableMap.copyOf(properties); + this.allProperties = new HashMap<>(properties); Review Comment: in fact we're using `SerializableMap` mainly due to Kryo ser/de so I'm surprised that this ended up being an issue. I've also added ``` @Test public void testKryoSerialization() throws IOException { AwsClientProperties props = new AwsClientProperties( ImmutableMap.of(AwsClientProperties.CLIENT_REGION, "us-east-1", "k1", "v1")); AwsClientProperties deserialized = TestHelpers.KryoHelpers.roundTripSerialize(props); assertThat(deserialized.clientRegion()).isEqualTo(props.clientRegion()); } ``` to `AwsClientPropertiesTest` but that passes with Kryo ser/de. If you e.g. run this test but change `allProperties` to be an `ImmutableMap`, then you would see that `allProperties` is actually the underlying issue for Kryo ser/de: ``` java.lang.UnsupportedOperationException Serialization trace: allProperties (org.apache.iceberg.aws.AwsClientProperties) com.esotericsoftware.kryo.KryoException: java.lang.UnsupportedOperationException Serialization trace: allProperties (org.apache.iceberg.aws.AwsClientProperties) at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:144) at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:543) at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:813) at org.apache.iceberg.TestHelpers$KryoHelpers.roundTripSerialize(TestHelpers.java:292) at org.apache.iceberg.aws.AwsClientPropertiesTest.testKryoSerialization(AwsClientPropertiesTest.java:49) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ... at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Caused by: java.lang.UnsupportedOperationException at org.apache.iceberg.relocated.com.google.common.collect.ImmutableMap.put(ImmutableMap.java:814) at com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:162) at com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:39) at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:731) at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:125) ... 88 more ``` In your case the issue seems to be due to `java.lang.IndexOutOfBoundsException: Index 113 out of bounds for length 28`. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org