I have now fixed this issue, the problem has occurred due to missing
application validations. In single cartridge application we have defined an
invalid autoscaling policy id however it was not detected.

I have now added validations to verify this at the application creation
time:

if (StringUtils.isEmpty(alias)) {
    handleError(String.format("An alias is not defined for cartridge:
[application-id] %s" +
            "[cartridge-type] %s", applicationId, cartridgeType));
}

if (!ApplicationUtils.isAliasValid(alias)) {
    handleError(String.format("Alias is not valid: [application-id] %s " +
                    "[cartridge-type] %s [alias] %s", applicationId,
cartridgeType, alias));
}

if (subscribableInfoContextMap.get(alias) != null) {
    handleError(String.format("Alias is already defined: [application-id] %s " +
                    "[cartridge-type] %s [alias] %s", applicationId,
cartridgeType, alias));
}

if(StringUtils.isBlank(autoscalingPolicyId)) {
    handleError(String.format("Autoscaling policy is not defined:
[application-id] %s " +
            "[cartridge-type] %s [alias] %s", applicationId,
cartridgeType, alias));
}

AutoscalePolicy autoscalingPolicy =
PolicyManager.getInstance().getAutoscalePolicy(autoscalingPolicyId);
if(autoscalingPolicy == null) {
    handleError(String.format("Autoscaling policy is not found:
[application-id] %s " +
            "[cartridge-type] %s [alias] %s [autoscaling-policy] %s",
applicationId, cartridgeType,
            alias, autoscalingPolicyId));
}


This fix is pushed to master branch.

Thanks


On Tue, Feb 17, 2015 at 12:00 PM, Imesh Gunaratne <im...@apache.org> wrote:

> Thanks Udara, I'm looking into this.
>
> On Tue, Feb 17, 2015 at 11:17 AM, Udara Liyanage <ud...@wso2.com> wrote:
>
>> Hi,
>>
>> I just started Stratos built from master branch and
>> exected single-cartridge sample.
>>
>> [2015-02-17 11:15:41,919]  INFO
>> {org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor} -  Executing
>> scaling rule as statistics have been reset
>> Exception in thread "pool-38-thread-3" [Error: null pointer:
>> autoscalePolicy.getLoadThresholds()]
>> [Near : {... autoscalePolicy.getLoadThresho ....}]
>>              ^
>> [Line: 1, Column: 1]
>> at
>> org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:431)
>> at
>> org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:143)
>> at org.mvel2.ast.ASTNode.optimize(ASTNode.java:159)
>> at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:115)
>> at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
>> at
>> org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123)
>> at
>> org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119)
>> at
>> org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:113)
>> at org.mvel2.MVEL.executeExpression(MVEL.java:942)
>> at
>> org.drools.base.dataproviders.MVELDataProvider.getResults(MVELDataProvider.java:111)
>> at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:150)
>> at
>> org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:196)
>> at
>> org.drools.reteoo.SingleLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:145)
>> at
>> org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:154)
>> at
>> org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)
>> at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)
>> at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)
>> at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)
>> at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:311)
>> at
>> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:903)
>> at
>> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:847)
>> at
>> org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:269)
>> at
>> org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator.evaluate(AutoscalerRuleEvaluator.java:64)
>> at
>> org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor$1.run(ClusterMonitor.java:571)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>> at java.lang.Thread.run(Thread.java:662)
>> Caused by: java.lang.NullPointerException
>> at
>> org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:397)
>> ... 26 more
>>
>>
>> --
>>
>> Udara Liyanage
>> Software Engineer
>> WSO2, Inc.: http://wso2.com
>> lean. enterprise. middleware
>>
>> web: http://udaraliyanage.wordpress.com
>> phone: +94 71 443 6897
>>
>
>
>
> --
> Imesh Gunaratne
>
> Technical Lead, WSO2
> Committer & PMC Member, Apache Stratos
>



-- 
Imesh Gunaratne

Technical Lead, WSO2
Committer & PMC Member, Apache Stratos

Reply via email to