Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 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
1 change: 0 additions & 1 deletion packages/drift/lib/src/internal_logger.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:meta/meta.dart';
import 'package:sentry/sentry.dart';

/// Internal logger for sentry_drift package.
@internal
const internalLogger = SentryInternalLogger('sentry_drift');
20 changes: 15 additions & 5 deletions packages/file/lib/src/sentry_file.dart
Original file line number Diff line number Diff line change
Expand Up @@ -239,12 +239,14 @@ class SentryFile implements File {
this._file, {
@internal Hub? hub,
}) : _hub = hub ?? HubAdapter() {
_spanFactory = _hub.options.spanFactory;
_hub.options.sdk.addIntegration('SentryFileTracing');
_hub.options.sdk.addPackage(packageName, sdkVersion);
}

final File _file;
final Hub _hub;
late final InstrumentationSpanFactory _spanFactory;

@override
Future<File> copy(String newPath) {
Expand Down Expand Up @@ -421,8 +423,12 @@ class SentryFile implements File {
Future<T> _wrap<T>(Callback<T> callback, String operation) async {
final desc = _getDesc();

final currentSpan = _hub.getSpan();
final span = currentSpan?.startChild(operation, description: desc);
final parentSpan = _spanFactory.getSpan(_hub);
final span = _spanFactory.createSpan(
parentSpan,
operation,
description: desc,
);

span?.origin = SentryTraceOrigins.autoFile;
span?.setData('file.async', true);
Expand Down Expand Up @@ -484,8 +490,12 @@ class SentryFile implements File {
T _wrapSync<T>(Callback<T> callback, String operation) {
final desc = _getDesc();

final currentSpan = _hub.getSpan();
final span = currentSpan?.startChild(operation, description: desc);
final parentSpan = _spanFactory.getSpan(_hub);
final span = _spanFactory.createSpan(
parentSpan,
operation,
description: desc,
);

span?.origin = SentryTraceOrigins.autoFile;
span?.setData('file.async', false);
Expand Down Expand Up @@ -533,7 +543,7 @@ class SentryFile implements File {
span?.status = SpanStatus.internalError();
rethrow;
} finally {
span?.finish();
unawaited(span?.finish());

_hub.addBreadcrumb(
Breadcrumb(
Expand Down
5 changes: 5 additions & 0 deletions packages/hive/lib/src/internal_logger.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import 'package:meta/meta.dart';
import 'package:sentry/sentry.dart';

@internal
const internalLogger = SentryInternalLogger('sentry_hive');
Comment thread
buenaflor marked this conversation as resolved.
Outdated
11 changes: 6 additions & 5 deletions packages/hive/lib/src/sentry_box.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@ class SentryBox<E> extends SentryBoxBase<E> implements Box<E> {
final Box<E> _box;
final Hub _hub;

final _spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHiveBoxBase,
);
late final SentrySpanHelper _spanHelper;

/// @nodoc
SentryBox(this._box, @internal this._hub) : super(_box, _hub) {
_spanHelper.setHub(_hub);
_spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHiveBoxBase,
hub: _hub,
);
}

@override
Expand Down
11 changes: 6 additions & 5 deletions packages/hive/lib/src/sentry_box_base.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@ class SentryBoxBase<E> implements BoxBase<E> {
final BoxBase<E> _boxBase;
final Hub _hub;

final _spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHiveBoxBase,
);
late final SentrySpanHelper _spanHelper;

/// @nodoc
SentryBoxBase(this._boxBase, this._hub) {
_spanHelper.setHub(_hub);
_spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHiveBoxBase,
hub: _hub,
);
}

@override
Expand Down
27 changes: 11 additions & 16 deletions packages/hive/lib/src/sentry_box_collection.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import 'package:hive/src/box_collection/box_collection_stub.dart'
as impl;
// ignore: implementation_imports
import 'package:hive/src/box_collection/box_collection_stub.dart' as stub;
import 'package:meta/meta.dart';
import 'package:sentry/sentry.dart';

import 'sentry_span_helper.dart';
Expand All @@ -15,13 +14,16 @@ import 'sentry_span_helper.dart';
class SentryBoxCollection implements stub.BoxCollection {
final impl.BoxCollection _boxCollection;

final _spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHiveBoxCollection,
);
late final SentrySpanHelper _spanHelper;

/// Init with [impl.BoxCollection]
SentryBoxCollection(this._boxCollection);
SentryBoxCollection(this._boxCollection, {Hub? hub}) {
_spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHiveBoxCollection,
hub: hub ?? HubAdapter(),
);
}

@override
Set<String> get boxNames => _boxCollection.boxNames;
Expand All @@ -31,12 +33,6 @@ class SentryBoxCollection implements stub.BoxCollection {
_boxCollection.close();
}

/// @nodoc
@internal
void setHub(Hub hub) {
_spanHelper.setHub(hub);
}

@override
Future<void> deleteFromDisk() {
return _spanHelper.asyncWrapInSpan(
Expand All @@ -59,11 +55,12 @@ class SentryBoxCollection implements stub.BoxCollection {
HiveCipher? key,
Hub? hub,
}) async {
final resolvedHub = hub ?? HubAdapter();
final spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHiveBoxCollection,
hub: resolvedHub,
);
spanHelper.setHub(hub ?? HubAdapter());

return await spanHelper.asyncWrapInSpan(
'open',
Expand All @@ -74,9 +71,7 @@ class SentryBoxCollection implements stub.BoxCollection {
path: path,
key: key,
);
final sbc = SentryBoxCollection(boxCollection);
sbc.setHub(hub ?? HubAdapter());
return sbc;
return SentryBoxCollection(boxCollection, hub: resolvedHub);
},
dbName: name,
);
Expand Down
21 changes: 14 additions & 7 deletions packages/hive/lib/src/sentry_hive_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,16 @@ class SentryHiveImpl implements SentryHiveInterface {
final HiveInterface _hive;
Hub _hub = HubAdapter();

/// @nodoc
SentryHiveImpl(this._hive);
late SentrySpanHelper _spanHelper;

final _spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHive,
);
/// @nodoc
SentryHiveImpl(this._hive) {
_spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHive,
hub: _hub,
);
}

// SentryHiveInterface

Expand All @@ -50,7 +53,11 @@ class SentryHiveImpl implements SentryHiveInterface {
options.sdk.addIntegration('SentryHiveTracing');
options.sdk.addPackage(packageName, sdkVersion);
_hub = hub;
_spanHelper.setHub(hub);
_spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHive,
hub: hub,
);
}

// HiveInterface
Expand Down
11 changes: 6 additions & 5 deletions packages/hive/lib/src/sentry_lazy_box.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@ class SentryLazyBox<E> extends SentryBoxBase<E> implements LazyBox<E> {
final LazyBox<E> _lazyBox;
final Hub _hub;

final _spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHiveLazyBox,
);
late final SentrySpanHelper _spanHelper;

/// @nodoc
SentryLazyBox(this._lazyBox, @internal this._hub) : super(_lazyBox, _hub) {
_spanHelper.setHub(_hub);
_spanHelper = SentrySpanHelper(
// ignore: invalid_use_of_internal_member
SentryTraceOrigins.autoDbHiveLazyBox,
hub: _hub,
);
}

@override
Expand Down
82 changes: 32 additions & 50 deletions packages/hive/lib/src/sentry_span_helper.dart
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
// ignore_for_file: invalid_use_of_internal_member

import 'dart:async';

import 'package:meta/meta.dart';
import 'package:sentry/sentry.dart';

import 'sentry_hive_impl.dart';

/// @nodoc
@internal
class SentrySpanHelper {
/// @nodoc
Hub _hub = HubAdapter();

/// @nodoc
final Hub _hub;
final String _origin;
late final InstrumentationSpanFactory _factory;

/// @nodoc
SentrySpanHelper(this._origin);

/// @nodoc
void setHub(Hub hub) {
_hub = hub;
SentrySpanHelper(this._origin, {Hub? hub}) : _hub = hub ?? HubAdapter() {
_factory = _hub.options.spanFactory;
}

/// @nodoc
Expand All @@ -26,50 +26,41 @@ class SentrySpanHelper {
Future<T> Function() execute, {
String? dbName,
}) async {
final currentSpan = _hub.getSpan();
final span = currentSpan?.startChild(
final parentSpan = _factory.getSpan(_hub);
final span = _factory.createSpan(
parentSpan,
SentryHiveImpl.dbOp,
description: description,
);

// ignore: invalid_use_of_internal_member
span?.origin = _origin;

final breadcrumb = Breadcrumb(
message: description,
data: {},
type: 'query',
);

span?.setData(SentryHiveImpl.dbSystemKey, SentryHiveImpl.dbSystem);
if (dbName != null) {
span?.setData(SentryHiveImpl.dbNameKey, dbName);
}

breadcrumb.data?[SentryHiveImpl.dbSystemKey] = SentryHiveImpl.dbSystem;
if (dbName != null) {
breadcrumb.data?[SentryHiveImpl.dbNameKey] = dbName;
}
final breadcrumb = Breadcrumb(
message: description,
data: {
SentryHiveImpl.dbSystemKey: SentryHiveImpl.dbSystem,
if (dbName != null) SentryHiveImpl.dbNameKey: dbName,
},
type: 'query',
);

try {
final result = await execute();

span?.status = SpanStatus.ok();
breadcrumb.data?['status'] = 'ok';

return result;
} catch (exception) {
span?.throwable = exception;
span?.status = SpanStatus.internalError();

breadcrumb.data?['status'] = 'internal_error';
breadcrumb.level = SentryLevel.warning;

rethrow;
} finally {
await span?.finish();

// ignore: invalid_use_of_internal_member
await _hub.scope.addBreadcrumb(breadcrumb);
}
}
Expand All @@ -81,51 +72,42 @@ class SentrySpanHelper {
T Function() execute, {
String? dbName,
}) {
final currentSpan = _hub.getSpan();
final span = currentSpan?.startChild(
final parentSpan = _factory.getSpan(_hub);
final span = _factory.createSpan(
parentSpan,
SentryHiveImpl.dbOp,
description: description,
);

// ignore: invalid_use_of_internal_member
span?.origin = _origin;
span?.setData('sync', true);

final breadcrumb = Breadcrumb(
message: description,
data: {},
type: 'query',
);

span?.setData(SentryHiveImpl.dbSystemKey, SentryHiveImpl.dbSystem);
if (dbName != null) {
span?.setData(SentryHiveImpl.dbNameKey, dbName);
}

breadcrumb.data?[SentryHiveImpl.dbSystemKey] = SentryHiveImpl.dbSystem;
if (dbName != null) {
breadcrumb.data?[SentryHiveImpl.dbNameKey] = dbName;
}
final breadcrumb = Breadcrumb(
message: description,
data: {
SentryHiveImpl.dbSystemKey: SentryHiveImpl.dbSystem,
if (dbName != null) SentryHiveImpl.dbNameKey: dbName,
},
type: 'query',
);

try {
final result = execute();

span?.status = SpanStatus.ok();
breadcrumb.data?['status'] = 'ok';

return result;
} catch (exception) {
span?.throwable = exception;
span?.status = SpanStatus.internalError();

breadcrumb.data?['status'] = 'internal_error';
breadcrumb.level = SentryLevel.warning;

rethrow;
} finally {
span?.finish();

// ignore: invalid_use_of_internal_member
unawaited(span?.finish());
_hub.scope.addBreadcrumb(breadcrumb);
}
}
Expand Down
Loading
Loading