Victor Antonovich created FELIX-4417:
----------------------------------------

             Summary: Circular references detected but not resolved if one of 
the references in the cycle has optional cardinality
                 Key: FELIX-4417
                 URL: https://issues.apache.org/jira/browse/FELIX-4417
             Project: Felix
          Issue Type: Bug
          Components: Declarative Services (SCR)
    Affects Versions: scr-1.8.2
            Reporter: Victor Antonovich


Looks like current Apache Felix SCR implementation doesn't conform fully to 
Declarative Services Specification, which says 
(http://www.osgi.org/download/r4v43/osgi.cmpn-4.3.0.pdf, 112.3.7):

"Circular references must be detected by SCR when it attempts to satisfy 
component configurations and SCR must fail to satisfy the references involved 
in the cycle and log an error message with the Log Service, if present. 
However, if one of the references in the cycle has optional cardinality SCR 
must break the cycle. The reference with the optional cardinality can be 
satisfied and bound to zero target services. Therefore the cycle is broken and 
the other references may be satisfied."

In case of two components, A and B, where A is delayed with 1..1 static 
reference to B, and B is immediate with 0..n dynamic reference to A, Felix SCR 
should:
1) activate B with dynamic reference to A satisfied and bound to zero services
2) activate A with satisfied static reference to B
3) bind dynamic reference to B in component A

But it seems current Felix SCR implementation can't handle this kind of 
circular dependency correctly and is failing with message "Circular reference 
detected".



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to