You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by jb...@apache.org on 2020/09/16 16:01:58 UTC

[felix-dev] branch master updated: FELIX-6315: do not deactivate factory component configurations

This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/master by this push:
     new febfde7  FELIX-6315: do not deactivate factory component configurations
     new 28b8f0e  Merge pull request #37 from rovarga/felix6315
febfde7 is described below

commit febfde78e6a04b79163d0e9e39351ad8860e1400
Author: Robert Varga <ro...@pantheon.tech>
AuthorDate: Fri Jul 31 22:24:01 2020 +0200

    FELIX-6315: do not deactivate factory component configurations
    
    Reaching zero reference count for a component configuration created
    via a component factory should not trigger that configuration being
    deactivated.
---
 .../java/org/apache/felix/scr/impl/manager/SingleComponentManager.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java
index cbc68c0..c86a6c4 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java
@@ -1040,7 +1040,8 @@ public class SingleComponentManager<S> extends AbstractComponentManager<S> imple
             // unget the service instance if no bundle is using it
             // any longer unless delayed component instances have to
             // be kept (FELIX-3039)
-            if (  m_useCount.decrementAndGet() == 0 && !isImmediate() && !keepInstances() )
+            if ( m_useCount.decrementAndGet() == 0 && !isImmediate()
+                    && !getComponentMetadata().isFactory() && !keepInstances() )
             {
                 final State previousState = getState();
                 deleteComponent( ComponentConstants.DEACTIVATION_REASON_UNSPECIFIED );