|
18 | 18 | import java.time.Duration; |
19 | 19 | import java.util.Objects; |
20 | 20 | import java.util.Optional; |
| 21 | +import java.util.concurrent.CompletableFuture; |
21 | 22 | import java.util.concurrent.ExecutionException; |
| 23 | +import java.util.concurrent.TimeUnit; |
| 24 | +import java.util.concurrent.TimeoutException; |
22 | 25 | import java.util.concurrent.atomic.AtomicBoolean; |
23 | 26 | import java.util.function.Supplier; |
24 | 27 | import javax.annotation.Nullable; |
@@ -131,15 +134,16 @@ private void doSendRequest() { |
131 | 134 | AgentToServer agentToServer = Objects.requireNonNull(requestSupplier).get().getAgentToServer(); |
132 | 135 |
|
133 | 136 | byte[] data = agentToServer.encodeByteString().toByteArray(); |
134 | | - try (HttpSender.Response response = |
135 | | - requestSender.send(new ByteArrayWriter(data), data.length).get()) { |
| 137 | + CompletableFuture<HttpSender.Response> future = |
| 138 | + requestSender.send(new ByteArrayWriter(data), data.length); |
| 139 | + try (HttpSender.Response response = future.get(30, TimeUnit.SECONDS)) { |
136 | 140 | if (isSuccessful(response)) { |
137 | 141 | handleSuccessResponse( |
138 | 142 | Response.create(ServerToAgent.ADAPTER.decode(response.bodyInputStream()))); |
139 | 143 | } else { |
140 | 144 | handleHttpError(response); |
141 | 145 | } |
142 | | - } catch (IOException | InterruptedException e) { |
| 146 | + } catch (IOException | InterruptedException | TimeoutException e) { |
143 | 147 | getCallback().onRequestFailed(e); |
144 | 148 | } catch (ExecutionException e) { |
145 | 149 | if (e.getCause() != null) { |
|
0 commit comments