Skip to content

Commit 76e97c8

Browse files
authored
Fix 2.x interop of timestamps (#1726)
* Fix 2.x interop of timestamps * Add smoke test * Bump version
1 parent 6cb1274 commit 76e97c8

File tree

6 files changed

+80
-49
lines changed

6 files changed

+80
-49
lines changed

agent/agent-bootstrap/src/main/java/com/microsoft/applicationinsights/agent/bootstrap/BytecodeUtil.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,46 +42,46 @@ public static void setDelegate(final BytecodeUtilDelegate delegate) {
4242
MicrometerUtil.setDelegate(new MicrometerUtilDelegate() {
4343
@Override
4444
public void trackMetric(String name, double value, Integer count, Double min, Double max, Map<String, String> properties) {
45-
delegate.trackMetric(name, value, count, min, max, null, properties, Collections.emptyMap(), null);
45+
delegate.trackMetric(null, name, value, count, min, max, null, properties, Collections.emptyMap(), null);
4646
}
4747
});
4848
}
4949
}
5050

51-
public static void trackEvent(String name, Map<String, String> properties, Map<String, String> tags,
51+
public static void trackEvent(Date timestamp, String name, Map<String, String> properties, Map<String, String> tags,
5252
Map<String, Double> metrics, String instrumentationKey) {
5353
if (delegate != null) {
54-
delegate.trackEvent(name, properties, tags, metrics, instrumentationKey);
54+
delegate.trackEvent(timestamp, name, properties, tags, metrics, instrumentationKey);
5555
}
5656
}
5757

58-
public static void trackMetric(String name, double value, Integer count, Double min, Double max, Double stdDev,
58+
public static void trackMetric(Date timestamp, String name, double value, Integer count, Double min, Double max, Double stdDev,
5959
Map<String, String> properties, Map<String, String> tags, String instrumentationKey) {
6060
if (delegate != null) {
61-
delegate.trackMetric(name, value, count, min, max, stdDev, properties, tags, instrumentationKey);
61+
delegate.trackMetric(timestamp, name, value, count, min, max, stdDev, properties, tags, instrumentationKey);
6262
}
6363
}
6464

65-
public static void trackDependency(String name, String id, String resultCode, Long totalMillis, boolean success,
65+
public static void trackDependency(Date timestamp, String name, String id, String resultCode, Long totalMillis, boolean success,
6666
String commandName, String type, String target, Map<String, String> properties,
6767
Map<String, String> tags, Map<String, Double> metrics, String instrumentationKey) {
6868
if (delegate != null) {
69-
delegate.trackDependency(name, id, resultCode, totalMillis, success, commandName, type, target, properties,
69+
delegate.trackDependency(timestamp, name, id, resultCode, totalMillis, success, commandName, type, target, properties,
7070
tags, metrics, instrumentationKey);
7171
}
7272
}
7373

74-
public static void trackPageView(String name, URI uri, long totalMillis, Map<String, String> properties, Map<String, String> tags,
74+
public static void trackPageView(Date timestamp, String name, URI uri, long totalMillis, Map<String, String> properties, Map<String, String> tags,
7575
Map<String, Double> metrics, String instrumentationKey) {
7676
if (delegate != null) {
77-
delegate.trackPageView(name, uri, totalMillis, properties, tags, metrics, instrumentationKey);
77+
delegate.trackPageView(timestamp, name, uri, totalMillis, properties, tags, metrics, instrumentationKey);
7878
}
7979
}
8080

81-
public static void trackTrace(String message, int severityLevel, Map<String, String> properties, Map<String, String> tags,
81+
public static void trackTrace(Date timestamp, String message, int severityLevel, Map<String, String> properties, Map<String, String> tags,
8282
String instrumentationKey) {
8383
if (delegate != null) {
84-
delegate.trackTrace(message, severityLevel, properties, tags, instrumentationKey);
84+
delegate.trackTrace(timestamp, message, severityLevel, properties, tags, instrumentationKey);
8585
}
8686
}
8787

@@ -94,10 +94,10 @@ public static void trackRequest(String id, String name, URL url, Date timestamp,
9494
}
9595
}
9696

97-
public static void trackException(Exception exception, Map<String, String> properties, Map<String, String> tags,
97+
public static void trackException(Date timestamp, Exception exception, Map<String, String> properties, Map<String, String> tags,
9898
Map<String, Double> metrics, String instrumentationKey) {
9999
if (delegate != null) {
100-
delegate.trackException(exception, properties, tags, metrics, instrumentationKey);
100+
delegate.trackException(timestamp, exception, properties, tags, metrics, instrumentationKey);
101101
}
102102
}
103103

@@ -167,30 +167,30 @@ public static void onExit() {
167167

168168
public interface BytecodeUtilDelegate {
169169

170-
void trackEvent(String name, Map<String, String> properties, Map<String, String> tags, Map<String, Double> metrics,
170+
void trackEvent(Date timestamp, String name, Map<String, String> properties, Map<String, String> tags, Map<String, Double> metrics,
171171
String instrumentationKey);
172172

173-
void trackMetric(String name, double value, Integer count, Double min, Double max,
173+
void trackMetric(Date timestamp, String name, double value, Integer count, Double min, Double max,
174174
Double stdDev, Map<String, String> properties, Map<String, String> tags,
175175
String instrumentationKey);
176176

177-
void trackDependency(String name, String id, String resultCode, Long totalMillis,
177+
void trackDependency(Date timestamp, String name, String id, String resultCode, Long totalMillis,
178178
boolean success, String commandName, String type, String target,
179179
Map<String, String> properties, Map<String, String> tags, Map<String, Double> metrics,
180180
String instrumentationKey);
181181

182-
void trackPageView(String name, URI uri, long totalMillis, Map<String, String> properties, Map<String, String> tags,
182+
void trackPageView(Date timestamp, String name, URI uri, long totalMillis, Map<String, String> properties, Map<String, String> tags,
183183
Map<String, Double> metrics, String instrumentationKey);
184184

185-
void trackTrace(String message, int severityLevel, Map<String, String> properties, Map<String, String> tags,
185+
void trackTrace(Date timestamp, String message, int severityLevel, Map<String, String> properties, Map<String, String> tags,
186186
String instrumentationKey);
187187

188188
void trackRequest(String id, String name, URL url, Date timestamp, Long duration, String responseCode, boolean success,
189189
String source, Map<String, String> properties, Map<String, String> tags, Map<String, Double> metrics,
190190
String instrumentationKey);
191191

192192
// TODO also handle cases where ExceptionTelemetry parsedStack is used directly instead of indirectly through Exception
193-
void trackException(Exception exception, Map<String, String> properties, Map<String, String> tags,
193+
void trackException(Date timestamp, Exception exception, Map<String, String> properties, Map<String, String> tags,
194194
Map<String, Double> metrics, String instrumentationKey);
195195

196196
void flush();

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/instrumentation/sdk/BytecodeUtilImpl.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,14 @@ public class BytecodeUtilImpl implements BytecodeUtilDelegate {
5959
private static final AtomicBoolean alreadyLoggedError = new AtomicBoolean();
6060

6161
@Override
62-
public void trackEvent(String name, Map<String, String> properties, Map<String, String> tags,
62+
public void trackEvent(Date timestamp, String name, Map<String, String> properties, Map<String, String> tags,
6363
Map<String, Double> metrics, String instrumentationKey) {
6464

6565
if (Strings.isNullOrEmpty(name)) {
6666
return;
6767
}
6868
EventTelemetry telemetry = new EventTelemetry(name);
69+
telemetry.setTimestamp(timestamp);
6970
telemetry.getProperties().putAll(properties);
7071
telemetry.getContext().getTags().putAll(tags);
7172
telemetry.getMetrics().putAll(metrics);
@@ -76,13 +77,14 @@ public void trackEvent(String name, Map<String, String> properties, Map<String,
7677

7778
// TODO do not track if perf counter (?)
7879
@Override
79-
public void trackMetric(String name, double value, Integer count, Double min, Double max, Double stdDev,
80+
public void trackMetric(Date timestamp, String name, double value, Integer count, Double min, Double max, Double stdDev,
8081
Map<String, String> properties, Map<String, String> tags, String instrumentationKey) {
8182

8283
if (Strings.isNullOrEmpty(name)) {
8384
return;
8485
}
8586
MetricTelemetry telemetry = new MetricTelemetry();
87+
telemetry.setTimestamp(timestamp);
8688
telemetry.setName(name);
8789
telemetry.setValue(value);
8890
telemetry.setCount(count);
@@ -97,7 +99,7 @@ public void trackMetric(String name, double value, Integer count, Double min, Do
9799
}
98100

99101
@Override
100-
public void trackDependency(String name, String id, String resultCode, @Nullable Long totalMillis,
102+
public void trackDependency(Date timestamp, String name, String id, String resultCode, @Nullable Long totalMillis,
101103
boolean success, String commandName, String type, String target,
102104
Map<String, String> properties, Map<String, String> tags, Map<String, Double> metrics,
103105
String instrumentationKey) {
@@ -106,6 +108,7 @@ public void trackDependency(String name, String id, String resultCode, @Nullable
106108
return;
107109
}
108110
RemoteDependencyTelemetry telemetry = new RemoteDependencyTelemetry();
111+
telemetry.setTimestamp(timestamp);
109112
telemetry.setName(name);
110113
telemetry.setId(id);
111114
telemetry.setResultCode(resultCode);
@@ -125,13 +128,14 @@ public void trackDependency(String name, String id, String resultCode, @Nullable
125128
}
126129

127130
@Override
128-
public void trackPageView(String name, URI uri, long totalMillis, Map<String, String> properties,
131+
public void trackPageView(Date timestamp, String name, URI uri, long totalMillis, Map<String, String> properties,
129132
Map<String, String> tags, Map<String, Double> metrics, String instrumentationKey) {
130133

131134
if (Strings.isNullOrEmpty(name)) {
132135
return;
133136
}
134137
PageViewTelemetry telemetry = new PageViewTelemetry();
138+
telemetry.setTimestamp(timestamp);
135139
telemetry.setName(name);
136140
telemetry.setUrl(uri);
137141
telemetry.setDuration(totalMillis);
@@ -144,13 +148,14 @@ public void trackPageView(String name, URI uri, long totalMillis, Map<String, St
144148
}
145149

146150
@Override
147-
public void trackTrace(String message, int severityLevel, Map<String, String> properties, Map<String, String> tags,
151+
public void trackTrace(Date timestamp, String message, int severityLevel, Map<String, String> properties, Map<String, String> tags,
148152
String instrumentationKey) {
149153
if (Strings.isNullOrEmpty(message)) {
150154
return;
151155
}
152156

153157
TraceTelemetry telemetry = new TraceTelemetry();
158+
telemetry.setTimestamp(timestamp);
154159
telemetry.setMessage(message);
155160
if (severityLevel != -1) {
156161
telemetry.setSeverityLevel(getSeverityLevel(severityLevel));
@@ -192,13 +197,14 @@ public void trackRequest(String id, String name, URL url, Date timestamp, @Nulla
192197
}
193198

194199
@Override
195-
public void trackException(Exception exception, Map<String, String> properties, Map<String, String> tags,
200+
public void trackException(Date timestamp, Exception exception, Map<String, String> properties, Map<String, String> tags,
196201
Map<String, Double> metrics, String instrumentationKey) {
197202
if (exception == null) {
198203
return;
199204
}
200205

201206
ExceptionTelemetry telemetry = new ExceptionTelemetry();
207+
telemetry.setTimestamp(timestamp);
202208
telemetry.setException(exception);
203209
telemetry.setSeverityLevel(SeverityLevel.Error);
204210
telemetry.getProperties().putAll(properties);

0 commit comments

Comments
 (0)