aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Grzegorz Grzybek (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ARIES-1841) Race condition on blueprint-cm with ConfigAdmin
Date Wed, 03 Oct 2018 13:17:00 GMT

     [ https://issues.apache.org/jira/browse/ARIES-1841?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Grzegorz Grzybek updated ARIES-1841:
------------------------------------
    Description: 
If a blueprint bundle use CM like:

{code}
<cm-properties persistent-id="persistentId" id="my.config" xmlns="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.2.0"/>
{code}

if the configuration is created by another bundle (directly using {{ConfigurationAdmin}})
like:

{code}
        Configuration configuration = configurationAdmin.getConfiguration(CONFIG_PID, null);
        Dictionary<String, Object> dictionary = Optional.ofNullable(configuration.getProperties()).orElse(new
Hashtable());
        for (Map.Entry entry : properties.entrySet()) {
            dictionary.put(entry.getKey().toString(), entry.getValue());
        }
       configuration.update(dictionary);
{code}

then, it's possible to have a race condition where the blueprint container thread starts whereas
the config update is not complete (two different threads).

Blueprint CM should have an option to wait an updated config. For instance, it could check
{{\_felix\_.cm.newConfiguration}} property.

  was:
If a blueprint bundle use CM like:

{code}
<cm-properties persistent-id="persistentId" id="my.config" xmlns="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.2.0"/>
{code}

if the configuration is created by another bundle (directly using {{ConfigurationAdmin}})
like:

{code}
        Configuration configuration = configurationAdmin.getConfiguration(CONFIG_PID, null);
        Dictionary<String, Object> dictionary = Optional.ofNullable(configuration.getProperties()).orElse(new
Hashtable());
        for (Map.Entry entry : properties.entrySet()) {
            dictionary.put(entry.getKey().toString(), entry.getValue());
        }
       configuration.update(dictionary);
{code}

then, it's possible to have a race condition where the blueprint container thread starts whereas
the config update is not complete (two different threads).

Blueprint CM should have an option to wait an updated config. For instance, it could check
{{_felix_.cm.newConfiguration}} property.


> Race condition on blueprint-cm with ConfigAdmin
> -----------------------------------------------
>
>                 Key: ARIES-1841
>                 URL: https://issues.apache.org/jira/browse/ARIES-1841
>             Project: Aries
>          Issue Type: Bug
>          Components: Blueprint
>    Affects Versions: blueprint-core-1.9.0, blueprint-core-1.8.3
>            Reporter: Jean-Baptiste Onofré
>            Assignee: Jean-Baptiste Onofré
>            Priority: Major
>             Fix For: blueprint-core-1.8.4, blueprint-core-1.9.1
>
>
> If a blueprint bundle use CM like:
> {code}
> <cm-properties persistent-id="persistentId" id="my.config" xmlns="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.2.0"/>
> {code}
> if the configuration is created by another bundle (directly using {{ConfigurationAdmin}})
like:
> {code}
>         Configuration configuration = configurationAdmin.getConfiguration(CONFIG_PID,
null);
>         Dictionary<String, Object> dictionary = Optional.ofNullable(configuration.getProperties()).orElse(new
Hashtable());
>         for (Map.Entry entry : properties.entrySet()) {
>             dictionary.put(entry.getKey().toString(), entry.getValue());
>         }
>        configuration.update(dictionary);
> {code}
> then, it's possible to have a race condition where the blueprint container thread starts
whereas the config update is not complete (two different threads).
> Blueprint CM should have an option to wait an updated config. For instance, it could
check {{\_felix\_.cm.newConfiguration}} property.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message