This is an automated email from the ASF dual-hosted git repository. miroslav pushed a commit to branch issue/OAK-9212_2 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit 6ae505aa1b5954a2a05725b7150cffe518e1399f Author: Miroslav Smiljanic <miros...@apache.com> AuthorDate: Wed Aug 27 16:33:23 2025 +0200 OAK-9212 add nonblocking method to WriteAccessController --- .../jackrabbit/oak/segment/remote/WriteAccessController.java | 10 ++++++++++ .../oak/segment/remote/WriteAccessControllerTest.java | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/WriteAccessController.java b/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/WriteAccessController.java index 929e5375f0..3fa162cbc0 100644 --- a/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/WriteAccessController.java +++ b/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/WriteAccessController.java @@ -33,6 +33,9 @@ public class WriteAccessController { } } + /** + * Blocks the current thread until writing is allowed. + */ public void checkWritingAllowed() { while (!isWritingAllowed) { synchronized (lock) { @@ -48,4 +51,11 @@ public class WriteAccessController { } } } + + /** + * @return true if writing is allowed, false otherwise + */ + public boolean isWritingAllowed() { + return isWritingAllowed; + } } diff --git a/oak-segment-remote/src/test/java/org/apache/jackrabbit/oak/segment/remote/WriteAccessControllerTest.java b/oak-segment-remote/src/test/java/org/apache/jackrabbit/oak/segment/remote/WriteAccessControllerTest.java index 4302d8158e..751a12b67d 100644 --- a/oak-segment-remote/src/test/java/org/apache/jackrabbit/oak/segment/remote/WriteAccessControllerTest.java +++ b/oak-segment-remote/src/test/java/org/apache/jackrabbit/oak/segment/remote/WriteAccessControllerTest.java @@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.segment.remote; import org.junit.Test; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; public class WriteAccessControllerTest { @@ -51,6 +52,14 @@ public class WriteAccessControllerTest { assertFalse(t2.isAlive()); } + @Test + public void testWritingAllowed() { + WriteAccessController controller = new WriteAccessController(); + assertFalse(controller.isWritingAllowed()); + controller.enableWriting(); + assertTrue(controller.isWritingAllowed()); + } + private void assertThreadWaiting(Thread.State state) { assert state == Thread.State.WAITING || state == Thread.State.TIMED_WAITING; }