File tree Expand file tree Collapse file tree 1 file changed +12
-9
lines changed Expand file tree Collapse file tree 1 file changed +12
-9
lines changed Original file line number Diff line number Diff line change @@ -547,15 +547,18 @@ def join(self):
547
547
invoker .service .on_shutdown ()
548
548
549
549
def get_invoker (self , name , msg ):
550
- self ._lock .acquire ()
551
- try :
552
- invoker = self ._invoker_by_name .get (name )
553
- if not invoker :
554
- service = self ._activator .activate (self , name , msg )
555
- invoker = service .invoker_class (service = service )
556
- self ._invoker_by_name [name ] = invoker
557
- finally :
558
- self ._lock .release ()
550
+ invoker = self ._invoker_by_name .get (name )
551
+ if invoker is None :
552
+ # Avoid acquiring lock if possible.
553
+ self ._lock .acquire ()
554
+ try :
555
+ invoker = self ._invoker_by_name .get (name )
556
+ if not invoker :
557
+ service = self ._activator .activate (self , name , msg )
558
+ invoker = service .invoker_class (service = service )
559
+ self ._invoker_by_name [name ] = invoker
560
+ finally :
561
+ self ._lock .release ()
559
562
560
563
return invoker
561
564
You can’t perform that action at this time.
0 commit comments