From f0c9413a5373c4ecaa898c49ff2dd35c8f0becc0 Mon Sep 17 00:00:00 2001 From: leventov Date: Wed, 1 Jul 2015 14:05:56 +0300 Subject: [PATCH] lockInterruptibly() --- .../chronicle/map/ChannelProvider.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/openhft/chronicle/map/ChannelProvider.java b/src/main/java/net/openhft/chronicle/map/ChannelProvider.java index d7b96166c..019b7c8a0 100644 --- a/src/main/java/net/openhft/chronicle/map/ChannelProvider.java +++ b/src/main/java/net/openhft/chronicle/map/ChannelProvider.java @@ -87,7 +87,7 @@ public final class ChannelProvider implements Closeable { final EntryExternalizable asEntryExternalizable = new EntryExternalizable() { @Override public int sizeOfEntry(@NotNull Bytes entry, int chronicleChannel) { - channelDataLock.readLock().lock(); + channelDataReadLock(); try { return channelEntryExternalizables[chronicleChannel] @@ -99,7 +99,7 @@ public final class ChannelProvider implements Closeable { @Override public boolean identifierCheck(@NotNull ReplicableEntry entry, int chronicleChannel) { - channelDataLock.readLock().lock(); + channelDataReadLock(); try { return channelEntryExternalizables[chronicleChannel] @@ -121,7 +121,7 @@ public final class ChannelProvider implements Closeable { @Override public void writeExternalEntry(@NotNull Bytes entry, @NotNull Bytes destination, int chronicleChannel) { - channelDataLock.readLock().lock(); + channelDataReadLock(); try { destination.writeStopBit(chronicleChannel); channelEntryExternalizables[chronicleChannel] @@ -134,7 +134,7 @@ public final class ChannelProvider implements Closeable { @Override public void readExternalEntry( @NotNull Bytes source) { - channelDataLock.readLock().lock(); + channelDataReadLock(); try { final int chronicleId = (int) source.readStopBit(); if (chronicleId < chronicleChannels.length) { @@ -168,7 +168,7 @@ public final class ChannelProvider implements Closeable { final ModificationIterator result0 = new ModificationIterator() { @Override public boolean hasNext() { - channelDataLock.readLock().lock(); + channelDataReadLock(); try { // old-style iteration to avoid 1) iterator object creation // 2) ConcurrentModificationException @@ -188,7 +188,7 @@ public final class ChannelProvider implements Closeable { @Override public boolean nextEntry(@NotNull EntryCallback callback, final int na) { - channelDataLock.readLock().lock(); + channelDataReadLock(); try { for (Map.Entry chronicleChannel : chronicleChannelMap.entrySet()) { @@ -208,7 +208,7 @@ public final class ChannelProvider implements Closeable { @Override public void dirtyEntries(long fromTimeStamp) { - channelDataLock.readLock().lock(); + channelDataReadLock(); try { for (Replica chronicleChannel : chronicleChannelMap.values()) { @@ -234,7 +234,7 @@ public final class ChannelProvider implements Closeable { */ @Override public long lastModificationTime(byte remoteIdentifier) { - channelDataLock.readLock().lock(); + channelDataReadLock(); try { long t = 0; // not including the SystemQueue at index 0 @@ -254,6 +254,14 @@ public final class ChannelProvider implements Closeable { } }; + private void channelDataReadLock() { + try { + channelDataLock.readLock().lockInterruptibly(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + private final ReplicationHub hub;