zrlio / jNVMf

A NVMf library for Java
Apache License 2.0
28 stars 10 forks source link

if nvmeOF target does not exist, jNVMf will hand there instead report correct error then quit #22

Closed gwnet closed 4 years ago

gwnet commented 4 years ago
  1. make sure IP and RDMA network is OK. but does not setup nvme target. 2, run benchmark with below steps

then the application will hang at below code: at the endpoint.connect part. it will hang, never return.

FabricsConnectResponseCqe connect(long timeout, TimeUnit timeoutUnit) throws IOException { NativeBuffer buffer = new NativeByteBuffer( ByteBuffer.allocateDirect(RdmaCmRequestPrivateData.SIZE)); RdmaCmRequestPrivateData privateData = new RdmaCmRequestPrivateData(buffer); privateData.setQueueId(queueId); privateData.setRdmaQpReceiveQueueSize(submissionQueueSize); privateData.setRdmaQpSendQueueSize((short) (submissionQueueSize - 1)); this.endpoint.getConnParam().setPrivate_data(buffer.getAddress()); this.endpoint.getConnParam().setPrivate_data_len((byte) RdmaCmRequestPrivateData.SIZE); InetSocketAddress socketAddress = controller.getTransportId().getAddress(); try { //FIXME: rejected requests are not handled by DiSNI //FIXME: check for overflow endpoint.connect(socketAddress, (int)TimeUnit.MILLISECONDS.convert(timeout, timeoutUnit)); } catch (Exception exception) { throw new IOException(exception); }

Cadmin@ogden-dirt:/tmp/wayne/jNVMf> java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8089 -cp target/jnvmf-1.7-jar-with-dependencies.jar:target/jnvm1.7-tests.jar -Djnvmf.legacy=true com.ibm.jnvmf.utils.NvmfClientBenchmark -a 192.168.219.3 -p 4420 -g 4096 -i 3 -m RANDOM -n 10 -nqn nqn.2019-12.com.wayne:test -qd 1 -rw read -s 4096 -qs 64 -H -I Listening for transport dt_socket at address: 8089 Name:abc abc read 4096bytes with QD = 1, time[s] = 3, pattern = RANDOM, runs = 10 log4j:WARN No appenders could be found for logger (com.ibm.disni). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

PepperJo commented 4 years ago

It will after the timeout. Reduce the timeout if you want it to happen earlier. Otherwise if that does not work open a ticket in the Disni repository.

PepperJo commented 4 years ago

BTW you can set the timeout with Controller.connect there is an overload which allows you to set it: https://github.com/zrlio/jNVMf/blob/master/src/main/java/com/ibm/jnvmf/Nvme.java

gwnet commented 4 years ago

got it. thank you so much!~, timeout is Ok so far. I will see if we need fail immediately later. can you help raise ticket on libdisni?