Skip to content

Commit 589802c

Browse files
author
jordanqin
committed
update qcloud sdk to 5.9.36
1 parent fab2f9d commit 589802c

File tree

55 files changed

+694
-233
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+694
-233
lines changed

QCloudCosXml/cos-android-base/build.gradle

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ android {
66
minSdkVersion 15
77
targetSdkVersion 28
88

9-
versionCode 50933
10-
versionName '5.9.33'
9+
versionCode 50936
10+
versionName '5.9.34'
1111

1212
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
1313

@@ -70,7 +70,7 @@ dependencies {
7070

7171
api project(':foundation')
7272
api project(':qcloud-track')
73-
api project(':network-sonar')
73+
compileOnly project(':network-sonar')
7474
}
7575

7676
project.extensions.add('artifactId', 'qcloud-cos-android-base')
@@ -79,6 +79,20 @@ project.extensions.add('archiveFilePath', 'outputs/aar/qcloud-cos-android-base-r
7979

8080
apply from: '../../publishMavenCentral.gradle'
8181

82+
//发布本地repo
83+
apply plugin: 'maven'
84+
uploadArchives {
85+
repositories.mavenDeployer {
86+
pom.project {
87+
groupId 'com.qcloud.cos'
88+
artifactId 'qcloud-cos-android-base'
89+
version android.defaultConfig.versionName
90+
packaging 'aar'
91+
}
92+
repository(url: uri("${rootProject.projectDir}/repo"))
93+
}
94+
}
95+
8296
static String quotWrapper(key) {
8397
if (key == null) {
8498
return "\"\""

QCloudCosXml/cos-android-base/src/main/java/com/tencent/cos/xml/CosTrackService.java

Lines changed: 29 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -46,33 +46,20 @@
4646
import com.tencent.qcloud.core.http.HttpRequest;
4747
import com.tencent.qcloud.core.http.HttpTask;
4848
import com.tencent.qcloud.core.http.HttpTaskMetrics;
49-
import com.tencent.qcloud.network.sonar.NetworkSonar;
50-
import com.tencent.qcloud.network.sonar.NetworkSonarCallback;
51-
import com.tencent.qcloud.network.sonar.SonarRequest;
52-
import com.tencent.qcloud.network.sonar.SonarResult;
53-
import com.tencent.qcloud.network.sonar.SonarType;
54-
import com.tencent.qcloud.network.sonar.dns.DnsResult;
55-
import com.tencent.qcloud.network.sonar.ping.PingResult;
56-
import com.tencent.qcloud.network.sonar.traceroute.TracerouteResult;
5749
import com.tencent.qcloud.track.Constants;
5850
import com.tencent.qcloud.track.QCloudTrackService;
5951
import com.tencent.qcloud.track.cls.ClsLifecycleCredentialProvider;
6052
import com.tencent.qcloud.track.service.BeaconTrackService;
6153
import com.tencent.qcloud.track.service.ClsTrackService;
6254

6355
import java.io.IOException;
64-
import java.net.InetAddress;
65-
import java.util.ArrayList;
6656
import java.util.Collections;
6757
import java.util.HashMap;
6858
import java.util.LinkedList;
6959
import java.util.List;
7060
import java.util.Locale;
7161
import java.util.Map;
7262
import java.util.Random;
73-
import java.util.concurrent.Executors;
74-
import java.util.concurrent.ScheduledExecutorService;
75-
import java.util.concurrent.TimeUnit;
7663
import java.util.regex.Matcher;
7764
import java.util.regex.Pattern;
7865

@@ -92,9 +79,9 @@ public class CosTrackService {
9279
// 网络事件
9380
private static final String EVENT_CODE_TRACK_COS_SDK_HTTP = "qcloud_track_cos_sdk_http";
9481
// 常规网络探测事件
95-
private static final String EVENT_CODE_TRACK_COS_SDK_SONAR = "qcloud_track_cos_sdk_sonar";
82+
public static final String EVENT_CODE_TRACK_COS_SDK_SONAR = "qcloud_track_cos_sdk_sonar";
9683
// 错误网络探测事件
97-
private static final String EVENT_CODE_TRACK_COS_SDK_SONAR_FAILURE = "qcloud_track_cos_sdk_sonar_failure";
84+
public static final String EVENT_CODE_TRACK_COS_SDK_SONAR_FAILURE = "qcloud_track_cos_sdk_sonar_failure";
9885
private static final String EVENT_CODE_NEW_TRANSFER = "qcloud_track_cos_sdk_transfer";
9986

10087
private static final String EVENT_PARAMS_SUCCESS = "Success";
@@ -105,12 +92,19 @@ public class CosTrackService {
10592
private static CosTrackService instance;
10693
//上报桥接来源
10794
private String bridge;
108-
private Context applicationContext;
10995
private boolean isCloseReport;
96+
public boolean isCloseReport() {
97+
return isCloseReport;
98+
}
11099

111-
// 常规探测
112-
private final ScheduledExecutorService sonarScheduler = Executors.newScheduledThreadPool(1);
113-
private final SonarHostsRandomQueue sonarHosts = new SonarHostsRandomQueue(3);
100+
private final CosTrackSonarService sonarService = new CosTrackSonarService();
101+
public CosTrackSonarService getSonarService() {
102+
return sonarService;
103+
}
104+
private final CosTrackService.SonarHostsRandomQueue sonarHosts = new CosTrackService.SonarHostsRandomQueue(3);
105+
public SonarHostsRandomQueue getSonarHosts() {
106+
return sonarHosts;
107+
}
114108

115109
private CosTrackService() {
116110
}
@@ -123,7 +117,6 @@ public static void init(Context applicationContext, boolean isCloseReport, Strin
123117
if (instance == null) {
124118
instance = new CosTrackService();
125119
instance.bridge = bridge;
126-
instance.applicationContext = applicationContext;
127120
instance.isCloseReport = isCloseReport;
128121
if (BeaconTrackService.isInclude()) {
129122
// 添加全部上报灯塔上报器
@@ -152,7 +145,8 @@ public static void init(Context applicationContext, boolean isCloseReport, Strin
152145
QCloudTrackService.getInstance().setIsCloseReport(isCloseReport);
153146

154147
CosTrackService.getInstance().reportSdkStart();
155-
CosTrackService.getInstance().periodicSonar();
148+
CosTrackService.getInstance().getSonarService().setContext(applicationContext);
149+
CosTrackService.getInstance().getSonarService().periodicSonar();
156150

157151
// if (BeaconTrackService.isInclude()) {
158152
// // 获取灯塔云控配置,决定是否要initBeacon
@@ -316,121 +310,6 @@ public void reportHttpMetrics(CosXmlRequest request) {
316310
}
317311
}
318312

319-
private void periodicSonar(){
320-
final Runnable sonar = () -> {
321-
SonarHost sonarHost = sonarHosts.get();
322-
if(sonarHost == null || sonarHost.getHost() == null) return;
323-
324-
long diffInMinutes = (System.currentTimeMillis() - sonarHosts.getSonarHostsAddTimestamp()) / (1000 * 60);
325-
// 检查是否超过了15分钟
326-
if (diffInMinutes > 15) return;
327-
328-
Map<String, String> extra = new HashMap<>();
329-
extra.put("region", sonarHost.getRegion());
330-
extra.put("bucket", sonarHost.getBucket());
331-
sonar(EVENT_CODE_TRACK_COS_SDK_SONAR, sonarHost.getHost(), extra, true);
332-
};
333-
// 探测策略:起始延迟3分钟,每10分钟执行一次
334-
sonarScheduler.scheduleWithFixedDelay(sonar, 3, 10, TimeUnit.MINUTES);
335-
}
336-
337-
338-
public void failSonar(String host, String region, String bucket, String clientTraceId){
339-
if(host == null) return;
340-
Map<String, String> extra = new HashMap<>();
341-
extra.put("region", region);
342-
extra.put("bucket", bucket);
343-
extra.put("client_trace_id", clientTraceId);
344-
sonar(EVENT_CODE_TRACK_COS_SDK_SONAR_FAILURE, host, extra, false);
345-
}
346-
347-
private void sonar(String eventCode, String host, Map<String, String> extra, boolean periodic){
348-
// 不做无谓的探测
349-
if (instance.isCloseReport || !BeaconTrackService.isInclude()) {
350-
return;
351-
}
352-
353-
try {
354-
Map<String, String> params = new HashMap<>(extra);
355-
params.put("host", host);
356-
357-
SonarRequest sonarRequest;
358-
List<SonarType> types = new ArrayList<>();
359-
if(periodic){
360-
types.add(SonarType.PING);
361-
long startTime = System.currentTimeMillis();
362-
InetAddress address = InetAddress.getByName(host);
363-
String dnsIp = address.getHostAddress();
364-
params.put("dns_ip", dnsIp);
365-
params.put("dns_lookupTime", String.valueOf(System.currentTimeMillis() - startTime));
366-
sonarRequest = new SonarRequest(host, dnsIp);
367-
} else {
368-
types.add(SonarType.DNS);
369-
types.add(SonarType.PING);
370-
types.add(SonarType.TRACEROUTE);
371-
sonarRequest = new SonarRequest(host);
372-
}
373-
NetworkSonar.sonar(applicationContext, sonarRequest, types, new NetworkSonarCallback() {
374-
@Override
375-
public void onSuccess(SonarResult result) {
376-
}
377-
378-
@Override
379-
public void onFail(SonarResult result) {
380-
}
381-
382-
@Override
383-
public void onFinish(List<SonarResult> results) {
384-
if(results != null && !results.isEmpty()){
385-
for(SonarResult sonarResult : results){
386-
if(sonarResult == null || !sonarResult.isSuccess() || sonarResult.getResult() == null) continue;
387-
switch (sonarResult.getType()) {
388-
case DNS:
389-
DnsResult dnsResult = (DnsResult) sonarResult.getResult();
390-
params.put("dns_ip", dnsResult.ip);
391-
params.put("dns_lookupTime", String.valueOf(dnsResult.lookupTime));
392-
params.put("dns_a", dnsResult.a);
393-
params.put("dns_cname", dnsResult.cname);
394-
params.put("dns_result", dnsResult.response);
395-
break;
396-
case PING:
397-
PingResult pingResult = (PingResult) sonarResult.getResult();
398-
params.put("ping_ip", pingResult.ip);
399-
params.put("ping_size", String.valueOf(pingResult.size));
400-
params.put("ping_interval", String.valueOf(pingResult.interval));
401-
params.put("ping_count", String.valueOf(pingResult.count));
402-
params.put("ping_loss", String.valueOf(pingResult.getLoss()));
403-
params.put("ping_response_num", String.valueOf(pingResult.getResponseNum()));
404-
params.put("ping_avg", String.valueOf(pingResult.avg));
405-
params.put("ping_max", String.valueOf(pingResult.max));
406-
params.put("ping_min", String.valueOf(pingResult.min));
407-
params.put("ping_stddev", String.valueOf(pingResult.stddev));
408-
break;
409-
case TRACEROUTE:
410-
TracerouteResult tracerouteResult = (TracerouteResult) sonarResult.getResult();
411-
params.put("traceroute_ip", tracerouteResult.getTargetIp());
412-
params.put("traceroute_status", tracerouteResult.getCommandStatus().getName());
413-
params.put("traceroute_hop_count", String.valueOf(tracerouteResult.getHopCount()));
414-
params.put("traceroute_total_delay", String.valueOf(tracerouteResult.getTotalDelay()));
415-
params.put("traceroute_avg_loss_rate", String.valueOf(tracerouteResult.getLossRate()));
416-
params.put("traceroute_nodes", tracerouteResult.getNodeResultsString());
417-
break;
418-
}
419-
}
420-
// 至少探测到一种网络情况才上报
421-
if(params.containsKey("dns_ip") || params.containsKey("ping_ip") || params.containsKey("traceroute_ip")){
422-
QCloudTrackService.getInstance().report(eventCode, params);
423-
}
424-
}
425-
}
426-
});
427-
} catch (Exception e) {
428-
if(IS_DEBUG) {
429-
e.printStackTrace();
430-
}
431-
}
432-
}
433-
434313
/**
435314
* 上报base_service事件 成功
436315
*
@@ -638,12 +517,14 @@ private CosXmlClientException reportClientException(CosXmlRequest request, QClou
638517
// 客户端网络异常sonar
639518
if(returnClientException.exception.errorCode == ClientErrorCode.POOR_NETWORK.getCode() ||
640519
returnClientException.exception.errorCode == ClientErrorCode.IO_ERROR.getCode()){
641-
failSonar(
642-
params.get("host"),
643-
params.get("region"),
644-
params.get("bucket"),
645-
request.getClientTraceId()
646-
);
520+
if(sonarService != null){
521+
sonarService.failSonar(
522+
params.get("host"),
523+
params.get("region"),
524+
params.get("bucket"),
525+
request.getClientTraceId()
526+
);
527+
}
647528
}
648529
}
649530
} catch (Exception e) {
@@ -688,12 +569,14 @@ private CosXmlServiceException reportServiceException(CosXmlRequest request, QCl
688569
// 服务端网络异常sonar
689570
if(returnServiceException.exception != null && ("RequestTimeout".equals(returnServiceException.exception.getErrorCode()) ||
690571
"UserNetworkTooSlow".equals(returnServiceException.exception.getErrorCode()))){
691-
failSonar(
572+
if(sonarService != null){
573+
sonarService.failSonar(
692574
params.get("host"),
693575
params.get("region"),
694576
params.get("bucket"),
695577
request.getClientTraceId()
696-
);
578+
);
579+
}
697580
}
698581
}
699582
} catch (Exception e){
@@ -967,7 +850,7 @@ private boolean isReport(CosXmlClientException e) {
967850
return !notReport;
968851
}
969852

970-
private static class SonarHostsRandomQueue {
853+
public static class SonarHostsRandomQueue {
971854
private final List<SonarHost> list;
972855
private final int maxSize;
973856
private final Random random;
@@ -1003,7 +886,7 @@ public SonarHost get() {
1003886
}
1004887
}
1005888

1006-
private static class SonarHost {
889+
public static class SonarHost {
1007890
private final String host;
1008891
private final String region;
1009892
private final String bucket;

0 commit comments

Comments
 (0)