Skip to content

Commit cb68920

Browse files
authored
Merge pull request #181 from iExecBlockchainComputing/patch
Fix NPE problem when requesting replicates
2 parents f2282a0 + d2b916b commit cb68920

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

src/main/java/com/iexec/worker/feign/CustomFeignClient.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.springframework.stereotype.Service;
1818
import org.web3j.crypto.ECKeyPair;
1919

20+
import java.util.ArrayList;
2021
import java.util.Collections;
2122
import java.util.List;
2223
import java.util.Optional;
@@ -107,19 +108,21 @@ public void registerWorker(WorkerConfigurationModel model) {
107108
}
108109

109110
public List<InterruptedReplicateModel> getInterruptedReplicates(long lastAvailableBlockNumber) {
111+
List<InterruptedReplicateModel> interruptedReplicates = new ArrayList<>();
112+
110113
try {
111-
return replicateClient.getInterruptedReplicates(lastAvailableBlockNumber, getToken());
114+
interruptedReplicates = replicateClient.getInterruptedReplicates(lastAvailableBlockNumber, getToken());
112115
} catch (FeignException e) {
113-
if (e.status() == 0) {
114-
log.error("Failed to getInterruptedReplicates, will retry [instance:{}]", coreURL);
115-
sleep();
116-
return getInterruptedReplicates(lastAvailableBlockNumber);
117-
} else if (HttpStatus.valueOf(e.status()).equals(HttpStatus.UNAUTHORIZED)) {
116+
if (e.status() == HttpStatus.UNAUTHORIZED.value()) {
118117
generateNewToken();
119-
return getInterruptedReplicates(lastAvailableBlockNumber);
118+
interruptedReplicates = replicateClient.getInterruptedReplicates(lastAvailableBlockNumber, getToken());
119+
} else {
120+
log.error("Failed to get interrupted replicates [instance:{}]", coreURL);
121+
e.printStackTrace();
120122
}
121123
}
122-
return null;
124+
125+
return interruptedReplicates;
123126
}
124127

125128
public List<String> getTasksInProgress() {
@@ -139,17 +142,21 @@ public List<String> getTasksInProgress() {
139142
}
140143

141144
public Optional<ContributionAuthorization> getAvailableReplicate(long lastAvailableBlockNumber) {
145+
ContributionAuthorization contributionAuth = null;
146+
142147
try {
143-
return Optional.ofNullable(replicateClient.getAvailableReplicate(lastAvailableBlockNumber, getToken()));
148+
contributionAuth = replicateClient.getAvailableReplicate(lastAvailableBlockNumber, getToken());
144149
} catch (FeignException e) {
145-
if (e.status() == 0) {
146-
log.error("Failed to getAvailableReplicate [instance:{}]", coreURL);
147-
} else if (HttpStatus.valueOf(e.status()).equals(HttpStatus.UNAUTHORIZED)) {
150+
if (e.status() == HttpStatus.UNAUTHORIZED.value()) {
148151
generateNewToken();
149-
return Optional.of(replicateClient.getAvailableReplicate(lastAvailableBlockNumber, getToken()));
152+
contributionAuth = replicateClient.getAvailableReplicate(lastAvailableBlockNumber, getToken());
153+
} else {
154+
log.error("Failed to get an available replicate [instance:{}]", coreURL);
155+
e.printStackTrace();
150156
}
151157
}
152-
return Optional.empty();
158+
159+
return contributionAuth == null ? Optional.empty() : Optional.of(contributionAuth);
153160
}
154161

155162
public void updateReplicateStatus(String chainTaskId, ReplicateStatus status) {

0 commit comments

Comments
 (0)