Skip to content

Commit 01d5d24

Browse files
authored
Merge pull request #479 from YangSen-qn/optimize_system_dns
optimize system dns
2 parents 3837dae + af869ad commit 01d5d24

File tree

6 files changed

+63
-19
lines changed

6 files changed

+63
-19
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
#Changelog
2+
## 8.4.1(2022-01-07)
3+
* 优化 SystemDns 解析:异步开线程池。
4+
5+
26
## 8.4.0(2021-12-07)
37
* 优化:
48
* DNS 预解析支持 DoH (DNS over HTTPS)

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ https://github.com/qiniudemo/qiniu-lab-android
1515

1616
| Qiniu SDK 版本 | 最低 Android版本 | 依赖库版本 |
1717
|------------ |-----------------|------------------------|
18-
| 8.4.0 | Android 4.0+ | okhttp 4+ |
18+
| 8.4.* | Android 4.0+ | okhttp 4+ |
1919
| 8.3.2 | Android 4.0+ | okhttp 4+ |
2020
| 8.3.1 | Android 4.0+ | okhttp 4+ |
2121
| 8.3.0 | Android 5.0+ | okhttp 4+ |
@@ -33,7 +33,7 @@ https://github.com/qiniudemo/qiniu-lab-android
3333
| 7.0.7 | Android 2.2+ | android-async-http 1.4.8 |
3434

3535
### 注意
36-
* 推荐使用最新版:8.4.0
36+
* 推荐使用最新版:8.4.1
3737
* 7.6.2 ~ 8.3.2 AndroidNetwork.getMobileDbm()可以获取手机信号强度,需要如下权限(API>=18时生效)
3838
```
3939
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.qiniu.android;
2+
3+
import com.qiniu.android.http.dns.IDnsNetworkAddress;
4+
import com.qiniu.android.http.dns.SystemDns;
5+
import com.qiniu.android.utils.Utils;
6+
7+
import java.net.UnknownHostException;
8+
import java.util.List;
9+
10+
public class SystemDnsTest extends BaseTest {
11+
12+
public void testDnsLookup() {
13+
SystemDns dns = new SystemDns(5);
14+
try {
15+
List<IDnsNetworkAddress> result = dns.lookup("upload.qiniup.com");
16+
assertTrue("testDnsLookup fail:", result != null && result.size() > 0);
17+
} catch (UnknownHostException e) {
18+
e.printStackTrace();
19+
fail("testDnsLookup fail because:" + e.getMessage());
20+
}
21+
}
22+
23+
public void testDnsTimeout() {
24+
long start = Utils.currentSecondTimestamp();
25+
int timeout = 5;
26+
SystemDns dns = new SystemDns(timeout);
27+
try {
28+
List<IDnsNetworkAddress> result = dns.lookup("a.a.a.cn");
29+
assertTrue("testDnsTimeout fail:", result == null || result.size() == 0);
30+
} catch (UnknownHostException e) {
31+
e.printStackTrace();
32+
}
33+
long end = Utils.currentSecondTimestamp();
34+
assertTrue("testDnsTimeout fail because timeout to long", end <= (start + timeout + 1));
35+
}
36+
}

library/src/androidTest/java/com/qiniu/android/TestConfig.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,24 @@ public final class TestConfig {
1010
// TODO: 2020-05-09 bad token for testPutBytesWithFixedZoneUseBackupDomains
1111
// 华东上传凭证
1212
public static final String bucket_z0 = "kodo-phone-zone0-space";
13-
14-
public static final String token_z0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:EF8jJo2t8mDSXckLhdY5Za0WUJo=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTAtc3BhY2UiLCJkZWFkbGluZSI6MTYzOTgwNzI1OSwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
13+
public static final String token_z0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:OaOVs0Fx1YljeCSdE3bX7WXIlDE=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTAtc3BhY2UiLCJkZWFkbGluZSI6MTY0NjYzMzIzNSwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
1514
// 华北上传凭证
1615
public static final String bucket_z1 = "kodo-phone-zone1-space";
17-
public static final String token_z1 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:1GlC8sbSnAjXiCqJWLvuw1gvrqE=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTEtc3BhY2UiLCJkZWFkbGluZSI6MTYzOTgwNzI1OSwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
16+
public static final String token_z1 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:pz5RzDV5__H0wBtCZk_Eyhi1lzc=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTEtc3BhY2UiLCJkZWFkbGluZSI6MTY0NjYzMzIzNSwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
1817
// 华南上传凭证
1918
public static final String bucket_z2 = "kodo-phone-zone2-space";
20-
public static final String token_z2 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:_IjpE41xDBo9T-JcRTTrBNZelz8=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTItc3BhY2UiLCJkZWFkbGluZSI6MTYzOTgwNzI1OSwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
19+
public static final String token_z2 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:f-As7eQSb4bra9wIPD8NtZoLj-I=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTItc3BhY2UiLCJkZWFkbGluZSI6MTY0NjYzMzIzNSwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
2120
// 北美上传凭证
2221
public static final String bucket_na0 = "kodo-phone-zone-na0-space";
23-
public static final String token_na0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:WHOtfzLVKsg9yi9GTTO2ExB6Ol8=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1uYTAtc3BhY2UiLCJkZWFkbGluZSI6MTYzOTgwNzI1OSwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
22+
public static final String token_na0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:REXUSlE442Vg_J-1tS_JN08stN4=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1uYTAtc3BhY2UiLCJkZWFkbGluZSI6MTY0NjYzMzIzNSwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
2423
// 东南亚上传凭证
2524
public static final String bucket_as0 = "kodo-phone-zone-as0-space";
26-
public static final String token_as0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:rCq22VeKNE5jDD_jKlAMNed8Zsw=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1hczAtc3BhY2UiLCJkZWFkbGluZSI6MTYzOTgwNzI1OSwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
25+
public static final String token_as0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:KJ5_t8Uz06R7HnajX-aLdDVexdo=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1hczAtc3BhY2UiLCJkZWFkbGluZSI6MTY0NjYzMzIzNSwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
2726
// 雾存储华东一区
2827
public static final String bucket_fog_cn_east1 = "test-fog-cn-east-1";
29-
public static final String token_fog_cn_east1 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:3yI0DeUgEpm15Ky58-2qs8uBE5Q=:eyJzY29wZSI6InRlc3QtZm9nLWNuLWVhc3QtMSIsImRlYWRsaW5lIjoxNjM5ODA3MjU5LCAicmV0dXJuQm9keSI6IntcImNhbGxiYWNrVXJsXCI6XCJodHRwOlwvXC9jYWxsYmFjay5kZXYucWluaXUuaW9cIiwgXCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
30-
public static final String invalidBucketToken = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:GqCG7V8i0f05Nlmj2Xoj3UUs4wM=:eyJzY29wZSI6InpvbmVfaW52YWxpZCIsImRlYWRsaW5lIjoxNjM5ODA3MjU5LCAicmV0dXJuQm9keSI6IntcImNhbGxiYWNrVXJsXCI6XCJodHRwOlwvXC9jYWxsYmFjay5kZXYucWluaXUuaW9cIiwgXCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
28+
public static final String token_fog_cn_east1 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:JPPu4hG6dc9AMTBag4eAujK_ldI=:eyJzY29wZSI6InRlc3QtZm9nLWNuLWVhc3QtMSIsImRlYWRsaW5lIjoxNjQ2NjMzMjM1LCAicmV0dXJuQm9keSI6IntcImNhbGxiYWNrVXJsXCI6XCJodHRwOlwvXC9jYWxsYmFjay5kZXYucWluaXUuaW9cIiwgXCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
29+
public static final String invalidBucketToken = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:4y0ZaTdcqRcyMloKt_ujblr-WUA=:eyJzY29wZSI6InpvbmVfaW52YWxpZCIsImRlYWRsaW5lIjoxNjQ2NjMzMjM1LCAicmV0dXJuQm9keSI6IntcImNhbGxiYWNrVXJsXCI6XCJodHRwOlwvXC9jYWxsYmFjay5kZXYucWluaXUuaW9cIiwgXCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
30+
3131
// -----------
3232
public static final String ak = "bjtWBQXrcxgo7HWwlC_bgHg81j352_GhgBGZPeOW";
3333

library/src/main/java/com/qiniu/android/common/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
public final class Constants {
5-
public static final String VERSION = "8.4.0";
5+
public static final String VERSION = "8.4.1";
66

77
public static final String UTF_8 = "utf-8";
88
}

library/src/main/java/com/qiniu/android/http/dns/SystemDns.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@
99
import java.util.Date;
1010
import java.util.List;
1111
import java.util.concurrent.Callable;
12+
import java.util.concurrent.ExecutorService;
13+
import java.util.concurrent.Future;
1214
import java.util.concurrent.FutureTask;
15+
import java.util.concurrent.LinkedBlockingQueue;
16+
import java.util.concurrent.ThreadPoolExecutor;
1317
import java.util.concurrent.TimeUnit;
1418

1519
/**
@@ -18,6 +22,8 @@
1822
public class SystemDns implements Dns {
1923

2024
private int timeout = 10;
25+
private static final ExecutorService executor = new ThreadPoolExecutor(1, 3,
26+
60L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
2127

2228
public SystemDns() {
2329
}
@@ -31,14 +37,12 @@ public List<InetAddress> lookupInetAddress(final String hostname) throws Unknown
3137
throw new UnknownHostException("hostname is null");
3238
} else {
3339
try {
34-
FutureTask<List<InetAddress>> task = new FutureTask<>(
35-
new Callable<List<InetAddress>>() {
36-
@Override
37-
public List<InetAddress> call() throws Exception {
38-
return Arrays.asList(InetAddress.getAllByName(hostname));
39-
}
40-
});
41-
new Thread(task).start();
40+
Future<List<InetAddress>> task = executor.submit(new Callable<List<InetAddress>>() {
41+
@Override
42+
public List<InetAddress> call() throws Exception {
43+
return Arrays.asList(InetAddress.getAllByName(hostname));
44+
}
45+
});
4246
return task.get(timeout, TimeUnit.SECONDS);
4347
} catch (Exception var4) {
4448
UnknownHostException unknownHostException =

0 commit comments

Comments
 (0)