Skip to content

Commit

Permalink
Add configurable option to disable octane event automatic breadcrumbs
Browse files Browse the repository at this point in the history
  • Loading branch information
DariaKunoichi committed Feb 24, 2025
1 parent 4b17e3c commit 421c362
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 11 deletions.
12 changes: 12 additions & 0 deletions config/bugsnag.php
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,18 @@

'bindings' => env('BUGSNAG_QUERY_BINDINGS', false),

/*
|--------------------------------------------------------------------------
| Octane breadcrumbs
|--------------------------------------------------------------------------
|
| Enable this if you'd like us to automatically record breadcrumbs from
| octane events.
|
*/

'octane_breadcrumbs' => env('BUGSNAG_OCTANE_BREADCRUMBS', true),

/*
|--------------------------------------------------------------------------
| Release Stage
Expand Down
3 changes: 2 additions & 1 deletion features/octane/handled_controller.feature
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Scenario Outline: Handled exceptions are delivered from controllers
| "laravelsw" |

Scenario Outline: Handled errors are delivered from controllers
Given I set environment variable "BUGSNAG_OCTANE_BREADCRUMBS" to "false"
When I start the service <octanesrv>
And I wait for the host "localhost" to open port "61311"
When I navigate to the route "/handled_controller_error"
Expand All @@ -36,7 +37,7 @@ Scenario Outline: Handled errors are delivered from controllers
And the event "severity" equals "warning"
And the event "unhandled" is false
And the event "severityReason.type" equals "handledError"
And the event has a "process" breadcrumb named "Octane request received"
And the event does not have a "process" breadcrumb with message "Octane request received"

Examples:
| octanesrv |
Expand Down
34 changes: 24 additions & 10 deletions src/OctaneEventSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,43 +35,57 @@ protected function cleanup()
Bugsnag::setMetaData([], false);
}

/**
* Leave breadcrumb if enabled in config
*
* @param string $crumbText message for the breadcrumb
*
* @return void
*/
protected function breadcrumb($crumbText): void {
$bsgconfig = config('bugsnag');
if (isset($bsgconfig['octane_breadcrumbs']) && $bsgconfig['octane_breadcrumbs']) {
Bugsnag::leaveBreadcrumb($crumbText, Breadcrumb::PROCESS_TYPE);
}
}

public function handleRequestHandled(RequestHandled $event) : void {
Bugsnag::leaveBreadcrumb('Octane request handled', Breadcrumb::PROCESS_TYPE);
$this->breadcrumb('Octane request handled');
}
public function handleRequestReceived(RequestReceived $event) : void {
Bugsnag::leaveBreadcrumb('Octane request received', Breadcrumb::PROCESS_TYPE);
$this->breadcrumb('Octane request received');
}
public function handleRequestTerminated(RequestTerminated $event): void
{
Bugsnag::leaveBreadcrumb('Octane request terminated', Breadcrumb::PROCESS_TYPE);
$this->breadcrumb('Octane request terminated');
$this->cleanup();
}

public function handleTaskReceived(TaskReceived $event) : void {
Bugsnag::leaveBreadcrumb('Octane task received', Breadcrumb::PROCESS_TYPE);
$this->breadcrumb('Octane task received');
}
public function handleTaskTerminated(TaskTerminated $event): void
{
Bugsnag::leaveBreadcrumb('Octane task terminated', Breadcrumb::PROCESS_TYPE);
$this->breadcrumb('Octane task terminated');
$this->cleanup();
}

public function handleTickReceived(TickReceived $event) : void {
Bugsnag::leaveBreadcrumb('Octane tick received', Breadcrumb::PROCESS_TYPE);
$this->breadcrumb('Octane tick received');
}
public function handleTickTerminated(TickTerminated $event) : void {
Bugsnag::leaveBreadcrumb('Octane tick terminated', Breadcrumb::PROCESS_TYPE);
$this->breadcrumb('Octane tick terminated');
}

public function handleWorkerStarting(WorkerStarting $event) : void {
Bugsnag::leaveBreadcrumb('Octane worker starting', Breadcrumb::PROCESS_TYPE);
$this->breadcrumb('Octane worker starting');
}
public function handleWorkerErrorOccurred(WorkerErrorOccurred $event) : void {
Bugsnag::leaveBreadcrumb('Octane worker error occurred', Breadcrumb::PROCESS_TYPE);
$this->breadcrumb('Octane worker error occurred');
}
public function handleWorkerStopping(WorkerStopping $event): void
{
Bugsnag::leaveBreadcrumb('Octane worker stopping', Breadcrumb::PROCESS_TYPE);
$this->breadcrumb('Octane worker stopping');
$this->cleanup();
}

Expand Down

0 comments on commit 421c362

Please sign in to comment.