Component
zsvirt
Problem description
ZSClient.syncPollResult sleeps between polling attempts with TimeUnit.MILLISECONDS.sleep(interval). When the
calling thread is interrupted, this throws InterruptedException and clears the thread's interrupt status flag. The
catch (InterruptedException e) block is empty (//ignore), so the flag is never restored and the loop keeps polling
until timeout.
Same file syncWebHookResult and the adjacent IOException branch both restore the flag via
Thread.currentThread().interrupt(), this one is missing.
Steps to reproduce
- Start a synchronous polling API call that returns
202 and keeps polling.
- Invoke
Thread.currentThread().interrupt() on the calling thread during the sleep interval.
Expected behavior
Restore the interrupt status flag and propagate the interruption, matching syncWebHookResult.
Environment
No response
Logs or screenshots
No response
Component
zsvirt
Problem description
ZSClient.syncPollResultsleeps between polling attempts withTimeUnit.MILLISECONDS.sleep(interval). When thecalling thread is interrupted, this throws
InterruptedExceptionand clears the thread's interrupt status flag. Thecatch (InterruptedException e)block is empty (//ignore), so the flag is never restored and the loop keeps pollinguntil timeout.
Same file
syncWebHookResultand the adjacentIOExceptionbranch both restore the flag viaThread.currentThread().interrupt(), this one is missing.Steps to reproduce
202and keeps polling.Thread.currentThread().interrupt()on the calling thread during the sleep interval.Expected behavior
Restore the interrupt status flag and propagate the interruption, matching
syncWebHookResult.Environment
No response
Logs or screenshots
No response