From 76d6817c418fb4e2faba005155bc9e9e5d507698 Mon Sep 17 00:00:00 2001 From: Rob Austin Date: Mon, 2 Feb 2015 08:28:57 +0000 Subject: [PATCH] fixed NPE - java.lang.NullPointerException at net.openhft.chronicle.map.StatelessChronicleMap.receiveBytesFromSocket(StatelessChronicleMap.java:1322) at net.openhft.chronicle.map.StatelessChronicleMap.nextEntry(StatelessChronicleMap.java:1216) at net.openhft.chronicle.map.StatelessChronicleMap.blockingFetchThrowable(StatelessChronicleMap.java:1162) at net.openhft.chronicle.map.StatelessChronicleMap.blockingFetchReadOnly(StatelessChronicleMap.java:1135) at net.openhft.chronicle.map.StatelessChronicleMap.readValue(StatelessChronicleMap.java:1484) at net.openhft.chronicle.map.StatelessChronicleMap.fetchObject(StatelessChronicleMap.java:1782) at net.openhft.chronicle.map.StatelessChronicleMap.put(StatelessChronicleMap.java:596) at net.openhft.chronicle.map.StatelessClientTest$3.run(StatelessClientTest.java:659) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) --- .../net/openhft/chronicle/map/StatelessChronicleMap.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/openhft/chronicle/map/StatelessChronicleMap.java b/src/main/java/net/openhft/chronicle/map/StatelessChronicleMap.java index 52867dadb..69cd99d19 100644 --- a/src/main/java/net/openhft/chronicle/map/StatelessChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/StatelessChronicleMap.java @@ -1328,6 +1328,7 @@ class StatelessChronicleMap implements ChronicleMap, Closeable, Clon @SuppressWarnings("UnusedReturnValue") private Bytes receiveBytesFromSocket(int requiredNumberOfBytes, long timeoutTime) throws IOException { + // assert !outBytesLock.isHeldByCurrentThread(); assert inBytesLock.isHeldByCurrentThread(); @@ -1335,11 +1336,14 @@ class StatelessChronicleMap implements ChronicleMap, Closeable, Clon inBytes.limit(requiredNumberOfBytes); inBytes.buffer().position(0); inBytes.buffer().limit(requiredNumberOfBytes); + SocketChannel clientChannel0 = clientChannel; + if (clientChannel0 == null) + return inBytes; while (inBytes.buffer().remaining() > 0) { assert requiredNumberOfBytes <= inBytes.capacity(); - int len = clientChannel.read(inBytes.buffer()); + int len = clientChannel0.read(inBytes.buffer()); if (len == -1) throw new IORuntimeException("Disconnection to server");