Skip to content

Commit 78b08cd

Browse files
authored
Merge pull request #262 from sxci/cancell
fix upload cancel logic to avoid retry after cancel signal is triggered
2 parents 08391ff + 5909a58 commit 78b08cd

File tree

6 files changed

+22
-25
lines changed

6 files changed

+22
-25
lines changed

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,10 @@
77
import com.qiniu.android.storage.UpToken;
88
import com.qiniu.android.utils.UrlSafeBase64;
99

10-
import org.json.JSONArray;
1110
import org.json.JSONException;
1211
import org.json.JSONObject;
1312

1413
import java.net.URI;
15-
import java.net.URISyntaxException;
16-
import java.util.ArrayList;
17-
import java.util.HashMap;
18-
import java.util.List;
1914
import java.util.Map;
2015
import java.util.concurrent.ConcurrentHashMap;
2116

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import org.json.JSONException;
55
import org.json.JSONObject;
66

7-
import java.net.URI;
87
import java.util.ArrayList;
98
import java.util.HashMap;
109
import java.util.List;

library/src/main/java/com/qiniu/android/http/ResponseInfo.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,10 @@ public boolean needSwitchServer() {
194194
}
195195

196196
public boolean needRetry() {
197-
return !isCancelled() && (needSwitchServer() || statusCode == 406
198-
|| (statusCode == 200 && error != null));
197+
return !isCancelled() && (
198+
needSwitchServer() || statusCode == 406 ||
199+
(statusCode == 200 && error != null) || (isNotQiniu() && !upToken.hasReturnUrl())
200+
);
199201
}
200202

201203
public boolean isNotQiniu() {

library/src/main/java/com/qiniu/android/storage/Configuration.java

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

33

44
import com.qiniu.android.common.AutoZone;
5-
import com.qiniu.android.common.FixedZone;
65
import com.qiniu.android.common.Zone;
76
import com.qiniu.android.dns.DnsManager;
87
import com.qiniu.android.dns.IResolver;

library/src/main/java/com/qiniu/android/storage/FormUploader.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
import java.io.File;
1717
import java.io.IOException;
18-
import java.net.URI;
1918

2019
/**
2120
* 表单上传
@@ -124,10 +123,7 @@ public void complete(ResponseInfo info, JSONObject response) {
124123
if (info.isOK()) {
125124
options.progressHandler.progress(key, 1.0);
126125
completionHandler.complete(key, info, response);
127-
} else if (options.cancellationSignal.isCancelled()) {
128-
ResponseInfo i = ResponseInfo.cancelled(token);
129-
completionHandler.complete(key, i, null);
130-
} else if (info.needRetry() || (info.isNotQiniu() && !token.hasReturnUrl())) {
126+
} else if (info.needRetry()) {
131127
final String upHostRetry = config.zone.upHost(token.token, config.useHttps, upHost);
132128
Log.d("Qiniu.FormUploader", "retry upload first time use up host " + upHostRetry);
133129
CompletionHandler retried = new CompletionHandler() {
@@ -136,15 +132,15 @@ public void complete(ResponseInfo info, JSONObject response) {
136132
if (info.isOK()) {
137133
options.progressHandler.progress(key, 1.0);
138134
completionHandler.complete(key, info, response);
139-
} else if (info.needRetry() || (info.isNotQiniu() && !token.hasReturnUrl())) {
135+
} else if (info.needRetry()) {
140136
final String upHostRetry2 = config.zone.upHost(token.token, config.useHttps, upHostRetry);
141137
Log.d("Qiniu.FormUploader", "retry upload second time use up host " + upHostRetry2);
142138
CompletionHandler retried2 = new CompletionHandler() {
143139
@Override
144140
public void complete(ResponseInfo info2, JSONObject response2) {
145141
if (info2.isOK()) {
146142
options.progressHandler.progress(key, 1.0);
147-
} else if (info2.needRetry() || (info2.isNotQiniu() && !token.hasReturnUrl())) {
143+
} else if (info2.needRetry()) {
148144
config.zone.frozenDomain(upHostRetry2);
149145
}
150146
completionHandler.complete(key, info2, response2);
@@ -256,7 +252,7 @@ private static ResponseInfo syncUpload0(Client client, Configuration config, byt
256252
}
257253

258254
//retry for the first time
259-
if (info.needRetry() || (info.isNotQiniu() && !token.hasReturnUrl())) {
255+
if (info.needRetry()) {
260256
if (info.isNetworkBroken() && !AndroidNetwork.isNetWorkReady()) {
261257
options.netReadyHandler.waitReady();
262258
if (!AndroidNetwork.isNetWorkReady()) {
@@ -269,7 +265,7 @@ private static ResponseInfo syncUpload0(Client client, Configuration config, byt
269265
Log.d("Qiniu.FormUploader", "sync upload retry first time use up host " + upHostRetry);
270266
info = client.syncMultipartPost(upHostRetry, args, token);
271267

272-
if (info.needRetry() || (info.isNotQiniu() && !token.hasReturnUrl())) {
268+
if (info.needRetry()) {
273269
if (info.isNetworkBroken() && !AndroidNetwork.isNetWorkReady()) {
274270
options.netReadyHandler.waitReady();
275271
if (!AndroidNetwork.isNetWorkReady()) {
@@ -280,7 +276,7 @@ private static ResponseInfo syncUpload0(Client client, Configuration config, byt
280276
String upHostRetry2 = config.zone.upHost(token.token, config.useHttps, upHostRetry);
281277
Log.d("Qiniu.FormUploader", "sync upload retry second time use up host " + upHostRetry2);
282278
info = client.syncMultipartPost(upHostRetry2, args, token);
283-
if (info.needRetry() || (info.isNotQiniu() && !token.hasReturnUrl())) {
279+
if (info.needRetry()) {
284280
config.zone.frozenDomain(upHostRetry2);
285281
}
286282
}

library/src/main/java/com/qiniu/android/storage/ResumeUploader.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,12 +231,13 @@ public void complete(ResponseInfo info, JSONObject response) {
231231
return;
232232
}
233233

234-
String upHostRetry = config.zone.upHost(token.token, config.useHttps, upHost);
235-
if (upHostRetry != null
236-
&& ((info.isNotQiniu() && !token.hasReturnUrl() || info.needRetry())
237-
&& retried < config.retryMax)) {
238-
nextTask(offset, retried + 1, upHostRetry);
239-
return;
234+
// mkfile ,允许多重试一次
235+
if (info.needRetry() && retried < config.retryMax + 1) {
236+
String upHostRetry = config.zone.upHost(token.token, config.useHttps, upHost);
237+
if (upHostRetry != null) {
238+
nextTask(offset, retried + 1, upHostRetry);
239+
return;
240+
}
240241
}
241242
completionHandler.complete(key, info, response);
242243
}
@@ -269,6 +270,11 @@ public void complete(ResponseInfo info, JSONObject response) {
269270
}
270271
}
271272

273+
if (info.isCancelled()) {
274+
completionHandler.complete(key, info, response);
275+
return;
276+
}
277+
272278
String upHostRetry = config.zone.upHost(token.token, config.useHttps, upHost);
273279
if (!isChunkOK(info, response)) {
274280
if (info.statusCode == 701 && retried < config.retryMax) {

0 commit comments

Comments
 (0)