diff --git a/src/Handlers/RequestTerminatedHandler.php b/src/Handlers/RequestTerminatedHandler.php index 8cd7687..045fc7c 100644 --- a/src/Handlers/RequestTerminatedHandler.php +++ b/src/Handlers/RequestTerminatedHandler.php @@ -5,8 +5,7 @@ namespace Overtrue\LaravelOpenTelemetry\Handlers; use Laravel\Octane\Events\RequestTerminated; -use Overtrue\LaravelOpenTelemetry\Facades\Measure; -use Overtrue\LaravelOpenTelemetry\Facades\Metric; +use Overtrue\LaravelOpenTelemetry\Support\MeasureDataFlusher; class RequestTerminatedHandler { @@ -16,7 +15,6 @@ class RequestTerminatedHandler public function handle(RequestTerminated $event): void { // In Octane mode, we need to force flush the tracer provider. - Measure::flush(); - Metric::flush(); + MeasureDataFlusher::flush(); } } diff --git a/src/Support/MeasureDataFlusher.php b/src/Support/MeasureDataFlusher.php new file mode 100644 index 0000000..fc833a7 --- /dev/null +++ b/src/Support/MeasureDataFlusher.php @@ -0,0 +1,15 @@ + $jobClass, 'messaging.job.status' => 'completed', ]); + + MeasureDataFlusher::flush(); } public function recordJobFailed(JobFailed $event): void @@ -87,5 +90,7 @@ public function recordJobFailed(JobFailed $event): void 'messaging.job.class' => $jobClass, 'messaging.job.status' => 'failed', ]); + + MeasureDataFlusher::flush(); } } diff --git a/tests/Watchers/QueueWatcherTest.php b/tests/Watchers/QueueWatcherTest.php index d4e9f32..e90bbf9 100644 --- a/tests/Watchers/QueueWatcherTest.php +++ b/tests/Watchers/QueueWatcherTest.php @@ -11,6 +11,7 @@ use Mockery; use OpenTelemetry\SemConv\TraceAttributes; use Overtrue\LaravelOpenTelemetry\Facades\Measure; +use Overtrue\LaravelOpenTelemetry\Support\MeasureDataFlusher; use Overtrue\LaravelOpenTelemetry\Tests\TestCase; use Overtrue\LaravelOpenTelemetry\Watchers\QueueWatcher; @@ -118,6 +119,9 @@ public function test_records_job_processed_event() 'messaging.job.status' => 'completed', ]); + $flusher = Mockery::mock('alias:'.MeasureDataFlusher::class); + $flusher->shouldReceive('flush')->once(); + $this->watcher->recordJobProcessed($event); } @@ -138,6 +142,9 @@ public function test_records_job_failed_event() 'messaging.job.status' => 'failed', ]); + $flusher = Mockery::mock('alias:'.MeasureDataFlusher::class); + $flusher->shouldReceive('flush')->once(); + $this->watcher->recordJobFailed($event); }