diff --git a/src/main/java/org/apache/spark/shuffle/rdma/RdmaNode.java b/src/main/java/org/apache/spark/shuffle/rdma/RdmaNode.java index 857bb197..855de941 100755 --- a/src/main/java/org/apache/spark/shuffle/rdma/RdmaNode.java +++ b/src/main/java/org/apache/spark/shuffle/rdma/RdmaNode.java @@ -232,8 +232,12 @@ private void initCpuArrayList() throws IOException { }; final int maxCpu = Runtime.getRuntime().availableProcessors() - 1; + int numCompletionVectors = listenerRdmaCmId.getVerbs().getNumCompVectors(); + if (numCompletionVectors <= 0) { + numCompletionVectors = 1; + } final int maxUsableCpu = Math.min(Runtime.getRuntime().availableProcessors(), - listenerRdmaCmId.getVerbs().getNumCompVectors()) - 1; + numCompletionVectors) - 1; if (maxUsableCpu < maxCpu - 1) { logger.warn("IbvContext supports only " + (maxUsableCpu + 1) + " CPU cores, while there are" + " " + (maxCpu + 1) + " CPU cores in the system. This may lead to under-utilization of the" +