Yes indeed! As I found the problem is in CloudControllerUtil class:

public static void persistTopology(Topology topology) {
    try {
        
RegistryManager.getInstance().persist(CloudControllerConstants.TOPOLOGY_RESOURCE,
topology);
    } catch (RegistryException e) {
        String msg = "Failed to persist the Topology in registry. ";
        log.fatal(msg, e);
    }
}

We might need to scan the entire codebase for such occurrences.

Thanks


On Tue, Sep 29, 2015 at 4:26 PM, Reka Thirunavukkarasu <r...@wso2.com>
wrote:

> +1 for handing these dependent operations as atomic in order to avoid
> inconsistency. It is a good thought.
>
> Better have the same approach for application model also as it has to
> update monitor hierarchy and application model at the same time.
>
> Thanks,
> Reka
>
> On Tue, Sep 29, 2015 at 1:57 AM, Akila Ravihansa Perera <
> raviha...@wso2.com> wrote:
>
>> Hi,
>>
>> This is to bring your attention to possible inconsistency that could
>> arise due to rare edge cases. For an eg: If you follow the piece of code at
>> [1], handleMemberTerminated can return without successfully removing a
>> member from topology but the next step will get executed which is to remove
>> the member context from CC's context, thus leading to inconsistencies. This
>> could result in permanent inconsistent state and system will never recover.
>>
>> I'm proposing the $subject to resolve this issue. I think simply throwing
>> an exception if an operation is not successful and handling those
>> exceptions gracefully should fix the problem rather than silently returning
>> from the method call. Above is only one example and we may have to find
>> such occurrences throughout the CC component since that is the only module
>> which writes/updates the topology.
>>
>> However, we need to check whether same problem can occur for Application
>> model maintained by AS and Tenant model maintained by SM.
>> @Reka: Any thoughts?
>>
>> I've created the JIRA [2] to track this issue.
>>
>> [1]
>> https://github.com/ravihansa3000/stratos/blob/stratos-4.1.x/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java#L57
>> [2] https://issues.apache.org/jira/browse/STRATOS-1578
>>
>> Thanks.
>>
>> --
>> Akila Ravihansa Perera
>> WSO2 Inc.;  http://wso2.com/
>>
>> Blog: http://ravihansa3000.blogspot.com
>>
>
>
>
> --
> Reka Thirunavukkarasu
> Senior Software Engineer,
> WSO2, Inc.:http://wso2.com,
> Mobile: +94776442007
>
>
>


-- 
Imesh Gunaratne

Senior Technical Lead, WSO2
Committer & PMC Member, Apache Stratos

Reply via email to