Catch IOException potentially caused by getQp_num().
diff --git a/rpc-darpc/src/main/java/com/ibm/crail/namenode/rpc/darpc/DaRPCServiceDispatcher.java b/rpc-darpc/src/main/java/com/ibm/crail/namenode/rpc/darpc/DaRPCServiceDispatcher.java
index 2e2bdfa..a5b8a98 100644
--- a/rpc-darpc/src/main/java/com/ibm/crail/namenode/rpc/darpc/DaRPCServiceDispatcher.java
+++ b/rpc-darpc/src/main/java/com/ibm/crail/namenode/rpc/darpc/DaRPCServiceDispatcher.java
@@ -22,6 +22,7 @@
 package com.ibm.crail.namenode.rpc.darpc;
 
 import java.util.concurrent.atomic.AtomicLong;
+import java.io.IOException;
 
 import org.slf4j.Logger;
 
@@ -161,7 +162,12 @@
 	
 	@Override
 	public void open(DaRPCServerEndpoint<DaRPCNameNodeRequest, DaRPCNameNodeResponse> endpoint) {
-		LOG.info("RPC connection, qpnum " + endpoint.getQp().getQp_num());
+		try {
+			LOG.info("RPC connection, qpnum " + endpoint.getQp().getQp_num());
+		} catch(IOException e)
+		{
+			LOG.info("RPC connection, cannot get qpnum, because QP is not open.\n");
+		}
 	}	
 
 	@Override
diff --git a/storage-rdma/src/main/java/com/ibm/crail/storage/rdma/MrCache.java b/storage-rdma/src/main/java/com/ibm/crail/storage/rdma/MrCache.java
index e1f693a..a44a527 100644
--- a/storage-rdma/src/main/java/com/ibm/crail/storage/rdma/MrCache.java
+++ b/storage-rdma/src/main/java/com/ibm/crail/storage/rdma/MrCache.java
@@ -41,7 +41,7 @@
 		this.cacheOps = new AtomicLong(0);
 	}
 	
-	public DeviceMrCache getDeviceCache(IbvPd pd){
+	public DeviceMrCache getDeviceCache(IbvPd pd) throws IOException {
 		DeviceMrCache deviceCache = cache.get(pd.getHandle());
 		if (deviceCache == null) {
 			deviceCache = new DeviceMrCache(pd);