Skip to content

Commit 99ded54

Browse files
committed
confirm that some proto parse generate ISE and make that a request failure.
1 parent 1117ad9 commit 99ded54

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

opamp-client/src/main/java/io/opentelemetry/opamp/client/internal/request/service/HttpRequestService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,9 @@ private void doSendRequest() {
159159
} else {
160160
handleHttpError(response);
161161
}
162+
} catch (IllegalStateException e) {
163+
getCallback().onRequestFailed(e);
164+
connectionStatus.retryAfter(null);
162165
} catch (IOException | InterruptedException | TimeoutException e) {
163166
getCallback().onConnectionFailed(e);
164167
connectionStatus.retryAfter(null);

opamp-client/src/test/java/io/opentelemetry/opamp/client/internal/request/service/HttpRequestServiceTest.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@
2525
import io.opentelemetry.opamp.client.internal.response.Response;
2626
import io.opentelemetry.opamp.client.request.service.RequestService;
2727
import java.io.ByteArrayInputStream;
28+
import java.io.EOFException;
2829
import java.time.Duration;
2930
import java.util.ArrayList;
31+
import java.util.Arrays;
3032
import java.util.Collections;
3133
import java.util.LinkedList;
3234
import java.util.List;
@@ -133,8 +135,9 @@ void verifySendingRequest_successNotCalledForNon200() {
133135
}
134136

135137
@Test
136-
void verifySuccessWithInvalidBodyIsConsideredFailure() {
138+
void verifySuccessWithInvalidBodyIsConsideredConnectionFailure() {
137139
ServerToAgent serverToAgent = new ServerToAgent.Builder().build();
140+
// This will generate an EOFException
138141
byte[] responseBody = "kablooey!!!".getBytes(UTF_8);
139142
HttpSender.Response httpResponse = createFailedResponse(200, responseBody, null);
140143
requestSender.enqueueResponse(httpResponse);
@@ -145,7 +148,25 @@ void verifySuccessWithInvalidBodyIsConsideredFailure() {
145148
verify(callback, never()).onRequestSuccess(Response.create(serverToAgent));
146149
verify(callback, never()).onRequestFailed(any());
147150
verify(callback, never()).onConnectionSuccess();
148-
verify(callback).onConnectionFailed(any());
151+
verify(callback).onConnectionFailed(any(EOFException.class));
152+
}
153+
154+
@Test
155+
void verifyIllegalStateExceptionInParsingIsConsideredRequestFailure() {
156+
ServerToAgent serverToAgent = new ServerToAgent.Builder().build();
157+
byte[] responseBody = new byte[9024];
158+
// This will generate an IllegalStateException
159+
Arrays.fill(responseBody, (byte) 0x11);
160+
HttpSender.Response httpResponse = createFailedResponse(200, responseBody, null);
161+
requestSender.enqueueResponse(httpResponse);
162+
163+
httpRequestService.sendRequest();
164+
165+
verifySingleRequestSent();
166+
verify(callback, never()).onRequestSuccess(Response.create(serverToAgent));
167+
verify(callback, never()).onConnectionSuccess();
168+
verify(callback, never()).onConnectionFailed(any());
169+
verify(callback).onRequestFailed(any(IllegalStateException.class));
149170
}
150171

151172
@Test

0 commit comments

Comments
 (0)