Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,8 @@ public DefaultAndroidEventProcessor(
}

@Override
public @Nullable SentryMetricsEvent process(@NotNull SentryMetricsEvent event) {
public @Nullable SentryMetricsEvent process(
final @NotNull SentryMetricsEvent event, final @NotNull Hint hint) {
setDevice(event);
setOs(event);
return event;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -636,7 +636,8 @@ class DefaultAndroidEventProcessorTest {
"42e6bd2a-c45e-414d-8066-ed5196fbc686",
"counter",
123.0,
)
),
Hint(),
)

assertNotNull(processedEvent?.attributes?.get("device.brand"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ class SessionTrackingIntegrationTest {
TODO("Not yet implemented")
}

override fun captureMetric(event: SentryMetricsEvent, scope: IScope?) {
override fun captureMetric(event: SentryMetricsEvent, scope: IScope?, hint: Hint?) {
TODO("Not yet implemented")
}

Expand Down
10 changes: 6 additions & 4 deletions sentry/api/sentry.api
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ public abstract interface class io/sentry/EventProcessor {
public fun getOrder ()Ljava/lang/Long;
public fun process (Lio/sentry/SentryEvent;Lio/sentry/Hint;)Lio/sentry/SentryEvent;
public fun process (Lio/sentry/SentryLogEvent;)Lio/sentry/SentryLogEvent;
public fun process (Lio/sentry/SentryMetricsEvent;)Lio/sentry/SentryMetricsEvent;
public fun process (Lio/sentry/SentryMetricsEvent;Lio/sentry/Hint;)Lio/sentry/SentryMetricsEvent;
public fun process (Lio/sentry/SentryReplayEvent;Lio/sentry/Hint;)Lio/sentry/SentryReplayEvent;
public fun process (Lio/sentry/protocol/SentryTransaction;Lio/sentry/Hint;)Lio/sentry/protocol/SentryTransaction;
}
Expand Down Expand Up @@ -1048,7 +1048,7 @@ public abstract interface class io/sentry/ISentryClient {
public abstract fun captureLog (Lio/sentry/SentryLogEvent;Lio/sentry/IScope;)V
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public abstract fun captureMetric (Lio/sentry/SentryMetricsEvent;Lio/sentry/IScope;)V
public abstract fun captureMetric (Lio/sentry/SentryMetricsEvent;Lio/sentry/IScope;Lio/sentry/Hint;)V
public abstract fun captureProfileChunk (Lio/sentry/ProfileChunk;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public abstract fun captureReplayEvent (Lio/sentry/SentryReplayEvent;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureSession (Lio/sentry/Session;)V
Expand Down Expand Up @@ -2863,7 +2863,7 @@ public final class io/sentry/SentryClient : io/sentry/ISentryClient {
public fun captureEvent (Lio/sentry/SentryEvent;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public fun captureLog (Lio/sentry/SentryLogEvent;Lio/sentry/IScope;)V
public fun captureMetric (Lio/sentry/SentryMetricsEvent;Lio/sentry/IScope;)V
public fun captureMetric (Lio/sentry/SentryMetricsEvent;Lio/sentry/IScope;Lio/sentry/Hint;)V
public fun captureProfileChunk (Lio/sentry/ProfileChunk;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public fun captureReplayEvent (Lio/sentry/SentryReplayEvent;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureSession (Lio/sentry/Session;Lio/sentry/Hint;)V
Expand Down Expand Up @@ -3769,7 +3769,7 @@ public final class io/sentry/SentryOptions$Metrics {
}

public abstract interface class io/sentry/SentryOptions$Metrics$BeforeSendMetricCallback {
public abstract fun execute (Lio/sentry/SentryMetricsEvent;)Lio/sentry/SentryMetricsEvent;
public abstract fun execute (Lio/sentry/SentryMetricsEvent;Lio/sentry/Hint;)Lio/sentry/SentryMetricsEvent;
}

public abstract interface class io/sentry/SentryOptions$OnDiscardCallback {
Expand Down Expand Up @@ -5284,9 +5284,11 @@ public final class io/sentry/metrics/SentryMetricsParameters {
public static fun create (Lio/sentry/SentryAttributes;)Lio/sentry/metrics/SentryMetricsParameters;
public static fun create (Lio/sentry/SentryDate;Lio/sentry/SentryAttributes;)Lio/sentry/metrics/SentryMetricsParameters;
public fun getAttributes ()Lio/sentry/SentryAttributes;
public fun getHint ()Lio/sentry/Hint;
public fun getOrigin ()Ljava/lang/String;
public fun getTimestamp ()Lio/sentry/SentryDate;
public fun setAttributes (Lio/sentry/SentryAttributes;)V
public fun setHint (Lio/sentry/Hint;)V
public fun setOrigin (Ljava/lang/String;)V
public fun setTimestamp (Lio/sentry/SentryDate;)V
}
Expand Down
2 changes: 1 addition & 1 deletion sentry/src/main/java/io/sentry/EventProcessor.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ default SentryLogEvent process(@NotNull SentryLogEvent event) {
* @return the event itself, a mutated SentryMetricsEvent or null
*/
@Nullable
default SentryMetricsEvent process(@NotNull SentryMetricsEvent event) {
default SentryMetricsEvent process(@NotNull SentryMetricsEvent event, @NotNull Hint hint) {
return event;
}

Expand Down
3 changes: 2 additions & 1 deletion sentry/src/main/java/io/sentry/ISentryClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,8 @@ SentryId captureProfileChunk(

void captureLog(@NotNull SentryLogEvent logEvent, @Nullable IScope scope);

void captureMetric(@NotNull SentryMetricsEvent logEvent, @Nullable IScope scope);
void captureMetric(
@NotNull SentryMetricsEvent logEvent, @Nullable IScope scope, @Nullable Hint hint);

@ApiStatus.Internal
void captureBatchedLogEvents(@NotNull SentryLogEvents logEvents);
Expand Down
3 changes: 2 additions & 1 deletion sentry/src/main/java/io/sentry/NoOpSentryClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ public void captureLog(@NotNull SentryLogEvent logEvent, @Nullable IScope scope)
}

@Override
public void captureMetric(@NotNull SentryMetricsEvent metricsEvent, @Nullable IScope scope) {
public void captureMetric(
@NotNull SentryMetricsEvent metricsEvent, @Nullable IScope scope, @Nullable Hint hint) {
// do nothing
}

Expand Down
26 changes: 18 additions & 8 deletions sentry/src/main/java/io/sentry/SentryClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -517,10 +517,12 @@ private SentryLogEvent processLogEvent(

@Nullable
private SentryMetricsEvent processMetricsEvent(
@NotNull SentryMetricsEvent event, final @NotNull List<EventProcessor> eventProcessors) {
@NotNull SentryMetricsEvent event,
final @NotNull List<EventProcessor> eventProcessors,
final @NotNull Hint hint) {
for (final EventProcessor processor : eventProcessors) {
try {
event = processor.process(event);
event = processor.process(event, hint);
} catch (Throwable e) {
options
.getLogger()
Expand Down Expand Up @@ -1278,23 +1280,30 @@ public void captureBatchedLogEvents(final @NotNull SentryLogEvents logEvents) {

@ApiStatus.Experimental
@Override
public void captureMetric(@Nullable SentryMetricsEvent metricsEvent, @Nullable IScope scope) {
public void captureMetric(
@Nullable SentryMetricsEvent metricsEvent,
final @Nullable IScope scope,
@Nullable Hint hint) {
if (hint == null) {
hint = new Hint();
}

if (metricsEvent != null && scope != null) {
metricsEvent = processMetricsEvent(metricsEvent, scope.getEventProcessors());
metricsEvent = processMetricsEvent(metricsEvent, scope.getEventProcessors(), hint);
if (metricsEvent == null) {
return;
}
}

if (metricsEvent != null) {
metricsEvent = processMetricsEvent(metricsEvent, options.getEventProcessors());
metricsEvent = processMetricsEvent(metricsEvent, options.getEventProcessors(), hint);
if (metricsEvent == null) {
return;
}
}

if (metricsEvent != null) {
metricsEvent = executeBeforeSendMetric(metricsEvent);
metricsEvent = executeBeforeSendMetric(metricsEvent, hint);

if (metricsEvent == null) {
options
Expand Down Expand Up @@ -1625,12 +1634,13 @@ private void sortBreadcrumbsByDate(
return event;
}

private @Nullable SentryMetricsEvent executeBeforeSendMetric(@NotNull SentryMetricsEvent event) {
private @Nullable SentryMetricsEvent executeBeforeSendMetric(
@NotNull SentryMetricsEvent event, final @NotNull Hint hint) {
final SentryOptions.Metrics.BeforeSendMetricCallback beforeSendMetric =
options.getMetrics().getBeforeSend();
if (beforeSendMetric != null) {
try {
event = beforeSendMetric.execute(event);
event = beforeSendMetric.execute(event, hint);
} catch (Throwable e) {
options
.getLogger()
Expand Down
3 changes: 2 additions & 1 deletion sentry/src/main/java/io/sentry/SentryOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -3813,7 +3813,8 @@ public interface BeforeSendMetricCallback {
* @return the original metric, mutated metric or null if metric was dropped
*/
@Nullable
SentryMetricsEvent execute(final @NotNull SentryMetricsEvent metric);
SentryMetricsEvent execute(
final @NotNull SentryMetricsEvent metric, final @NotNull Hint hint);
}
}

Expand Down
2 changes: 1 addition & 1 deletion sentry/src/main/java/io/sentry/metrics/MetricsApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ private void captureMetrics(
metricsEvent.setUnit(unit);
metricsEvent.setAttributes(createAttributes(params));

scopes.getClient().captureMetric(metricsEvent, combinedScope);
scopes.getClient().captureMetric(metricsEvent, combinedScope, params.getHint());
} catch (Throwable e) {
options.getLogger().log(SentryLevel.ERROR, "Error while capturing log event", e);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.sentry.metrics;

import io.sentry.Hint;
import io.sentry.SentryAttributes;
import io.sentry.SentryDate;
import org.jetbrains.annotations.NotNull;
Expand All @@ -11,6 +12,8 @@ public final class SentryMetricsParameters {
private @Nullable SentryAttributes attributes;
private @NotNull String origin = "manual";

private @Nullable Hint hint = null;

public @Nullable SentryDate getTimestamp() {
return timestamp;
}
Expand All @@ -35,6 +38,14 @@ public void setOrigin(final @NotNull String origin) {
this.origin = origin;
}

public @Nullable Hint getHint() {
return hint;
}

public void setHint(final @Nullable Hint hint) {
this.hint = hint;
}

public static @NotNull SentryMetricsParameters create(
final @Nullable SentryDate timestamp, final @Nullable SentryAttributes attributes) {
final @NotNull SentryMetricsParameters params = new SentryMetricsParameters();
Expand Down
Loading
Loading