Skip to content

Commit a2a6d38

Browse files
author
shanshan.ning
committed
<fix>[zstack]: call interrupt after receiving InterruptedException
"InterruptedException" should not be ignored, call interrupt manually after receiving InterruptedException Related: ZSTAC-53781 Change-Id: I6d69707a6670747777746b6f6962646b77686876
1 parent 9b9eb2a commit a2a6d38

File tree

18 files changed

+34
-1
lines changed

18 files changed

+34
-1
lines changed

compute/src/main/java/org/zstack/compute/host/HostBase.java

+1
Original file line numberDiff line numberDiff line change
@@ -724,6 +724,7 @@ public void fail(ErrorCode errorCode) {
724724
try {
725725
TimeUnit.SECONDS.sleep(sleep);
726726
} catch (InterruptedException ignored) {
727+
Thread.currentThread().interrupt();
727728
}
728729
}
729730
}

console/src/main/java/org/zstack/console/ConsoleManagerImpl.java

+1
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ public void afterMigrateVm(VmInstanceInventory inv, String srcHostUuid) {
232232
}
233233
} catch (InterruptedException e) {
234234
logger.warn(e.getMessage(), e);
235+
Thread.currentThread().interrupt();
235236
}
236237
}
237238

core/src/main/java/org/zstack/core/cloudbus/CloudBusImpl2.java

+5
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ private void retry(Message msg) {
158158
TimeUnit.SECONDS.sleep(CloudBusGlobalProperty.RABBITMQ_RETRY_DELAY_ON_RETURN);
159159
} catch (InterruptedException e) {
160160
logger.warn(e.getMessage(), e);
161+
Thread.currentThread().interrupt();
161162
}
162163

163164
if (msg instanceof Event) {
@@ -213,6 +214,7 @@ Channel acquire() {
213214
DebugUtils.Assert(chan!=null, String.format("cannot get a channel after 10 minutes"));
214215
return chan;
215216
} catch (InterruptedException e) {
217+
Thread.currentThread().interrupt();
216218
throw new CloudRuntimeException(e);
217219
}
218220
}
@@ -477,6 +479,7 @@ private boolean recoverSend() throws IOException {
477479
TimeUnit.SECONDS.sleep(interval);
478480
} catch (InterruptedException e1) {
479481
logger.warn(e1.getMessage());
482+
Thread.currentThread().interrupt();
480483
}
481484

482485
try {
@@ -1833,6 +1836,7 @@ List<Message> getRequests() {
18331836
try {
18341837
e.wait(msg.getTimeout());
18351838
} catch (InterruptedException e1) {
1839+
Thread.currentThread().interrupt();
18361840
throw new CloudRuntimeException(e1);
18371841
}
18381842
}
@@ -1929,6 +1933,7 @@ List<Message> getRequests() {
19291933
try {
19301934
e.wait(minTimeout);
19311935
} catch (InterruptedException e1) {
1936+
Thread.currentThread().interrupt();
19321937
throw new CloudRuntimeException(e1);
19331938
}
19341939
}

core/src/main/java/org/zstack/core/db/DBSourceUtils.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public static boolean waitDBConnected(int retryTimes, int interval) {
4343
private static void sleep(int seconds) {
4444
try {
4545
TimeUnit.SECONDS.sleep(seconds);
46-
} catch (InterruptedException ignore) {}
46+
} catch (InterruptedException ignore) {
47+
Thread.currentThread().interrupt();
48+
}
4749
}
4850
}

core/src/main/java/org/zstack/core/retry/Retry.java

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public T run() {
8888
TimeUnit.SECONDS.sleep(interval);
8989
} catch (InterruptedException e) {
9090
logger.warn(e.getMessage(), e);
91+
Thread.currentThread().interrupt();
9192
}
9293

9394

core/src/main/java/org/zstack/core/salt/SaltRunner.java

+2
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ public void success() {
288288
try {
289289
TimeUnit.SECONDS.sleep(interval);
290290
} catch (InterruptedException e) {
291+
Thread.currentThread().interrupt();
291292
throw new CloudRuntimeException(e);
292293
}
293294
}
@@ -302,6 +303,7 @@ public void success() {
302303
} catch (Exception e) {
303304
logger.warn(String.format("failed to run salt state[%s] on system[%s], %s", stateName, targetIp, e.getMessage()));
304305
completion.fail(operr(e.getMessage()));
306+
Thread.currentThread().interrupt();
305307
}
306308
}
307309

header/src/main/java/org/zstack/header/core/FutureCompletion.java

+2
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ private void doWait(long timeout) {
8383
try {
8484
wait(timeout);
8585
} catch (InterruptedException e) {
86+
Thread.currentThread().interrupt();
8687
throw new CloudRuntimeException(e);
8788
}
8889
}
@@ -95,6 +96,7 @@ public synchronized void await() {
9596
try {
9697
wait();
9798
} catch (InterruptedException e) {
99+
Thread.currentThread().interrupt();
98100
throw new CloudRuntimeException(e);
99101
}
100102
}

header/src/main/java/org/zstack/header/core/FutureReturnValueCompletion.java

+4
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ private void dumpSlowFuture() {
5454
try {
5555
wait(SLOW_FUTURE_TIMEOUT);
5656
} catch (InterruptedException e) {
57+
Thread.currentThread().interrupt();
5758
throw new CloudRuntimeException(e);
5859
}
5960

@@ -75,6 +76,7 @@ private void dumpSlowFuture() {
7576
}
7677
} catch (Exception e) {
7778
logger.warn(String.format("dumpSlowFuture get exception %s %s", e.getMessage(), e.toString()));
79+
Thread.currentThread().interrupt();
7880
}
7981
}
8082

@@ -95,6 +97,7 @@ public synchronized void await(long timeout) {
9597
try {
9698
wait(timeout);
9799
} catch (InterruptedException e) {
100+
Thread.currentThread().interrupt();
98101
throw new CloudRuntimeException(e);
99102
}
100103

@@ -115,6 +118,7 @@ public synchronized void await() {
115118
try {
116119
wait();
117120
} catch (InterruptedException e) {
121+
Thread.currentThread().interrupt();
118122
throw new CloudRuntimeException(e);
119123
}
120124
}

plugin/applianceVm/src/main/java/org/zstack/appliancevm/ApplianceVmConnectFlow.java

+1
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ public boolean run() {
144144
logger.warn(e1.getMessage(), e1);
145145
ErrorCode err = e1 instanceof OperationFailureException ? ((OperationFailureException)e1).getErrorCode() : err(ApplianceVmErrors.UNABLE_TO_START, e1.getMessage());
146146
chain.fail(err);
147+
Thread.currentThread().interrupt();
147148
return true;
148149
}
149150
}

plugin/ceph/src/main/java/org/zstack/storage/ceph/backup/CephBackupStorageBase.java

+2
Original file line numberDiff line numberDiff line change
@@ -1539,6 +1539,7 @@ public void done() {
15391539
TimeUnit.SECONDS.sleep(CephGlobalConfig.BACKUP_STORAGE_MON_RECONNECT_DELAY.value(Long.class));
15401540
} catch (InterruptedException e) {
15411541
e.printStackTrace();
1542+
Thread.currentThread().interrupt();
15421543
}
15431544
}
15441545

@@ -1561,6 +1562,7 @@ public void fail(ErrorCode errorCode) {
15611562
} catch (Throwable t) {
15621563
releaseLock.done();
15631564
logger.warn(t.getMessage(), t);
1565+
Thread.currentThread().interrupt();
15641566
}
15651567
}
15661568

plugin/ceph/src/main/java/org/zstack/storage/ceph/primary/CephPrimaryStorageBase.java

+2
Original file line numberDiff line numberDiff line change
@@ -3534,6 +3534,7 @@ public void done() {
35343534
try {
35353535
TimeUnit.SECONDS.sleep(CephGlobalConfig.PRIMARY_STORAGE_MON_RECONNECT_DELAY.value(Long.class));
35363536
} catch (InterruptedException ignored) {
3537+
Thread.currentThread().interrupt();
35373538
}
35383539
}
35393540

@@ -3555,6 +3556,7 @@ public void fail(ErrorCode errorCode) {
35553556
} catch (Throwable t) {
35563557
releaseLock.done();
35573558
logger.warn(t.getMessage(), t);
3559+
Thread.currentThread().interrupt();
35583560
}
35593561
}
35603562

plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java

+1
Original file line numberDiff line numberDiff line change
@@ -3894,6 +3894,7 @@ public void run(FlowTrigger trigger, Map data) {
38943894
try {
38953895
TimeUnit.SECONDS.sleep(3);
38963896
} catch (InterruptedException e) {
3897+
Thread.currentThread().interrupt();
38973898
throw new RuntimeException(e.getMessage());
38983899
}
38993900
ret = sshShell.runCommand(cmd);

portal/src/main/java/org/zstack/portal/managementnode/ManagementNodeManagerImpl.java

+3
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,7 @@ public void handle(ErrorCode errCode, Map data) {
626626
this.wait(TimeUnit.SECONDS.toMillis(1));
627627
} catch (InterruptedException e) {
628628
logger.warn("Interrupted while daemon is running, continue ...", e);
629+
Thread.currentThread().interrupt();
629630
}
630631
}
631632
}
@@ -902,6 +903,7 @@ private void sleepAHeartbeatInterval() {
902903
try {
903904
TimeUnit.SECONDS.sleep(ManagementNodeGlobalConfig.NODE_HEARTBEAT_INTERVAL.value(Long.class));
904905
} catch (InterruptedException ignored) {
906+
Thread.currentThread().interrupt();
905907
}
906908
}
907909

@@ -1090,6 +1092,7 @@ public void startNode() {
10901092
try {
10911093
TimeUnit.SECONDS.sleep(1);
10921094
} catch (InterruptedException e) {
1095+
Thread.currentThread().interrupt();
10931096
throw new CloudRuntimeException(e);
10941097
}
10951098
}

sdk/src/main/java/org/zstack/sdk/ZSClient.java

+2
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ private ApiResult syncWebHookResult() {
266266
try {
267267
this.wait(timeout);
268268
} catch (InterruptedException e) {
269+
Thread.currentThread().interrupt();
269270
throw new ApiException(e);
270271
}
271272

@@ -642,6 +643,7 @@ private ApiResult syncPollResult(String url) {
642643
} catch (InterruptedException e) {
643644
//ignore
644645
} catch (IOException e) {
646+
Thread.currentThread().interrupt();
645647
throw new ApiException(e);
646648
}
647649
}

search/src/main/java/org/zstack/search/SearchFacadeImpl.java

+1
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ public void documentsAdded(long increment) {
135135
logger.info(String.format("refresh search indexes success, cost %d ms", watch.getLapse()));
136136
} catch (Throwable e) {
137137
logger.warn("a unhandled exception happened", e);
138+
Thread.currentThread().interrupt();
138139
}
139140
}
140141

utils/src/main/java/org/zstack/utils/Linux.java

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public static ShellResult shell(List<String> cmd) {
6161
ret.setStdout(IOUtils.toString(pro.getInputStream()));
6262
return ret;
6363
} catch (Exception e) {
64+
Thread.currentThread().interrupt();
6465
throw new RuntimeException(e);
6566
}
6667
}

utils/src/main/java/org/zstack/utils/ShellUtils.java

+1
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ public ShellResult run() {
258258
StringBuilder sb = new StringBuilder();
259259
sb.append("Shell command failed:\n");
260260
sb.append(command);
261+
Thread.currentThread().interrupt();
261262
throw new ShellException(sb.toString(), e);
262263
} finally {
263264
if (process != null) {

utils/src/main/java/org/zstack/utils/TimeUtils.java

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public static boolean loopExecuteUntilTimeoutIgnoreExceptionAndReturn(long perio
4141
unit.sleep(interval);
4242
} catch (Throwable t) {
4343
logger.debug(String.format("%s, after %s ms timeout", t.getMessage(), period-count));
44+
Thread.currentThread().interrupt();
4445
}
4546
count += interval;
4647
}

0 commit comments

Comments
 (0)