otel_workmanager 0.1.0 copy "otel_workmanager: ^0.1.0" to clipboard
otel_workmanager: ^0.1.0 copied to clipboard

OpenTelemetry instrumentation for `package:workmanager`. Wraps background-task registration and execution with task.* spans.

otel_workmanager #

OpenTelemetry instrumentation for package:workmanager.

// Registration side (main isolate)
await tracedWorkmanagerRegister<void>(
  operation: 'register_one_off',
  uniqueName: 'sync-uploads',
  taskName: 'upload-pending-photos',
  invoke: () => Workmanager().registerOneOffTask(
    'sync-uploads',
    'upload-pending-photos',
  ),
);

// Execution side (background isolate)
@pragma('vm:entry-point')
void callbackDispatcher() {
  Workmanager().executeTask((taskName, inputData) async {
    await OTel.initialize(serviceName: 'my-app-bg');
    return tracedWorkmanagerExecute<bool>(
      taskName: taskName,
      inputData: inputData,
      body: () async {
        // ... actual work
        return true;
      },
    );
  });
}

Spans:

  • workmanager register_one_off <name> — PRODUCER
  • workmanager register_periodic <name> — PRODUCER
  • workmanager execute <name> — CONSUMER

All carry task.system=workmanager, task.operation, task.name.

Background-isolate gotcha #

The callbackDispatcher runs in a separate background isolate that does not share OTel state with your main isolate. You must call OTel.initialize() inside the dispatcher before any traced helper will emit anything. If you don't, the helpers short-circuit (no errors, no spans).

Suppression: runWithoutWorkmanagerInstrumentationAsync.

License #

Apache 2.0

0
likes
160
points
69
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

OpenTelemetry instrumentation for `package:workmanager`. Wraps background-task registration and execution with task.* spans.

Homepage
Repository (GitHub)
View/report issues

License

Apache-2.0 (license)

Dependencies

dartastic_opentelemetry, dartastic_opentelemetry_api, flutter, workmanager

More

Packages that depend on otel_workmanager