- 論壇徽章:
- 0
|
Fastdfs 版本 4.0.6
使用Fastdfs Java api 先通過(guò) TrackerListGroupsHandler 獲取組信息, 再通過(guò) TrackerListStoragesHandler 遍歷獲取每個(gè)組 StorageState 信息.
在通過(guò)api 獲取每個(gè)組 StorageState 信息時(shí), 有一定概率 tracker 會(huì)掛掉. 如果重復(fù)嘗試超過(guò)5次, 幾乎必然會(huì)掛.
java代碼如下. 請(qǐng)問(wèn)各位有知道原因的嗎?
public class FastdfsClient implements Runnable{
public static void main(String[] args) throws IOException {
// for (int i = 0; i < 1; i++) {
// Thread thread = new Thread(new FastdfsClient());
// thread.run();
// }
FastdfsClient client = new FastdfsClient();
client.run();
}
@Override
public void run() {
Socket socket = null;
try {
socket = new Socket("10.1.1.1", 22122);
TrackerListGroupsHandler trackerListGroupsHandler =
new TrackerListGroupsHandler(Charset.defaultCharset());
trackerListGroupsHandler.send(socket);
System.out.println("節(jié)點(diǎn)名\t可讀狀態(tài)\t總空間\t剩余空間\tip\t已上傳\t剩余可上傳\t實(shí)際可用");
if (trackerListGroupsHandler.receive(socket)) {
GroupState[] groupStates = trackerListGroupsHandler.getResult();
for (GroupState state : groupStates) {
System.out.println(state.getGroupName() + "\t"
+ Boolean.valueOf(state.getActiveCount() > 0).toString() + "\t"
+ state.getTotalMB() + "\t"
+ state.getFreeMB() + "\t");
TrackerListStoragesHandler trackerListStoragesHandler =
new TrackerListStoragesHandler(Charset.defaultCharset(), state.getGroupName(), null);
trackerListStoragesHandler.send(socket);
// try {
// Thread.sleep(300);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
if (trackerListStoragesHandler.receive(socket)) {
for (StorageState storageState : trackerListStoragesHandler.getResult()) {
System.out.println("\t\t\t\t"
+ storageState.getIpAddr() + "\t"
+ storageState.getTotalUploadBytes()/(1024*1024) + "\t"
+ storageState.getFreeMB() + "\t");
}
}
}
} else {
System.out.println("failed");
}
} catch (IOException e){
e.printStackTrace();
} finally {
if (socket != null){
if(!socket.isClosed())
try {
socket.close();
} catch (IOException e){
e.printStackTrace();
}
}
}
}
}
|
|