Hello weld

I had a customer report that they were getting conversation not found exceptions when restarting their server and visiting a url with a ?cid=1 suffix.

After investigation I believe the issue is that weld was acquiring it's ConversationContext.conversations from the session database via
com.ibm.ws.session.store.db.DatabaseSession.getMultiRowAppData(). Once weld had retrieved the conversations map it would then decide that since the map was already in the session attributes there was no need to put it back into the attributes.

This means that Liberty did not realise the conversations map had been updated, and did not store it's updated state into the database when the server shut down again.


I have submitted a pair of pull requests that asks weld to mark the conversation map as dirty upon access - this behaviour is gated behind ConfigurationKey.RESET_HTTP_SESSION_ATTR_ON_BEAN_ACCESS  - I have tested it locally and it works. The next step is to prepare a test fix for the customer to verify. However I wanted to send you this quick note to keep you in the loop.

Regards
Benjamin

Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU