On Tue, Mar 3, 2015 at 11:15 PM, Rajkumar Rajaratnam <rajkum...@wso2.com> wrote:
> Problem is lowestInstanceCount is initially taking 0. Instead it should > take the non terminated member count of 1st partition. > > To Fix, > > int selectedIndex = 0; > int lowestInstanceCount = > partitionContexts[0].getNonTerminatedMemberCount(); > > +1. I was thinking the same. We can start with first partition count. Thanks. > wdyt? > > Thanks. > > On Tue, Mar 3, 2015 at 10:57 PM, Rajkumar Rajaratnam <rajkum...@wso2.com> > wrote: > >> Hi Lahiru, >> >> Actually, current logic is not working as your example. This logic only >> uses the first partition. This will never use any other partitions. See my >> comments within the following code. >> >> public PartitionContext >> getNextScaleUpPartitionContext(PartitionContext[] partitionContexts) { >> >> int selectedIndex = 0; >> int lowestInstanceCount = 0; >> >> for(int partitionIndex = 0; partitionIndex < >> partitionContexts.length - 1; partitionIndex++) { >> >> >> if(partitionContexts[partitionIndex].getNonTerminatedMemberCount() < >> lowestInstanceCount) { >> >> *// this if condition is always false, because non terminated count is >> always >=0* >> >> lowestInstanceCount = >> partitionContexts[partitionIndex].getNonTerminatedMemberCount(); >> selectedIndex = partitionIndex; >> } >> } >> >> *// selected index is 0 always, so round-robin will always use first >> partition* >> if(partitionContexts[selectedIndex].getNonTerminatedMemberCount() >> < partitionContexts[selectedIndex].getMax()) { >> >> if(log.isDebugEnabled()){ >> log.debug(String.format("[round-robin algorithm] >> [scale-up] [partition] %s has space to create members. " + >> "[non terminated count] %s [max] %s" >> , >> partitionContexts[selectedIndex].getPartitionId(), >> >> partitionContexts[selectedIndex].getNonTerminatedMemberCount(), >> partitionContexts[selectedIndex].getMax())); >> } >> return partitionContexts[selectedIndex]; >> } else { >> >> return null; >> } >> } >> >> May be I am missing something here. >> >> Thanks. >> >> On Tue, Mar 3, 2015 at 10:42 PM, Lahiru Sandaruwan <lahi...@wso2.com> >> wrote: >> >>> Hi Raj, >>> >>> Earlier in 4.0.0 release, we have been using the partition index. If >>> that to be worked correctly we should persist the index for each cluster. >>> >>> IMO there is a better way to execute the round-robin method as follows, >>> >>> The intention of round robin algorithm is to distribute the members in >>> the partitions equally. Current method works as per the following example. >>> >>> Say we have 3 partitions, p1, p2, and p3 and max of each partition is 2. >>> >>> So according to the algorithm, it will select the first partition who >>> has the lowest member count. >>> >>> Iteration1: It will select p1. >>> Iteration2: It will select p2. >>> Iteration3: It will select p3. >>> Iteration4: It will select p1. >>> Iteration5: It will select p2. >>> .... >>> >>> Thanks. >>> >>> >>> >>> On Tue, Mar 3, 2015 at 10:22 PM, Rajkumar Rajaratnam <rajkum...@wso2.com >>> > wrote: >>> >>>> Hi Devs, >>>> >>>> It seems to me that there is a bug in round-robin implementation of >>>> partition algorithm. >>>> >>>> >>>> https://github.com/apache/stratos/blob/0b7734f4c9f1444d064fec93bf9ac59a5883faf2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java#L43-L64 >>>> >>>> Shouldn't it work based on current partition index? For example, if the >>>> most recent instance was spin up in partition-1, the next instance should >>>> be spin up in partition-2 and so on. According to current logic what is >>>> happening is, all the instance are spin up in partition-1. >>>> >>>> Please correct me If I am wrong. >>>> >>>> Thanks. >>>> >>>> -- >>>> Rajkumar Rajaratnam >>>> Committer & PMC Member, Apache Stratos >>>> Software Engineer, WSO2 >>>> >>>> Mobile : +94777568639 >>>> Blog : rajkumarr.com >>>> >>> >>> >>> >>> -- >>> -- >>> Lahiru Sandaruwan >>> Committer and PMC member, Apache Stratos, >>> Senior Software Engineer, >>> WSO2 Inc., http://wso2.com >>> lean.enterprise.middleware >>> >>> email: lahi...@wso2.com blog: http://lahiruwrites.blogspot.com/ >>> linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146 >>> >>> >> >> >> -- >> Rajkumar Rajaratnam >> Committer & PMC Member, Apache Stratos >> Software Engineer, WSO2 >> >> Mobile : +94777568639 >> Blog : rajkumarr.com >> > > > > -- > Rajkumar Rajaratnam > Committer & PMC Member, Apache Stratos > Software Engineer, WSO2 > > Mobile : +94777568639 > Blog : rajkumarr.com > -- -- Lahiru Sandaruwan Committer and PMC member, Apache Stratos, Senior Software Engineer, WSO2 Inc., http://wso2.com lean.enterprise.middleware email: lahi...@wso2.com blog: http://lahiruwrites.blogspot.com/ linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146