Skip to content
Merged
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 @@ -50,8 +50,6 @@ public static InitializationFlowContainer Create(
var checkOnboardingStartupOperation = new CheckOnboardingStartupOperation(loadingStatus, selfProfile, staticContainer.FeatureFlagsCache, decentralandUrlsSource, appArgs, realmNavigationContainer.RealmNavigator);
var teleportStartupOperation = new TeleportStartupOperation(loadingStatus, realmContainer.RealmController, staticContainer.ExposedGlobalDataContainer.ExposedCameraData.CameraEntityProxy, realmContainer.TeleportController, staticContainer.ExposedGlobalDataContainer.CameraSamplingData, dynamicWorldParams.StartParcel);

var sentryDiagnostics = new SentryDiagnosticStartupOperation(realmContainer.RealmController, bootstrapContainer.DiagnosticsContainer);

var loadingOperations = new List<IStartupOperation>()
{
blocklistCheckStartupOperation,
Expand All @@ -61,7 +59,6 @@ public static InitializationFlowContainer Create(
checkOnboardingStartupOperation,
teleportStartupOperation,
ensureLivekitConnectionStartupOperation, // GateKeeperRoom is dependent on player position so it must be after teleport
sentryDiagnostics
};

// The Global PX operation is the 3rd most time-consuming loading stage and it's currently not needed in Local Scene Development
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,14 @@ await UniTask.WhenAll(
diagnosticsContainer.Sentry!.AddCurrentSceneToScope(scope, container.ScenesCache.CurrentScene.Info);
});

diagnosticsContainer.AddSentryScopeConfigurator(scope =>
{
diagnosticsContainer.Sentry?.AddRealmInfoToScope(scope,
container.RealmData.Ipfs.CatalystBaseUrl.Value,
container.RealmData.Ipfs.ContentBaseUrl.Value,
container.RealmData.Ipfs.LambdasBaseUrl.Value);
});

var renderFeature = container.QualityContainer.RendererFeaturesCache.GetRendererFeature<GPUInstancingRenderFeature>();
if (enableGPUInstancing && renderFeature != null && renderFeature.Settings != null && renderFeature.Settings.FrustumCullingAndLODGenComputeShader != null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,17 @@ public void LogException<T>(T ecsSystemException) where T: Exception, IDecentral
{
if (IsLogMessageAllowed(ecsSystemException, in ecsSystemException.ReportData, LogType.Exception))
LogExceptionInternal(ecsSystemException);
else
HandleSupressedException(ecsSystemException, ecsSystemException.ReportData);
}

[HideInCallstack]
public void LogException(Exception exception, ReportData reportData, Object context)
{
if (IsLogMessageAllowed(exception, reportData, LogType.Exception))
LogExceptionInternal(exception, reportData, context);
else
HandleSupressedException(exception, reportData);
}

internal abstract void LogInternal(LogType logType, ReportData category, Object context, object message);
Expand All @@ -57,6 +61,8 @@ public void LogException(Exception exception, ReportData reportData, Object cont

internal abstract void LogExceptionInternal(Exception exception, ReportData reportData, Object context);

internal virtual void HandleSupressedException(Exception exception, ReportData reportData) { }

[MethodImpl(MethodImplOptions.AggressiveInlining)]
private bool IsLogMessageAllowed(in object message, in ReportData reportData, LogType logType) =>
matrix.IsEnabled(reportData.Category, logType) && !Debounce(in message, in reportData, logType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,16 @@ internal override void LogExceptionInternal(Exception exception, ReportData repo
SentrySdk.CaptureException(exception, reportScope.Value.ExecuteCached);
}

internal override void HandleSupressedException(Exception exception, ReportData reportData)
{
//Add breadcrumb for non AB categories. AB categories will flood our Sentry without meaningfull information
if (reportData.Category.Equals(ReportCategory.ASSET_BUNDLES))
return;

SentrySdk.AddBreadcrumb(
$"Suppressed exception {reportData.Category}: {exception.Message}");
}

private void CaptureMessage(string message, ReportData reportData, LogType logType)
{
// Avoid reporting non-errors to sentry as separate issues (even if they are enabled in the matrix)
Expand Down

This file was deleted.

This file was deleted.

5 changes: 5 additions & 0 deletions Explorer/Assets/DCL/WebRequests/WebRequestController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using DCL.Web3.Identities;
using DCL.WebRequests.Analytics;
using DCL.WebRequests.RequestsHub;
using Sentry;
using System;
using UnityEngine.Networking;
using Utility.Multithreading;
Expand Down Expand Up @@ -77,8 +78,12 @@ public WebRequestController(IWebRequestsAnalyticsContainer analyticsContainer, I
if (envelope.CommonArguments.AttemptsDelayInMilliseconds() > 0)
await UniTask.Delay(TimeSpan.FromMilliseconds(envelope.CommonArguments.AttemptsDelayInMilliseconds()));


if (exception.IsIrrecoverableError(attemptsLeft) && !envelope.IgnoreIrrecoverableErrors)
{
SentrySdk.AddBreadcrumb($"Irrecoverable exception occured on loading {typeof(TWebRequest).Name} from {envelope.CommonArguments.URL} with {envelope}\n", level: BreadcrumbLevel.Info);
throw;
}
}
}

Expand Down