pnoltes commented on PR #414:
URL: https://github.com/apache/celix/pull/414#issuecomment-1097040371

   If I remember correctly the remote service topology manager has 3 locks and 
even 2 as recursive locks, because registering service during import can loop 
back to the topology manager. 
   
   For example:
    - Component A has a required dependency to Service1 and
    -  Component A provides a - marked for remote - Service2 when active 
    - Topology manager import a remote Service1 -> during importService, this 
activates  Component A -> during importService,  topology manager tries to 
export Service2.
   
   But a while back the dfi export_registration has been updated to track 
service trackers async and (more importantly) the dfi import_registration has 
been updated to register service async:
   
https://github.com/apache/celix/blob/0913af41282e029fc19b03b930267ba5829c4608/bundles/remote_services/remote_service_admin_dfi/src/import_registration_dfi.c#L155
   This means that a import/export service can be safely completed before the 
service tracker / service registration is picked up by the Celix event thread. 
   
   I prefer that we require the RSAs to start service tracker / register 
service async during export / import and simplify the remote service topology 
manager.
   
   If you agree, I think we should refactor the topology manager to use a 
single lock or mutex and thus avoid the whole ABBA situation. 
   
   WDYT?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@celix.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to