diff --git a/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyChannel.java b/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyChannel.java index 9782db3cdde..aa173eee224 100644 --- a/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyChannel.java +++ b/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyChannel.java @@ -71,29 +71,20 @@ private enum Operation { private final PnfsId target; private final boolean isOpenForRead; private final NotificationAmplifier notification; + private final Duration suppressDuration; private Operation lastOperation; private Instant whenSendNextEvent; - private Duration suppressDuration = Duration.ZERO; public InotifyChannel(RepositoryChannel inner, NotificationAmplifier notification, - PnfsId target, boolean openForWrite) + PnfsId target, boolean openForWrite, Duration suppressDuration) { this.inner = inner; this.target = target; isOpenForRead = !openForWrite; this.notification = notification; - } - - public synchronized void setSuppressDuration(Duration duration) - { - Instant newWhenSendNextEvent = whenSendNextEvent == null - ? null - : whenSendNextEvent.minus(suppressDuration).plus(duration); - - suppressDuration = duration; - whenSendNextEvent = newWhenSendNextEvent; + this.suppressDuration = suppressDuration; } @Override diff --git a/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyReplicaRecord.java b/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyReplicaRecord.java index e88840a11d8..39375efdd0c 100644 --- a/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyReplicaRecord.java +++ b/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyReplicaRecord.java @@ -42,8 +42,7 @@ public class InotifyReplicaRecord extends ForwardingReplicaRecord { private final ReplicaRecord inner; private final NotificationAmplifier notification; - - private Duration suppressDuration = Duration.ZERO; + private final Duration suppressDuration; public enum OpenFlags implements OpenOption { @@ -58,19 +57,11 @@ public enum OpenFlags implements OpenOption public InotifyReplicaRecord(ReplicaRecord inner, NotificationAmplifier notification, - PnfsId target) + PnfsId target, Duration suppressDuration) { this.inner = inner; this.notification = notification; - } - - /** - * Update the suppression period for all subsequently opened - * RepositoryChannel. Any already opened channels are not affected. - */ - public void setSuppressDuration(Duration duration) - { - suppressDuration = duration; + this.suppressDuration = suppressDuration; } @Override @@ -96,8 +87,7 @@ public RepositoryChannel openChannel(Set mode) boolean openForWrite = mode.contains(StandardOpenOption.WRITE); InotifyChannel channel = new InotifyChannel(innerChannel, notification, - getPnfsId(), openForWrite); - channel.setSuppressDuration(suppressDuration); + getPnfsId(), openForWrite, suppressDuration); channel.sendOpenEvent(); return channel; } diff --git a/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyReplicaStore.java b/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyReplicaStore.java index f211f5a77b5..cc55b2423a4 100644 --- a/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyReplicaStore.java +++ b/modules/dcache/src/main/java/org/dcache/pool/repository/inotify/InotifyReplicaStore.java @@ -63,9 +63,7 @@ public ReplicaRecord create(PnfsId id, Set flags) throws DuplicateEntryException, CacheException { ReplicaRecord innerRecord = super.create(id, flags); - InotifyReplicaRecord record = new InotifyReplicaRecord(innerRecord, notification, id); - record.setSuppressDuration(suppression); - return record; + return new InotifyReplicaRecord(innerRecord, notification, id, suppression); } @Override @@ -76,8 +74,6 @@ public ReplicaRecord get(PnfsId id) throws CacheException return null; } - InotifyReplicaRecord record = new InotifyReplicaRecord(innerRecord, notification, id); - record.setSuppressDuration(suppression); - return record; + return new InotifyReplicaRecord(innerRecord, notification, id, suppression); } }