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