ERROR [ajp-nio-8009-exec-5] o.j.p.web.ExceptionLoggingFilter 2019-06-28 16:33:49,501 - uPortal: unhandled exception 'Object of class [org.jasig.portal.portlet.dao.jpa.PortalCookieImpl] with identifier [73801878]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jasig.portal.portlet.dao.jpa.PortalCookieImpl#73801878]' for URL=/portal/p/my-hrs-portlet-roles.ctf1/max/rolesAsReport.resource.uP?pCc=cacheLevelPage, user=REDACTED , from IP=REDACTED org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Object of class [org.jasig.portal.portlet.dao.jpa.PortalCookieImpl] with identifier [73801878]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jasig.portal.portlet.dao.jpa.PortalCookieImpl#73801878]
In the past, restarting* nodes has made this exception go away. Turn it off and turn it back on again, as it were.
Here's what I'm wondering
1. What's a PortalCookie and why do I need it? Differentially from a plain old JSESSIONID etc.?
2. How hard is it to stop needing it, and stop having it, along the lines of surgically removing an appendix.
I'll dig into this when I have time and update this thread with findings.
(MyUW is on uPortal 4.2.1.)
-Andrew
*: conceptually, restarting. Not literally restarting. MyUW uses Docker containers that are livestock not pets -- we don't patch or even restart them, we replace them.