Pierre De Rop created FELIX-5428:
------------------------------------

             Summary: Dependency events set not cleared when component is 
removed
                 Key: FELIX-5428
                 URL: https://issues.apache.org/jira/browse/FELIX-5428
             Project: Felix
          Issue Type: Bug
          Components: Dependency Manager
    Affects Versions: org.apache.felix.dependencymanager-r1
            Reporter: Pierre De Rop
            Assignee: Pierre De Rop
             Fix For: org.apache.felix.dependencymanager-r9


During the implementation of    FELIX-5336 (support for prototype scopes), I 
came across the following problem:

1) you create a Consumer component:

dm.add(consumer):

2) the consumer depends on some services providers, so you add two providers:

dm.add(p1);
dm.add(p2);

3) you remove the consumer:

dm.remove(consumer);

at this point, the consumer is unbound from the two providers because the 
consumer is being stopped, but the bug is the following: when the handleRemoved 
method is called, the events are not removed from the m_dependencyEvents 
collection because the  m_isStarted flag is set to true, so the two 
dependencies remains:

{code}
    private void handleRemoved(DependencyContext dc, Event e) {
        try {
                if (! m_isStarted) {
                        return;
                }
{code}

4) now, you remove the two providers

5) you re-add the consumer and the two providers:

dm.add(consumer);
dm.add(p3);
dm.add(p4);

but when the consumer is re-added, it gets injected with the previous 
dependency events (the two previous p1,p2), and this is wrong of course.








--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to