Skip to content

Customize handling of ConversionFailedException #3430

Open
@EagerSloth

Description

@EagerSloth

Expected Behavior

As a developer I am able to customize behavior for ConversionFailedException, e.g. log field name, return null instead of throwing exception during getAttribute operations.

Current Behavior

When a ConversionFailedException is thrown, there is no way to recover other than waiting for session to expire.

Context

We recently started using spring session (transitioning from an old app that used a tomcat session serialization valve). While locally experimenting with changes to a class, I discovered that changes to it's serialized form result in non-recoverable errors. I did expect session.getAttribute to fail - but I was also unable to replace the "broken" value due to setAttribute calling getAttribute to fetch the "old" value.

I am aware that Java standard serialization is a fragile construct - but I am not yet ready to replace this with e.g. JSON serialization.

My current solution is overriding Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) in the GenericConversionService - but in that context I have no knowledge anymore about the field name which makes properly logging the issue very hard.

I am wiling to provide a proof of concept solution for this issue, if:

  • there is any interest from spring-session in such a solution at all
  • I can get guidance on what level to introduce such a solution (HttpSessionAdapter or further down in specific SessionRepository implementations)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions