From 9ab3b6daf4966d3687e84100701996a9e40e67c5 Mon Sep 17 00:00:00 2001 From: Manfred Baedke Date: Wed, 18 Feb 2026 14:51:38 +0100 Subject: [PATCH] JCR-5229: LockedWrapperTest.testSequenceWithSessionRefresh() may fail due to race conditions Added synchronization. --- .../jackrabbit/core/LockedWrapperTest.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/LockedWrapperTest.java b/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/LockedWrapperTest.java index 46103d56410..eb5af3e4a7b 100644 --- a/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/LockedWrapperTest.java +++ b/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/LockedWrapperTest.java @@ -305,22 +305,25 @@ public Long call() throws RepositoryException, InterruptedException { } Node n = s.getNode(counterPath); - long value = new LockedWrapper() { + long value = 0; + synchronized (counter) { + value = new LockedWrapper() { - @Override - protected Long run(Node node) - throws RepositoryException { + @Override + protected Long run(Node node) + throws RepositoryException { - Property seqProp = node.getProperty("value"); - long value = seqProp.getLong(); - seqProp.setValue(++value); - s.save(); - return value; - } - }.with(n, false); + Property seqProp = node.getProperty("value"); + long value = seqProp.getLong(); + seqProp.setValue(++value); + s.save(); + return value; + } + }.with(n, false); - // check that the sequence is ok - assertEquals(counter.getAndIncrement(), value); + // check that the sequence is ok + assertEquals(counter.getAndIncrement(), value); + } // do a random wait Thread.sleep(random.nextInt(100));