Skip to content

Commit bb3d2ce

Browse files
authored
Quickpulse Post Request Json Bug Fix (#42144)
* fix * changelog * removing unnecessary imports
1 parent 7da661f commit bb3d2ce

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
### Breaking Changes
88

99
### Bugs Fixed
10+
- Fix a bug where post requests to Live Metrics returned http 400 due to malformed json.
1011

1112
### Other Changes
1213

sdk/monitor/azure-monitor-opentelemetry-exporter/src/main/java/com/azure/monitor/opentelemetry/exporter/implementation/quickpulse/QuickPulseDataFetcher.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.azure.core.http.HttpRequest;
77
import com.azure.core.util.logging.ClientLogger;
88
import com.azure.monitor.opentelemetry.exporter.implementation.quickpulse.model.QuickPulseEnvelope;
9+
import com.azure.monitor.opentelemetry.exporter.implementation.quickpulse.model.QuickPulseMonitoringDataPoints;
910
import com.azure.monitor.opentelemetry.exporter.implementation.quickpulse.model.QuickPulseMetrics;
1011
import com.azure.monitor.opentelemetry.exporter.implementation.utils.Strings;
1112
import org.slf4j.MDC;
@@ -123,9 +124,9 @@ private String buildPostEntity(QuickPulseDataCollector.FinalCounters counters) t
123124
postEnvelope.setTimeStamp("/Date(" + System.currentTimeMillis() + ")/");
124125
postEnvelope.setMetrics(addMetricsToQuickPulseEnvelope(counters));
125126
envelopes.add(postEnvelope);
126-
127+
QuickPulseMonitoringDataPoints points = new QuickPulseMonitoringDataPoints(envelopes);
127128
// By default '/' is not escaped in JSON, so we need to escape it manually as the backend requires it.
128-
return postEnvelope.toJsonString().replace("/", "\\/");
129+
return points.toJsonString().replace("/", "\\/");
129130
}
130131

131132
private static List<QuickPulseMetrics>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.azure.monitor.opentelemetry.exporter.implementation.quickpulse.model;
2+
3+
import com.azure.json.JsonSerializable;
4+
import com.azure.json.JsonWriter;
5+
6+
import java.io.IOException;
7+
import java.util.List;
8+
9+
public class QuickPulseMonitoringDataPoints implements JsonSerializable<QuickPulseEnvelope> {
10+
private List<QuickPulseEnvelope> monitoringDataPoints;
11+
12+
public QuickPulseMonitoringDataPoints(List<QuickPulseEnvelope> monitoringDataPoints) {
13+
this.monitoringDataPoints = monitoringDataPoints;
14+
}
15+
16+
@Override
17+
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
18+
return jsonWriter.writeArray(monitoringDataPoints, JsonWriter::writeJson, false);
19+
}
20+
}

0 commit comments

Comments
 (0)