Closed MichaelPluessErni closed 6 months ago
The stack trace indicates that the error happened when SessionSerializer tried to mark serialization started on the serialization backend. This operation happens in the request thread or background thread that is pushing changes, making the action fail.
@heruan we should probably handle errors when on backendConnector.markSerializationStarted(clusterKey)
, postponing the serialization to the next request.
An alternative could be to reschedule the serialization after some delay in case of error, but this would require additional effort to detect and discard stale operation, e.g. when a new request successfully completes the serialization process before the postponed task is executed.
Error description:
When an error occurs during session serialization, the UI often displays "Offline" / "Online" notifications on the client side that are not related to the actual state of the connection to the server side.
It is possible to use the UI, but sometimes certain operations randomly do not work as though the session was not available, even though it should be.
Expected behaviour:
Errors during session serialization should not impair users using the app. Session serialization errors should not cause other errors in the app.
Details:
We are using Spring Boot + Redis to store the serialized sessions. There was an error in Redis where the key expiration was not configured correctly and an Out-Of-Memory error was caused. This led to the following exception in our Vaadin application:
Which caused this follow-up error:
The moment when the Redis memory was filled with keys:
During the time it took us to solve the Redis error, the Vaadin application UI behaved very strangely: It was constantly showing "Offline" / "Online" notifications. We were suspecting that the session serialization interfered with the Vaadin push system.