FastDFS client并发上传异常 recv cmd: 0 is not correct, expect cmd: 100

描述:在调用同一个接口,并发上传文件的时候出现异常。

java.io.IOException: recv cmd: 0 is not correct, expect cmd: 100
    at org.csource.fastdfs.ProtoCommon.recvHeader(ProtoCommon.java:173)
    at org.csource.fastdfs.ProtoCommon.recvPackage(ProtoCommon.java:201)
    at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:714)
    at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:162)
    at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:180)
    at org.csource.fastdfs.StorageClient1.upload_file1(StorageClient1.java:103)
    at com.xxx.school.util.FastDFSUtils.uploadFile(FastDFSUtils.java:113)
    at com.xxx.school.file.service.impl.FileServiceImpl.createOneFile(FileServiceImpl.java:100)
    at com.xxx.school.resource.controller.ResourceFileBockUpload.fileBockUpload(ResourceFileBockUpload.java:116)
    at sun.reflect.GeneratedMethodAccessor232.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)

原因: 有一个FastDFSUtil类,里面的trackerServer,storageServer,StorageClient1成员是共享的。

TrackerServer trackerServer = trackerClient.getConnection();
StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
StorageClient1 storageClient1 = new StorageClient1(trackerServer, storageServer);

解决方案:每次调用上传接口的时候重新获取下新连接

TrackerServer trackerServer = trackerClient.getConnection();
if (null == trackerServer) {
	return null;
}
StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
if (null == storageServer) {
	return null;
}
StorageClient1 storageClient1 = new StorageClient1(trackerServer, storageServer);
if (storageClient1 == null){
	return null;
}
String upload_file1 = storageClient1.upload_file1(buff, fileName.substring(fileName.lastIndexOf(".") + 1),
		nameValuePairs);

猜你喜欢

转载自blog.csdn.net/shan165310175/article/details/83409714
cmd