1

We are trying to migrate from Helidon 2.5.4 to Helidon 3.2.0. We have observed that some of our tests are failing with below error, Caused by: org.hibernate.type.SerializationException: could not deserialize at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:231) at org.hibernate.internal.util.SerializationHelper.deserialize(SerializationHelper.java:287) at org.hibernate.internal.util.SerializationHelper.clone(SerializationHelper.java:75) at org.hibernate.type.descriptor.java.SerializableJavaType$SerializableMutabilityPlan.deepCopyNotNull(SerializableJavaType.java:44) at org.hibernate.type.descriptor.java.SerializableJavaType$SerializableMutabilityPlan.deepCopyNotNull(SerializableJavaType.java:35) at org.hibernate.type.descriptor.java.MutableMutabilityPlan.deepCopy(MutableMutabilityPlan.java:45) at org.hibernate.type.descriptor.java.JavaType.getReplacement(JavaType.java:77) at org.hibernate.type.internal.ConvertedBasicTypeImpl.replace(ConvertedBasicTypeImpl.java:329) at org.hibernate.type.TypeHelper.replace(TypeHelper.java:88) at org.hibernate.event.internal.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:493) at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:384) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:176) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:76) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:828) ... 97 more Caused by: java.io.InvalidClassException: filter status: REJECTED at java.base/java.io.ObjectInputStream.filterCheck(ObjectInputStream.java:1432) at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:2068) at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1922) at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2248) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1757) at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:538) at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:496) at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:225)

After further debugging, we noticed that exception is getting thrown(In ObjectInputStream) for the attribute which is of type java.net.URI We tried to fix this issue by applying @Basic annotation but still the error is same. Below are some of the attributes in the domain object which is getting used in the failed test case,

@Id
@Column(name = "ID")
@Basic
@JdbcTypeCode(SqlTypes.VARCHAR)
private UUID id;

@Column(name = "FILE_URI")
@Basic
@Convert(converter = UriAttributeConverter.class)
@Nullable
private URI fileUri;
@Nullable
@Column(name = "APPLICATION_URI")
@Basic
@Convert(converter = UriAttributeConverter.class)
private URI applicationUri;

Can someone please help us with this issue with any pointers?

1 Answers1

1

As the stack indicates, Hibernate is deserializing something:

Caused by: java.io.InvalidClassException: filter status: REJECTED at java.base/java.io.ObjectInputStream.filterCheck(ObjectInputStream.java:1432) 
    at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:2068)
    at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1922)
    at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2248)
    at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1757) 
    at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:538) 
    at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:496) 
    at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:225)

(What Hibernate is deserializing is not clear, nor why it is doing so.)

Helidon's feature that blocks deserialization by default in conjunction with Java's serialization filtering is blocking this deserialization attempt because you have not told Helidon to permit it.

Laird Nelson
  • 15,321
  • 19
  • 73
  • 127