Skip to content

Commit 7dcfac3

Browse files
committed
Creating DeserializationException
1 parent 4b10c44 commit 7dcfac3

File tree

8 files changed

+39
-12
lines changed

8 files changed

+39
-12
lines changed

disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporter/FromDiskExporterImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.contrib.disk.buffering.internal.exporter;
77

8+
import io.opentelemetry.contrib.disk.buffering.internal.serialization.deserializers.DeserializationException;
89
import io.opentelemetry.contrib.disk.buffering.internal.serialization.deserializers.SignalDeserializer;
910
import io.opentelemetry.contrib.disk.buffering.internal.storage.Storage;
1011
import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.ProcessResult;
@@ -71,7 +72,7 @@ public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException
7172
"Now exporting batch of " + telemetry.size() + " " + deserializer.signalType());
7273
CompletableResultCode join = exportFunction.apply(telemetry).join(timeout, unit);
7374
return join.isSuccess() ? ProcessResult.SUCCEEDED : ProcessResult.TRY_LATER;
74-
} catch (IllegalArgumentException e) {
75+
} catch (DeserializationException e) {
7576
return ProcessResult.CONTENT_INVALID;
7677
}
7778
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.opentelemetry.contrib.disk.buffering.internal.serialization.deserializers;
2+
3+
import java.io.IOException;
4+
5+
@SuppressWarnings("serial")
6+
public class DeserializationException extends IOException {
7+
public DeserializationException(Throwable cause) {
8+
super(cause);
9+
}
10+
}

disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/deserializers/LogRecordDataDeserializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ static LogRecordDataDeserializer getInstance() {
2222
}
2323

2424
@Override
25-
public List<LogRecordData> deserialize(byte[] source) {
25+
public List<LogRecordData> deserialize(byte[] source) throws DeserializationException {
2626
try {
2727
return ProtoLogsDataMapper.getInstance().fromProto(LogsData.ADAPTER.decode(source));
2828
} catch (IOException e) {
29-
throw new IllegalArgumentException(e);
29+
throw new DeserializationException(e);
3030
}
3131
}
3232

disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/deserializers/MetricDataDeserializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ static MetricDataDeserializer getInstance() {
2222
}
2323

2424
@Override
25-
public List<MetricData> deserialize(byte[] source) {
25+
public List<MetricData> deserialize(byte[] source) throws DeserializationException {
2626
try {
2727
return ProtoMetricsDataMapper.getInstance().fromProto(MetricsData.ADAPTER.decode(source));
2828
} catch (IOException e) {
29-
throw new IllegalArgumentException(e);
29+
throw new DeserializationException(e);
3030
}
3131
}
3232

disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/deserializers/SignalDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static SignalDeserializer<LogRecordData> ofLogs() {
2525
}
2626

2727
/** Deserializes the given byte array into a list of telemetry items. */
28-
List<SDK_ITEM> deserialize(byte[] source);
28+
List<SDK_ITEM> deserialize(byte[] source) throws DeserializationException;
2929

3030
/** Returns the name of the stored type of signal -- one of "metrics", "spans", or "logs". */
3131
default String signalType() {

disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/deserializers/SpanDataDeserializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ static SpanDataDeserializer getInstance() {
2222
}
2323

2424
@Override
25-
public List<SpanData> deserialize(byte[] source) {
25+
public List<SpanData> deserialize(byte[] source) throws DeserializationException {
2626
try {
2727
return ProtoSpansDataMapper.getInstance().fromProto(TracesData.ADAPTER.decode(source));
2828
} catch (IOException e) {
29-
throw new IllegalArgumentException(e);
29+
throw new DeserializationException(e);
3030
}
3131
}
3232

disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/FromDiskExporterImplTest.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import static org.mockito.Mockito.when;
1515

1616
import io.opentelemetry.contrib.disk.buffering.internal.exporter.FromDiskExporterImpl;
17+
import io.opentelemetry.contrib.disk.buffering.internal.serialization.deserializers.DeserializationException;
1718
import io.opentelemetry.contrib.disk.buffering.internal.serialization.deserializers.SignalDeserializer;
1819
import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData;
1920
import io.opentelemetry.sdk.common.Clock;
@@ -88,12 +89,23 @@ void verifyStorageFolderIsCreated() {
8889
assertThat(new File(rootDir, STORAGE_FOLDER_NAME).exists()).isTrue();
8990
}
9091

92+
@Test
93+
void whenDeserializationFails_returnFalse() throws IOException {
94+
when(deserializer.deserialize(any()))
95+
.thenAnswer(
96+
invocation -> {
97+
throw new DeserializationException(new IOException("Some exception"));
98+
});
99+
100+
assertThat(exporter.exportStoredBatch(1, TimeUnit.SECONDS)).isFalse();
101+
}
102+
91103
private void createDummyFile() throws IOException {
92104
File file = new File(rootDir, STORAGE_FOLDER_NAME + "/" + 1000L);
93105
Files.write(file.toPath(), singletonList("First line"));
94106
}
95107

96-
private void setUpSerializer() {
108+
private void setUpSerializer() throws DeserializationException {
97109
deserializer = mock();
98110
when(deserializer.deserialize(any())).thenReturn(deserializedData);
99111
}

disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.opentelemetry.api.common.Value;
2020
import io.opentelemetry.api.logs.Severity;
2121
import io.opentelemetry.contrib.disk.buffering.internal.files.TemporaryFileProvider;
22+
import io.opentelemetry.contrib.disk.buffering.internal.serialization.deserializers.DeserializationException;
2223
import io.opentelemetry.contrib.disk.buffering.internal.serialization.deserializers.SignalDeserializer;
2324
import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl;
2425
import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer;
@@ -140,8 +141,7 @@ void whenProcessingSucceeds_returnSuccessStatus() throws IOException {
140141
@Test
141142
void whenProcessingFails_returnTryLaterStatus() throws IOException {
142143
assertEquals(
143-
ReadableResult.TRY_LATER,
144-
readableFile.readAndProcess(bytes -> ProcessResult.TRY_LATER));
144+
ReadableResult.TRY_LATER, readableFile.readAndProcess(bytes -> ProcessResult.TRY_LATER));
145145
}
146146

147147
@Test
@@ -250,6 +250,10 @@ private static List<LogRecordData> getRemainingDataAndClose(ReadableFile readabl
250250
}
251251

252252
private static LogRecordData deserialize(byte[] data) {
253-
return DESERIALIZER.deserialize(data).get(0);
253+
try {
254+
return DESERIALIZER.deserialize(data).get(0);
255+
} catch (DeserializationException e) {
256+
throw new RuntimeException(e);
257+
}
254258
}
255259
}

0 commit comments

Comments
 (0)