From 635d380160933181a379871b19cfba7b5f4965e9 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Tue, 13 Mar 2018 18:10:46 +0100 Subject: RouteWayCostWorker: Fix recursive worker call Since this method was run on `after_save` and in it `RouteWayCostCalculator` calls `#update` on the given route, it caused an infinite recursive call to the worker. To prevent this, wrap the `#calculate!` call in methods that unset and reset the callback. Refs #6095 --- app/workers/route_way_cost_worker.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/workers/route_way_cost_worker.rb b/app/workers/route_way_cost_worker.rb index fa5bd737d..2ec8cdff9 100644 --- a/app/workers/route_way_cost_worker.rb +++ b/app/workers/route_way_cost_worker.rb @@ -4,6 +4,11 @@ class RouteWayCostWorker def perform(referential_id, route_id) Referential.find(referential_id).switch route = Chouette::Route.find(route_id) + + Chouette::Route.skip_callback(:save, :after, :calculate_costs!) + RouteWayCostCalculator.new(route).calculate! + + Chouette::Route.set_callback(:save, :after, :calculate_costs!) end end -- cgit v1.2.3