zhanghua1199 发表于 2012-12-03 14:16

关于fastdfs连接池recv package size -1 != 10异常,求解答



敬爱的鱼大:
    解救我吧,,,这个异常总是出现的很诡异,我现在怀颖不是我客户端的问题。现在看异常,。

描述:
LoopUploadTest是我连接池上传测试类。我的文件上传操作类为:ImageServer(接口),ImageServerImpl负责实现。ConnectionPool是具体的保持 连接类。

里面有两个容器,busyConnectionPool用于存放正在使用的连接,idleConnectionPool用于存放空闲的连接,checkin和checkout负责将空闲和正在使用的连接转换。


里面有个drop方法。上传文件发生异常的时候,我会将连接关闭,并删除,用新的代替。里面还有一点特殊功能,就是当管理平台和trackerserver之间的关系 ,如果trackserver意外终止,但一会又好了,管理 平台不用重新启动,连接池可以重新建立。

整体思路就如上边,但现在老是报异常。当我在LoopUploadTest的间隔        Thread.sleep(1000*60);会时不时的报错,,,,间隔少了就不会,


求解答。。
求解救。。。。

源代码已经上边,望有空查看。项目在急。。。。

group1/M00/01/B2/wKgEdVC8MjXIvxqEAAAmlrYh34k3622898

java.io.IOException: recv package size -1 != 10
        at org.csource.fastdfs.ProtoCommon.recvHeader(ProtoCommon.java:206)
        at org.csource.fastdfs.ProtoCommon.recvPackage(ProtoCommon.java:242)
        at org.csource.fastdfs.TrackerClient.getStoreStorage(TrackerClient.java:143)
        at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1912)
        at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:702)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:207)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:225)
        at org.csource.fastdfs.StorageClient1.upload_file1(StorageClient1.java:112)
        at com.imageserver.ImageServerImpl.send(ImageServerImpl.java:79)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:62)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:55)
        at test.LoopUploadTest$1.run(LoopUploadTest.java:53)
2012-12-3 14:00:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool drop a connnection
2012-12-3 14:00:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool size:4
2012-12-3 14:00:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool add a connnection
2012-12-3 14:00:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool size:5
java.io.IOException: recv package size -1 != 10
        at org.csource.fastdfs.ProtoCommon.recvHeader(ProtoCommon.java:206)
        at org.csource.fastdfs.ProtoCommon.recvPackage(ProtoCommon.java:242)
        at org.csource.fastdfs.TrackerClient.getStoreStorage(TrackerClient.java:143)
        at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1912)
        at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:702)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:207)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:225)
        at org.csource.fastdfs.StorageClient1.upload_file1(StorageClient1.java:112)
        at com.imageserver.ImageServerImpl.send(ImageServerImpl.java:79)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:62)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:55)
        at test.LoopUploadTest$1.run(LoopUploadTest.java:53)

java.io.IOException: recv package size -1 != 10
        at org.csource.fastdfs.ProtoCommon.recvHeader(ProtoCommon.java:206)
        at org.csource.fastdfs.ProtoCommon.recvPackage(ProtoCommon.java:242)
        at org.csource.fastdfs.TrackerClient.getStoreStorage(TrackerClient.java:143)
        at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1912)
        at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:702)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:207)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:225)
        at org.csource.fastdfs.StorageClient1.upload_file1(StorageClient1.java:112)
        at com.imageserver.ImageServerImpl.send(ImageServerImpl.java:79)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:62)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:55)
        at test.LoopUploadTest$1.run(LoopUploadTest.java:53)
2012-12-3 14:01:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool drop a connnection
2012-12-3 14:01:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool size:4
2012-12-3 14:01:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool add a connnection
2012-12-3 14:01:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool size:5
java.io.IOException: recv package size -1 != 10
        at org.csource.fastdfs.ProtoCommon.recvHeader(ProtoCommon.java:206)
        at org.csource.fastdfs.ProtoCommon.recvPackage(ProtoCommon.java:242)
        at org.csource.fastdfs.TrackerClient.getStoreStorage(TrackerClient.java:143)
        at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1912)
        at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:702)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:207)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:225)
        at org.csource.fastdfs.StorageClient1.upload_file1(StorageClient1.java:112)
        at com.imageserver.ImageServerImpl.send(ImageServerImpl.java:79)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:62)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:55)
        at test.LoopUploadTest$1.run(LoopUploadTest.java:53)

java.io.IOException: recv package size -1 != 10
        at org.csource.fastdfs.ProtoCommon.recvHeader(ProtoCommon.java:206)
        at org.csource.fastdfs.ProtoCommon.recvPackage(ProtoCommon.java:242)
        at org.csource.fastdfs.TrackerClient.getStoreStorage(TrackerClient.java:143)
        at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1912)
        at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:702)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:207)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:225)
        at org.csource.fastdfs.StorageClient1.upload_file1(StorageClient1.java:112)
        at com.imageserver.ImageServerImpl.send(ImageServerImpl.java:79)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:62)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:55)
        at test.LoopUploadTest$1.run(LoopUploadTest.java:53)
2012-12-3 14:02:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool drop a connnection
2012-12-3 14:02:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool size:4
2012-12-3 14:02:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool add a connnection
2012-12-3 14:02:48 com.imageserver.pool.ImageServerPoolSysout warn
警告: ImageServerPool size:5
java.io.IOException: recv package size -1 != 10
        at org.csource.fastdfs.ProtoCommon.recvHeader(ProtoCommon.java:206)
        at org.csource.fastdfs.ProtoCommon.recvPackage(ProtoCommon.java:242)
        at org.csource.fastdfs.TrackerClient.getStoreStorage(TrackerClient.java:143)
        at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1912)
        at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:702)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:207)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:225)
        at org.csource.fastdfs.StorageClient1.upload_file1(StorageClient1.java:112)
        at com.imageserver.ImageServerImpl.send(ImageServerImpl.java:79)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:62)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:55)
        at test.LoopUploadTest$1.run(LoopUploadTest.java:53)

group1/M00/01/B2/wKgEdVC8MyXHWVyUAAAmlrYh34k9827938

group1/M00/01/B2/wKgEdVC8M2GlPtJ6AAAmlrYh34k4039707

java.io.IOException: recv package size -1 != 10
        at org.csource.fastdfs.ProtoCommon.recvHeader(ProtoCommon.java:206)
        at org.csource.fastdfs.ProtoCommon.recvPackage(ProtoCommon.java:242)
        at org.csource.fastdfs.TrackerClient.getStoreStorage(TrackerClient.java:143)
        at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1912)
        at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:702)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:207)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:225)
        at org.csource.fastdfs.StorageClient1.upload_file1(StorageClient1.java:112)
        at com.imageserver.ImageServerImpl.send(ImageServerImpl.java:79)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:62)
        at com.imageserver.ImageServerImpl.uploadFile(ImageServerImpl.java:55)
        at test.LoopUploadTest$1.run(LoopUploadTest.java:53)

zhanghua1199 发表于 2012-12-03 15:05

真的很怪。我如果在申请和个trackerserver的连接,就用每个连接都上传一次图片,这样都不会报错,,,但就是用几个不用,就报错,望楼主给答复,在线等。

zhanghua1199 发表于 2012-12-03 15:12

真的很怪。我如果在申请和个trackerserver的连接,就用每个连接都上传一次图片,这样都不会报错。。。往后,可以拿出任意一个连接去上传了,也不用都拿出来去上传了。,,为什么

zhanghua1199 发表于 2012-12-03 15:47

# network timeout in seconds
network_timeout=60



我了个去。。。。。。。。。。。。。。。。。。。。。。。。。。。。

问一下,这个可以禁用吗

happy_fish100 发表于 2012-12-03 17:26

zhanghua1199 发表于 2012-12-03 15:47 static/image/common/back.gif
# network timeout in seconds
network_timeout=60



问题不是出在这里。
你建立连接后,需要发送一次请求,否则超过network_timeout后会被server端踢掉。
建立连接后,可以发送一个ACTIVE TEST请求。这样就能和server端保持长连接了。

zhanghua1199 发表于 2012-12-03 17:30

回复 5# happy_fish100


怎么发,active test



    trackerserver.什么方法

happy_fish100 发表于 2012-12-03 17:41

回复 6# zhanghua1199

java API:
org.csource.fastdfs.ProtoCommon
public static boolean activeTest(java.net.Socket sock)

survivorQT 发表于 2016-03-21 21:48

请问,关于java.io.IOException:recv package szae -1!=10的问题是如何解决的啊?
页: [1]
查看完整版本: 关于fastdfs连接池recv package size -1 != 10异常,求解答