in src/main/java/com/aliyun/openservices/log/Client.java [1402:1443]
public PullLogsResponse pullLogs(PullLogsRequest request) throws LogException {
CodingUtils.assertParameterNotNull(request, "request");
String project = request.GetProject();
String logStore = request.getLogStore();
CodingUtils.validateLogstore(logStore);
Map<String, String> headers = GetCommonHeadPara(project);
String resourceUri = "/logstores/" + logStore + "/shards/" + request.getShardId();
CompressType compressType = request.getCompressType();
if (compressType == null || compressType == CompressType.NONE) {
compressType = CompressType.LZ4;
}
headers.put(Consts.CONST_ACCEPT_ENCODING, compressType.toString());
headers.put(Consts.CONST_HTTP_ACCEPT, Consts.CONST_PROTO_BUF);
Map<String, String> urlParameter = request.GetAllParams();
for (int i = 0; i < 2; i++) {
String serverIp = this.realServerIP;
ClientConnectionStatus connectionStatus = null;
if (useDirectMode) {
connectionStatus = GetShardConnectionStatus(project, logStore, request.getShardId());
serverIp = connectionStatus.GetIpAddress();
}
try {
ResponseMessage response = SendData(project, HttpMethod.GET, resourceUri, urlParameter, headers, new byte[0], null, serverIp);
Map<String, String> resHeaders = response.getHeaders();
PullLogsResponse plr = new PullLogsResponse(resHeaders, response.GetRawBody());
if (connectionStatus != null) {
connectionStatus.UpdateLastUsedTime(System.nanoTime());
connectionStatus.AddPullDataSize(plr.getRawSize());
}
return plr;
} catch (LogException ex) {
if (i == 1 || (ex.getRequestId() != null && !ex.getRequestId().isEmpty()) || getClientConfiguration().getRetryDisabled()) {
throw ex;
}
if (connectionStatus != null) {
connectionStatus.DisableConnection();
}
}
}
return null;
}