From 0777e21da5070beeaad23cf5e3e42472fb2f7389 Mon Sep 17 00:00:00 2001 From: Tom Duffey Date: Tue, 6 May 2025 11:36:41 -0500 Subject: [PATCH] Added pause/resume sync to ClusterNode --- .../jackrabbit/core/cluster/ClusterNode.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java b/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java index 1fdadc95784..46d0633818d 100644 --- a/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java +++ b/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java @@ -393,6 +393,41 @@ public synchronized void stop() { } } + /** + * Pauses sync on the cluster node. + */ + public synchronized void pauseSync() throws ClusterException { + try { + syncLock.acquire(); + } catch (InterruptedException e) { + String msg = "Interrupted while waiting for mutex."; + throw new ClusterException(msg); + } + } + + /** + * Attempts to pause sync on the cluster node waiting up to the provided msecs. + * @see EDU.oswego.cs.dl.util.concurrent.Mutex#attempt(long) + * @param msecs Number of milliseconds to wait + * @return True of lock was acquired, otherwise false + * @throws ClusterException + */ + public synchronized boolean pauseSync(long msecs) throws ClusterException { + try { + return syncLock.attempt(msecs); + } catch (InterruptedException e) { + String msg = "Interrupted while waiting for mutex."; + throw new ClusterException(msg); + } + } + + /** + * Resumes sync the cluster node. + */ + public synchronized void resumeSync() { + syncLock.release(); + } + /** * Create an {@link UpdateEventChannel} for some workspace. *