[
https://issues.apache.org/jira/browse/SLING-36?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Felix Meschberger updated SLING-36:
-----------------------------------
Component/s: (was: Scripting)
Core
Description:
The RepositoryComponentRegistration services access the JCR repository to see
whether there are any component descriptors stored in the repository and
updates the component registry in case of new, modified or removed components.
Unfortunately, this service does not pay attention to the fact, that a bundle
providing mappings for such components may be stopped, removed, added or
updated. In such cases the registered components are not touched and stay. In
fact new components will not be visible until after a restart of the
RepositoryComponentResgistration.
The registration of JCR based components must be modified to take into account
that OCM mappings for such components may be added and/or removed at run time
and that there is another influence on the state of registered components than
just the repository.
was:
The ScriptedComponent uses the ScriptManager to resolve the script to
ComponentRenderer to actually call the script. This reference is static and
obviously even survives PackageAdmin.resolveBundle() calls if the scripting
core bundle is updated.
The ScriptedComponent instances are loaded by the Core bundle and instantiated
by the Content-JCR bundle.
It has to be discovered whether this is a class loader artefact which may have
to be solved in the realm of Felix as the OSGi framework.
On the other hand, using a static reference to a class is not the best of all
solutions. A better solution trating the ScriptManager as a service must be
found.
Summary: Repository Based components not cleaned up when not existing
any longer (was: ScriptedComponent has a static reference to ScriptManager
which seems to stick beyond bundle udpate)
The issue is actually different and just manifests itself such that the
ScriptComponent still refers to an
old instance of the ScriptManager. The real cause is, that the JCR based
Components (of which ScriptedComponent is an instance) are not removed from the
system once the bundle providing the implementation class and OCM mapping are
stopped.
This causes the ScriptComponents to stay and still have the old reference.
> Repository Based components not cleaned up when not existing any longer
> -----------------------------------------------------------------------
>
> Key: SLING-36
> URL: https://issues.apache.org/jira/browse/SLING-36
> Project: Sling
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.0.0
> Reporter: Felix Meschberger
> Priority: Critical
> Fix For: 2.0.0
>
>
> The RepositoryComponentRegistration services access the JCR repository to see
> whether there are any component descriptors stored in the repository and
> updates the component registry in case of new, modified or removed components.
> Unfortunately, this service does not pay attention to the fact, that a bundle
> providing mappings for such components may be stopped, removed, added or
> updated. In such cases the registered components are not touched and stay. In
> fact new components will not be visible until after a restart of the
> RepositoryComponentResgistration.
> The registration of JCR based components must be modified to take into
> account that OCM mappings for such components may be added and/or removed at
> run time and that there is another influence on the state of registered
> components than just the repository.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.