Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id A9322200BC7 for ; Fri, 25 Nov 2016 23:09:19 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id A7DC5160B1C; Fri, 25 Nov 2016 22:09:19 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id F20CA160AFA for ; Fri, 25 Nov 2016 23:09:18 +0100 (CET) Received: (qmail 81540 invoked by uid 500); 25 Nov 2016 22:09:18 -0000 Mailing-List: contact commits-help@felix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@felix.apache.org Delivered-To: mailing list commits@felix.apache.org Received: (qmail 81531 invoked by uid 99); 25 Nov 2016 22:09:18 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 25 Nov 2016 22:09:18 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id A11D21AB275 for ; Fri, 25 Nov 2016 22:09:17 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -1.999 X-Spam-Level: X-Spam-Status: No, score=-1.999 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-2.999] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id sN3FqbjikaFx for ; Fri, 25 Nov 2016 22:09:16 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTP id 1DC1F5F4A8 for ; Fri, 25 Nov 2016 22:09:16 +0000 (UTC) Received: from svn01-us-west.apache.org (svn.apache.org [10.41.0.6]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 43945E0045 for ; Fri, 25 Nov 2016 22:09:15 +0000 (UTC) Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id 42D073A0333 for ; Fri, 25 Nov 2016 22:09:15 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1771397 - /felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java Date: Fri, 25 Nov 2016 22:09:15 -0000 To: commits@felix.apache.org From: pderop@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20161125220915.42D073A0333@svn01-us-west.apache.org> archived-at: Fri, 25 Nov 2016 22:09:19 -0000 Author: pderop Date: Fri Nov 25 22:09:15 2016 New Revision: 1771397 URL: http://svn.apache.org/viewvc?rev=1771397&view=rev Log: FELIX-5428: reverted previous patch, because actually the handleRemoved method must not remove the dependency from the m_dependencyEvents map, since it may break the state machine if the SM is currently running. So, a better solution is to add a cleanup() method which is called when we enter into the INACTIVE state. Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java?rev=1771397&r1=1771396&r2=1771397&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java Fri Nov 25 22:09:15 2016 @@ -1050,11 +1050,16 @@ public class ComponentImpl implements Co stopDependencies(); destroyComponent(); notifyListeners(newState); + cleanup(); return true; } return false; } + private void cleanup() { + m_dependencyEvents.values().forEach(eventList -> eventList.clear()); + } + private void invokeStart() { invoke(m_callbackStart); m_startCalled = true; @@ -1162,17 +1167,12 @@ public class ComponentImpl implements Co */ private void handleRemoved(DependencyContext dc, Event e) { try { - Set dependencyEvents = m_dependencyEvents.get(dc); if (! m_isStarted) { - if (dependencyEvents != null) { - // Cleanup the dependency events, in case the component will be restarted later. - // (else when the component is restarted, the removed dependencies would then be re-injected !) - dependencyEvents.remove(e); - } return; } // Check if the dependency is still available. + Set dependencyEvents = m_dependencyEvents.get(dc); int size = dependencyEvents.size(); if (dependencyEvents.contains(e)) { size--; // the dependency is currently registered and is about to be removed.