@@ -62,8 +62,12 @@ def _handle_registry_sync(self, record_ids=None):
6262 record_ids = record_ids or self .ids
6363 _logger .info ("%s sync registry for %s" , self ._name , str (record_ids ))
6464 records = self .browse (record_ids ).exists ()
65- records .filtered (lambda x : x .active )._register_controllers ()
66- records .filtered (lambda x : not x .active )._unregister_controllers ()
65+ # update controllers and clear cache only once
66+ records .filtered (lambda x : x .active )._register_controllers (clear_cache = False )
67+ records .filtered (lambda x : not x .active )._unregister_controllers (
68+ clear_cache = False
69+ )
70+ self .env .registry .clear_cache ("routing" )
6771
6872 def _handle_registry_sync_post_commit (self , record_ids = None ):
6973 """Handle registry sync after commit.
@@ -84,23 +88,30 @@ def unlink(self):
8488 self ._unregister_controllers ()
8589 return super ().unlink ()
8690
87- def _register_controllers (self , init = False , options = None ):
91+ def _register_controllers (self , init = False , options = None , clear_cache = True ):
8892 if not self :
8993 return
9094 rules = self ._prepare_endpoint_rules (options = options )
9195 self ._endpoint_registry .update_rules (rules , init = init )
92- self .env .registry .clear_cache ("routing" )
96+ if clear_cache :
97+ self .env .registry .clear_cache ("routing" )
9398 _logger .debug (
9499 "%s registered controllers: %s" ,
95100 self ._name ,
96101 ", " .join ([r .route for r in rules ]),
97102 )
98103
99- def _unregister_controllers (self ):
104+ def _unregister_controllers (self , clear_cache = True ):
100105 if not self :
101106 return
102107 self ._endpoint_registry .drop_rules (self ._registered_endpoint_rule_keys ())
103- self .env .registry .clear_cache ("routing" )
108+ if clear_cache :
109+ self .env .registry .clear_cache ("routing" )
110+ _logger .debug (
111+ "%s unregistered controllers: %s" ,
112+ self ._name ,
113+ ", " .join (self ._registered_endpoint_rule_keys ()),
114+ )
104115
105116 def _routing_impacting_fields (self , options = None ):
106117 """Return list of fields that have impact on routing for current record."""
0 commit comments