-
Type: Bug
-
Status: Resolved
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 10.10
-
Fix Version/s: 10.10-HF48, 11.x, 2021.4
-
Component/s: Workflow
-
Release Notes Summary:Workflow cache uses cluster invalidations.
-
Tags:
-
Backlog priority:700
-
Sprint:nxplatform #35
-
Story Points:5
Even when NXP-30170 will be fixed, there is still a case where Nuxeo nodes could reference in their cache different DocumentRoute ids (workflow definitions)
- Node A has started with the Serial workflow using version 1
- user A starts on node A the Serial workflow (v1)
- this version 1 is added to the routeModel cache on Node A for 10 minutes
- Node B is started with a new definition for the Serial workflow (version 2) => it replaces in the repository the corresponding DocumentRoute
- user 1 starts on node A another Serial workflow
- it should starts the Serial workflow v2 but it throws an error because nodeA still references v1 in its cache
This exception happens
org.nuxeo.ecm.core.api.DocumentNotFoundException: 5923a85e-6c21-4501-a6df-7cc4d6dda272 at org.nuxeo.ecm.core.storage.dbs.DBSSession.getDocumentByUUID(DBSSession.java:407) ~[nuxeo-core-storage-dbs-10.10-HF33.jar:?] at sun.reflect.GeneratedMethodAccessor99.invoke(Unknown Source) ~[?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_275] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_275] at org.nuxeo.ecm.core.storage.dbs.DBSRepositoryBase$DBSSessionInvoker.invoke(DBSRepositoryBase.java:505) ~[nuxeo-core-storage-dbs-10.10-HF33.jar:?] at com.sun.proxy.$Proxy103.getDocumentByUUID(Unknown Source) ~[?:?] at org.nuxeo.ecm.core.api.AbstractSession.resolveReference(AbstractSession.java:337) ~[nuxeo-core-10.10-HF36.jar:?] at org.nuxeo.ecm.core.api.AbstractSession.getDocument(AbstractSession.java:959) ~[nuxeo-core-10.10-HF36.jar:?] at org.nuxeo.ecm.platform.routing.core.impl.DocumentRoutingServiceImpl$1.run(DocumentRoutingServiceImpl.java:216) ~[nuxeo-routing-core-10.10-HF36.jar:?] at org.nuxeo.ecm.core.api.UnrestrictedSessionRunner.runUnrestricted(UnrestrictedSessionRunner.java:119) ~[nuxeo-core-api-10.10-HF37.jar:?] at org.nuxeo.ecm.platform.routing.core.impl.DocumentRoutingServiceImpl.createNewInstance(DocumentRoutingServiceImpl.java:241) ~[nuxeo-routing-core-10.10-HF36.jar:?]
Nuxeo shoud implement a fallback or try/catch mechanism where it tries to find the new version of the Serial workflow if a DocumentNotFoundException happens when reading a routeModel id.