问题描述:
每次刚启动服务,如果没有直接使用,过一段时间,再调用上传文档服务,会报错,但是再次上传,就没事了,又正常了,报错信息如下:
java.io.IOException: recv package size -1 != 10
原因分析:
经查找资料发现和配置项network_timeout有关,如果客户端服务启动,成功链接到dfs服务器,如果在network_timeout时间内,dfs服务没有接收到任何请求信息,会把这个客户端踢掉!
解决方案:
初始化时通过activeTest发送消息,保证启动时dfs服务可以接受到消息,主要代码如下
ClientGlobal.initByTrackers(objectStorageConfig.getTrackerServers());
TrackerClient trackerClient = new TrackerClient(ClientGlobal.getG_tracker_group());
TrackerServer trackerServer = trackerClient.getConnection();
StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
StorageClient storageClient = new StorageClient1(trackerServer, storageServer);
ProtoCommon.activeTest(storageServer.getSocket());