diff --git a/exist-core/src/main/java/org/exist/collections/triggers/XQueryTrigger.java b/exist-core/src/main/java/org/exist/collections/triggers/XQueryTrigger.java index 5bd690b3830..0a50ddaf9e1 100644 --- a/exist-core/src/main/java/org/exist/collections/triggers/XQueryTrigger.java +++ b/exist-core/src/main/java/org/exist/collections/triggers/XQueryTrigger.java @@ -405,6 +405,7 @@ private void execute(final TriggerPhase phase, final TriggerEvent event, final D compiledQuery = getScript(broker, transaction); if (compiledQuery == null) { // NOTE: can occur if there is no such XQueryTrigger library module available in the database + TriggerStatePerThread.clearIfFinished(phase); return; } } catch (final TriggerException e) { @@ -447,6 +448,7 @@ private void execute(final TriggerPhase phase, final TriggerEvent event, final D if (LOG.isDebugEnabled()) { LOG.debug("No such function '" + functionName + "' in XQueryTrigger: " + compiledQuery.getSource()); } + TriggerStatePerThread.clearIfFinished(phase); return; } } diff --git a/exist-core/src/test/java/org/exist/storage/StoreResourceTest.java b/exist-core/src/test/java/org/exist/storage/StoreResourceTest.java index 67d22cae0ff..986a143d869 100644 --- a/exist-core/src/test/java/org/exist/storage/StoreResourceTest.java +++ b/exist-core/src/test/java/org/exist/storage/StoreResourceTest.java @@ -52,7 +52,7 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static org.exist.test.TestConstants.TEST_COLLECTION_URI; import static org.hamcrest.Matchers.*; -import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.greaterThanOrEqualTo; import static org.junit.Assert.*; public class StoreResourceTest { @@ -80,7 +80,7 @@ public void replaceXmlAsOwner() throws AuthenticationException, LockException, P final Subject user2 = existWebServer.getBrokerPool().getSecurityManager().authenticate(USER2_NAME, USER2_PWD); final long originalDoc1LastModified = getLastModified(USER1_DOC1); replaceXmlDoc(user2, USER1_DOC1, "else"); - checkAttributes(USER1_DOC1, USER1_NAME, GROUP1_NAME, USER1_DOC1_MODE, equalTo(getCreated(USER1_DOC1)), not(originalDoc1LastModified)); + checkAttributes(USER1_DOC1, USER1_NAME, GROUP1_NAME, USER1_DOC1_MODE, equalTo(getCreated(USER1_DOC1)), greaterThanOrEqualTo(originalDoc1LastModified)); } /** @@ -91,7 +91,7 @@ public void replaceBinaryAsGroupMember() throws AuthenticationException, LockExc final Subject user2 = existWebServer.getBrokerPool().getSecurityManager().authenticate(USER2_NAME, USER2_PWD); final long originalDoc1LastModified = getLastModified(USER1_BIN_DOC1); replaceBinDoc(user2, USER1_BIN_DOC1, "something else"); - checkAttributes(USER1_BIN_DOC1, USER1_NAME, GROUP1_NAME, USER1_BIN_DOC1_MODE, equalTo(getCreated(USER1_BIN_DOC1)), not(originalDoc1LastModified)); + checkAttributes(USER1_BIN_DOC1, USER1_NAME, GROUP1_NAME, USER1_BIN_DOC1_MODE, equalTo(getCreated(USER1_BIN_DOC1)), greaterThanOrEqualTo(originalDoc1LastModified)); } private void replaceXmlDoc(final Subject execAsUser, final XmldbURI docName, final String content) throws EXistException, PermissionDeniedException, LockException, IOException, SAXException {