Skip to content

Commit 89a71ed

Browse files
committed
Revert "Route task dispatch projections through the history role"
This reverts commit b1df4b1.
1 parent bde16ba commit 89a71ed

2 files changed

Lines changed: 1 addition & 122 deletions

File tree

‎src/V2/Support/TaskDispatcher.php‎

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
88
use Illuminate\Support\Facades\DB;
99
use Throwable;
10-
use Workflow\V2\Contracts\HistoryProjectionRole;
1110
use Workflow\V2\Enums\TaskStatus;
1211
use Workflow\V2\Enums\TaskType;
1312
use Workflow\V2\Exceptions\UnsupportedBackendCapabilitiesException;
@@ -186,20 +185,7 @@ private static function refreshRunSummary(WorkflowTask $task): void
186185
$run = ConfiguredV2Models::query('run_model', WorkflowRun::class)->find($task->workflow_run_id);
187186

188187
if ($run instanceof WorkflowRun) {
189-
self::historyProjectionRole()->projectRun(self::projectionRun($run));
188+
RunSummaryProjector::project($run);
190189
}
191190
}
192-
193-
private static function historyProjectionRole(): HistoryProjectionRole
194-
{
195-
/** @var HistoryProjectionRole $role */
196-
$role = app(HistoryProjectionRole::class);
197-
198-
return $role;
199-
}
200-
201-
private static function projectionRun(WorkflowRun $run): WorkflowRun
202-
{
203-
return $run->fresh(['instance', 'tasks', 'activityExecutions', 'failures']) ?? $run;
204-
}
205191
}

‎tests/Feature/V2/V2TaskDispatchTest.php‎

Lines changed: 0 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
use Tests\TestCase;
1515
use Workflow\Serializers\Serializer;
1616
use Workflow\V2\ActivityTaskBridge;
17-
use Workflow\V2\Contracts\HistoryProjectionRole;
1817
use Workflow\V2\Enums\ActivityStatus;
1918
use Workflow\V2\Enums\HistoryEventType;
2019
use Workflow\V2\Enums\RunStatus;
@@ -33,7 +32,6 @@
3332
use Workflow\V2\Models\WorkflowRunSummary;
3433
use Workflow\V2\Models\WorkflowTask;
3534
use Workflow\V2\Models\WorkflowTimer;
36-
use Workflow\V2\Support\DefaultHistoryProjectionRole;
3735
use Workflow\V2\Support\HistoryExport;
3836
use Workflow\V2\Support\RunDetailView;
3937
use Workflow\V2\Support\TaskDispatcher;
@@ -92,37 +90,6 @@ public function testTaskDispatchPersistsSuccessOnlyAfterAfterCommitPublicationRu
9290
$this->assertSame('workflow_task_ready', $summary->liveness_state);
9391
}
9492

95-
public function testTaskDispatchUsesHistoryProjectionRoleBindingForSuccessfulDispatches(): void
96-
{
97-
config()->set('workflows.v2.compatibility.current', 'build-a');
98-
config()
99-
->set('workflows.v2.compatibility.supported', ['build-a']);
100-
101-
$customRole = $this->trackingHistoryProjectionRole();
102-
103-
$this->app->instance(HistoryProjectionRole::class, $customRole);
104-
Queue::fake();
105-
106-
$run = $this->createWaitingRun('01J00000000000000000000001H');
107-
108-
/** @var WorkflowTask $task */
109-
$task = WorkflowTask::query()->create([
110-
'workflow_run_id' => $run->id,
111-
'task_type' => TaskType::Workflow->value,
112-
'status' => TaskStatus::Ready->value,
113-
'available_at' => now()
114-
->subSecond(),
115-
'payload' => [],
116-
'connection' => 'redis',
117-
'queue' => 'default',
118-
'compatibility' => 'build-a',
119-
]);
120-
121-
TaskDispatcher::dispatch($task);
122-
123-
$this->assertSame([$run->id], $customRole->projectedRunIds);
124-
}
125-
12693
public function testTaskDispatchFailureRecordsTransportFailureWithoutPretendingPublishSucceeded(): void
12794
{
12895
config()->set('workflows.v2.compatibility.current', 'build-a');
@@ -204,46 +171,6 @@ public function testTaskDispatchFailureRecordsTransportFailureWithoutPretendingP
204171
$this->assertSame('active', $export['summary']['task_problem_badge']['code']);
205172
}
206173

207-
public function testTaskDispatchUsesHistoryProjectionRoleBindingForDispatchFailures(): void
208-
{
209-
config()->set('workflows.v2.compatibility.current', 'build-a');
210-
config()
211-
->set('workflows.v2.compatibility.supported', ['build-a']);
212-
213-
$customRole = $this->trackingHistoryProjectionRole();
214-
215-
$this->app->instance(HistoryProjectionRole::class, $customRole);
216-
$this->mock(BusDispatcher::class, static function (MockInterface $mock): void {
217-
$mock->shouldReceive('dispatch')
218-
->once()
219-
->andThrow(new RuntimeException('Queue transport unavailable.'));
220-
});
221-
222-
$run = $this->createWaitingRun('01J00000000000000000000002H');
223-
224-
/** @var WorkflowTask $task */
225-
$task = WorkflowTask::query()->create([
226-
'workflow_run_id' => $run->id,
227-
'task_type' => TaskType::Workflow->value,
228-
'status' => TaskStatus::Ready->value,
229-
'available_at' => now()
230-
->subSeconds(5),
231-
'payload' => [],
232-
'connection' => 'redis',
233-
'queue' => 'default',
234-
'compatibility' => 'build-a',
235-
]);
236-
237-
try {
238-
TaskDispatcher::dispatch($task);
239-
$this->fail('Expected dispatch to throw.');
240-
} catch (RuntimeException $exception) {
241-
$this->assertSame('Queue transport unavailable.', $exception->getMessage());
242-
}
243-
244-
$this->assertSame([$run->id], $customRole->projectedRunIds);
245-
}
246-
247174
public function testTaskDispatchFailureRecordsUnsupportedQueueCapabilityWithoutRunningInline(): void
248175
{
249176
config()->set('queue.default', 'redis');
@@ -979,38 +906,4 @@ private function configureUnsupportedSyncTaskConnection(): void
979906
config()
980907
->set('workflows.v2.compatibility.supported', ['build-a']);
981908
}
982-
983-
/**
984-
* @return HistoryProjectionRole&object{projectedRunIds:list<string>}
985-
*/
986-
private function trackingHistoryProjectionRole()
987-
{
988-
return new class(new DefaultHistoryProjectionRole()) implements HistoryProjectionRole {
989-
/**
990-
* @var list<string>
991-
*/
992-
public array $projectedRunIds = [];
993-
994-
public function __construct(
995-
private readonly DefaultHistoryProjectionRole $delegate,
996-
) {
997-
}
998-
999-
public function projectRun(WorkflowRun $run): WorkflowRunSummary
1000-
{
1001-
$this->projectedRunIds[] = $run->id;
1002-
1003-
return $this->delegate->projectRun($run);
1004-
}
1005-
1006-
public function recordActivityStarted(
1007-
WorkflowRun $run,
1008-
ActivityExecution $execution,
1009-
ActivityAttempt $attempt,
1010-
WorkflowTask $task,
1011-
): WorkflowRunSummary {
1012-
return $this->delegate->recordActivityStarted($run, $execution, $attempt, $task);
1013-
}
1014-
};
1015-
}
1016909
}

0 commit comments

Comments
 (0)