Repository: stratos Updated Branches: refs/heads/master c166bc3d6 -> 67c3d8dd0
Fixing requests in flight publishing issue in mock iaas Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/67c3d8dd Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/67c3d8dd Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/67c3d8dd Branch: refs/heads/master Commit: 67c3d8dd0fbe0065b7cc01f5ae44a9b64c2f1b48 Parents: c166bc3 Author: Imesh Gunaratne <[email protected]> Authored: Fri May 15 10:25:32 2015 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Fri May 15 10:27:18 2015 +0530 ---------------------------------------------------------------------- .../common/beans/application/GroupBean.java | 67 ------------ .../beans/application/GroupReferenceBean.java | 105 ------------------- .../beans/cartridge/CartridgeGroupBean.java | 69 ++++++++++++ .../cartridge/CartridgeGroupReferenceBean.java | 103 ++++++++++++++++++ .../mock/iaas/config/MockIaasConfigParser.java | 6 +- .../iaas/services/impl/MockScalingFactor.java | 2 +- .../iaas/statistics/MockHealthStatistics.java | 12 +-- .../publisher/MockHealthStatisticsNotifier.java | 28 ++++- .../src/test/resources/mock-iaas.xml | 4 +- .../distribution/src/main/conf/mock-iaas.xml | 4 +- .../src/test/resources/mock-iaas.xml | 4 +- 11 files changed, 214 insertions(+), 190 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/GroupBean.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/GroupBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/GroupBean.java deleted file mode 100644 index f4fccbe..0000000 --- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/GroupBean.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.stratos.common.beans.application; - -import javax.xml.bind.annotation.XmlRootElement; -import java.io.Serializable; -import java.util.List; - -@XmlRootElement(name = "groups") -public class GroupBean implements Serializable { - - private static final long serialVersionUID = 4696832597498594267L; - - private String name; - private List<GroupBean> groups; - private List<String> cartridges; - private DependencyBean dependencies; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public List<String> getCartridges() { - return cartridges; - } - - public void setCartridges(List<String> cartridges) { - this.cartridges = cartridges; - } - - public DependencyBean getDependencies() { - return dependencies; - } - - public void setDependencies(DependencyBean dependencies) { - this.dependencies = dependencies; - } - - public List<GroupBean> getGroups() { - return groups; - } - - public void setGroups(List<GroupBean> groups) { - this.groups = groups; - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/GroupReferenceBean.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/GroupReferenceBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/GroupReferenceBean.java deleted file mode 100644 index c48c214..0000000 --- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/GroupReferenceBean.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.stratos.common.beans.application; - -import org.apache.stratos.common.beans.cartridge.CartridgeReferenceBean; - -import javax.xml.bind.annotation.XmlRootElement; -import java.io.Serializable; -import java.util.List; - -@XmlRootElement(name = "groups") -public class GroupReferenceBean implements Serializable { - - private static final long serialVersionUID = 7261380706841894892L; - - private String name; - private String alias; - private int groupMinInstances; - private int groupMaxInstances; - private boolean isGroupScalingEnabled; - private String deploymentPolicy; - private List<CartridgeReferenceBean> cartridges; - private List<GroupReferenceBean> groups; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getAlias() { - return alias; - } - - public void setAlias(String alias) { - this.alias = alias; - } - - public int getGroupMinInstances() { - return groupMinInstances; - } - - public void setGroupMinInstances(int groupMinInstances) { - this.groupMinInstances = groupMinInstances; - } - - public int getGroupMaxInstances() { - return groupMaxInstances; - } - - public void setGroupMaxInstances(int groupMaxInstances) { - this.groupMaxInstances = groupMaxInstances; - } - - public boolean isGroupScalingEnabled() { - return isGroupScalingEnabled; - } - - public void setGroupScalingEnabled(boolean isGroupScalingEnabled) { - this.isGroupScalingEnabled = isGroupScalingEnabled; - } - - public List<CartridgeReferenceBean> getCartridges() { - return cartridges; - } - - public void setCartridges(List<CartridgeReferenceBean> cartridges) { - this.cartridges = cartridges; - } - - public List<GroupReferenceBean> getGroups() { - return groups; - } - - public void setGroups(List<GroupReferenceBean> groups) { - this.groups = groups; - } - - public String getDeploymentPolicy() { - return deploymentPolicy; - } - - public void setDeploymentPolicy(String deploymentPolicy) { - this.deploymentPolicy = deploymentPolicy; - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupBean.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupBean.java new file mode 100644 index 0000000..3fe85df --- /dev/null +++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupBean.java @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.stratos.common.beans.cartridge; + +import org.apache.stratos.common.beans.application.DependencyBean; + +import javax.xml.bind.annotation.XmlRootElement; +import java.io.Serializable; +import java.util.List; + +@XmlRootElement(name = "groups") +public class CartridgeGroupBean implements Serializable { + + private static final long serialVersionUID = 4696832597498594267L; + + private String name; + private List<CartridgeGroupBean> groups; + private List<String> cartridges; + private DependencyBean dependencies; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List<String> getCartridges() { + return cartridges; + } + + public void setCartridges(List<String> cartridges) { + this.cartridges = cartridges; + } + + public DependencyBean getDependencies() { + return dependencies; + } + + public void setDependencies(DependencyBean dependencies) { + this.dependencies = dependencies; + } + + public List<CartridgeGroupBean> getGroups() { + return groups; + } + + public void setGroups(List<CartridgeGroupBean> groups) { + this.groups = groups; + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java new file mode 100644 index 0000000..6918b11 --- /dev/null +++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.stratos.common.beans.cartridge; + +import javax.xml.bind.annotation.XmlRootElement; +import java.io.Serializable; +import java.util.List; + +@XmlRootElement(name = "groups") +public class CartridgeGroupReferenceBean implements Serializable { + + private static final long serialVersionUID = 7261380706841894892L; + + private String name; + private String alias; + private int groupMinInstances; + private int groupMaxInstances; + private boolean isGroupScalingEnabled; + private String deploymentPolicy; + private List<CartridgeReferenceBean> cartridges; + private List<CartridgeGroupReferenceBean> groups; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getGroupMinInstances() { + return groupMinInstances; + } + + public void setGroupMinInstances(int groupMinInstances) { + this.groupMinInstances = groupMinInstances; + } + + public int getGroupMaxInstances() { + return groupMaxInstances; + } + + public void setGroupMaxInstances(int groupMaxInstances) { + this.groupMaxInstances = groupMaxInstances; + } + + public boolean isGroupScalingEnabled() { + return isGroupScalingEnabled; + } + + public void setGroupScalingEnabled(boolean isGroupScalingEnabled) { + this.isGroupScalingEnabled = isGroupScalingEnabled; + } + + public List<CartridgeReferenceBean> getCartridges() { + return cartridges; + } + + public void setCartridges(List<CartridgeReferenceBean> cartridges) { + this.cartridges = cartridges; + } + + public List<CartridgeGroupReferenceBean> getGroups() { + return groups; + } + + public void setGroups(List<CartridgeGroupReferenceBean> groups) { + this.groups = groups; + } + + public String getDeploymentPolicy() { + return deploymentPolicy; + } + + public void setDeploymentPolicy(String deploymentPolicy) { + this.deploymentPolicy = deploymentPolicy; + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/config/MockIaasConfigParser.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/config/MockIaasConfigParser.java b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/config/MockIaasConfigParser.java index 8209d4b..3f16b5a 100644 --- a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/config/MockIaasConfigParser.java +++ b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/config/MockIaasConfigParser.java @@ -163,10 +163,10 @@ public class MockIaasConfigParser { return MockScalingFactor.MemoryConsumption; } else if ("load-average".equals(scalingFactorStr)) { return MockScalingFactor.LoadAverage; - } else if ("request-in-flight".equals(scalingFactorStr)) { - return MockScalingFactor.RequestInFlight; + } else if ("requests-in-flight".equals(scalingFactorStr)) { + return MockScalingFactor.RequestsInFlight; } - throw new RuntimeException("An unknown autoscaling factor found: " + scalingFactorStr); + throw new RuntimeException("An unknown scaling factor found: " + scalingFactorStr); } /** http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/services/impl/MockScalingFactor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/services/impl/MockScalingFactor.java b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/services/impl/MockScalingFactor.java index 554d34f..e16b7b4 100644 --- a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/services/impl/MockScalingFactor.java +++ b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/services/impl/MockScalingFactor.java @@ -23,5 +23,5 @@ package org.apache.stratos.mock.iaas.services.impl; * Mock scaling factor enumeration */ public enum MockScalingFactor { - MemoryConsumption, LoadAverage, RequestInFlight + MemoryConsumption, LoadAverage, RequestsInFlight } http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/statistics/MockHealthStatistics.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/statistics/MockHealthStatistics.java b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/statistics/MockHealthStatistics.java index 8937a4d..0acfd96 100644 --- a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/statistics/MockHealthStatistics.java +++ b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/statistics/MockHealthStatistics.java @@ -53,7 +53,7 @@ public class MockHealthStatistics { } /** - * Add statistics value for a cartridge type, autoscaling factor + * Add statistics value for a cartridge type, scaling factor * * @param cartridgeType * @param scalingFactor @@ -73,7 +73,7 @@ public class MockHealthStatistics { } /** - * Returns current statistics of the given cartridge type, autoscaling factor + * Returns current statistics of the given cartridge type, scaling factor * * @param cartridgeType * @param scalingFactor @@ -93,7 +93,7 @@ public class MockHealthStatistics { } /** - * Remove statistics found for the cartridge type, autoscaling factor + * Remove statistics found for the cartridge type, scaling factor * * @param cartridgeType * @param scalingFactor @@ -108,7 +108,7 @@ public class MockHealthStatistics { } /** - * Find default statistics value of the given autoscaling factor + * Find default statistics value of the given scaling factor * * @param scalingFactor * @return @@ -118,9 +118,9 @@ public class MockHealthStatistics { return DEFAULT_MEMORY_CONSUMPTION; } else if (scalingFactor == MockScalingFactor.LoadAverage) { return DEFAULT_LOAD_AVERAGE; - } else if (scalingFactor == MockScalingFactor.RequestInFlight) { + } else if (scalingFactor == MockScalingFactor.RequestsInFlight) { return DEFAULT_REQUESTS_IN_FLIGHT; } - throw new RuntimeException("An unknown autoscaling factor found: " + scalingFactor); + throw new RuntimeException("An unknown scaling factor found: " + scalingFactor); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/statistics/publisher/MockHealthStatisticsNotifier.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/statistics/publisher/MockHealthStatisticsNotifier.java b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/statistics/publisher/MockHealthStatisticsNotifier.java index b9e081c..9ac5d14 100644 --- a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/statistics/publisher/MockHealthStatisticsNotifier.java +++ b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/statistics/publisher/MockHealthStatisticsNotifier.java @@ -37,6 +37,7 @@ public class MockHealthStatisticsNotifier implements Runnable { public static final String MEMORY_CONSUMPTION = "memory_consumption"; public static final String LOAD_AVERAGE = "load_average"; + public static final String REQUESTS_IN_FLIGHT = "in_flight_requests"; private final MockInstanceContext mockMemberContext; private final HealthStatisticsPublisher statsPublisher; @@ -77,7 +78,7 @@ public class MockHealthStatisticsNotifier implements Runnable { } catch (NoStatisticsFoundException ignore) { } catch (Exception e) { if (log.isErrorEnabled()) { - log.error("Could not publish health statistics", e); + log.error("Could not publish health statistic: memory consumption", e); } } @@ -101,7 +102,30 @@ public class MockHealthStatisticsNotifier implements Runnable { } catch (NoStatisticsFoundException ignore) { } catch (Exception e) { if (log.isErrorEnabled()) { - log.error("Could not publish health statistics", e); + log.error("Could not publish health statistic: load average", e); + } + } + + try { + double requestsInFlight = MockHealthStatistics.getInstance().getStatistics( + mockMemberContext.getServiceName(), MockScalingFactor.RequestsInFlight); + if (log.isDebugEnabled()) { + log.debug(String.format("Publishing requests in flight: [member-id] %s [value] %f", + mockMemberContext.getMemberId(), requestsInFlight)); + } + statsPublisher.publish( + mockMemberContext.getClusterId(), + mockMemberContext.getClusterInstanceId(), + mockMemberContext.getNetworkPartitionId(), + mockMemberContext.getMemberId(), + mockMemberContext.getPartitionId(), + REQUESTS_IN_FLIGHT, + requestsInFlight + ); + } catch (NoStatisticsFoundException ignore) { + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Could not publish health statistic: requests in flight", e); } } } http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/components/org.apache.stratos.mock.iaas/src/test/resources/mock-iaas.xml ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.mock.iaas/src/test/resources/mock-iaas.xml b/components/org.apache.stratos.mock.iaas/src/test/resources/mock-iaas.xml index 6828e0c..24e423c 100644 --- a/components/org.apache.stratos.mock.iaas/src/test/resources/mock-iaas.xml +++ b/components/org.apache.stratos.mock.iaas/src/test/resources/mock-iaas.xml @@ -20,7 +20,7 @@ <mock-iaas enabled="true"> <health-statistics> <cartridge type="tomcat"> - <!-- factor:memory-consumption|load-average|request-in-flight--> + <!-- factor:memory-consumption|load-average|requests-in-flight--> <!-- mode:loop|continue|stop --> <!-- Mode defines the action needs to be taken after the last sample value: loop: start from beginning @@ -40,7 +40,7 @@ </pattern> </cartridge> <cartridge type="php"> - <!-- factor:memory-consumption|load-average|request-in-flight--> + <!-- factor:memory-consumption|load-average|requests-in-flight--> <!-- mode:loop|continue|stop --> <!-- Mode defines the action needs to be taken after the last sample value: loop: start from beginning http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/products/stratos/modules/distribution/src/main/conf/mock-iaas.xml ---------------------------------------------------------------------- diff --git a/products/stratos/modules/distribution/src/main/conf/mock-iaas.xml b/products/stratos/modules/distribution/src/main/conf/mock-iaas.xml index 6828e0c..24e423c 100644 --- a/products/stratos/modules/distribution/src/main/conf/mock-iaas.xml +++ b/products/stratos/modules/distribution/src/main/conf/mock-iaas.xml @@ -20,7 +20,7 @@ <mock-iaas enabled="true"> <health-statistics> <cartridge type="tomcat"> - <!-- factor:memory-consumption|load-average|request-in-flight--> + <!-- factor:memory-consumption|load-average|requests-in-flight--> <!-- mode:loop|continue|stop --> <!-- Mode defines the action needs to be taken after the last sample value: loop: start from beginning @@ -40,7 +40,7 @@ </pattern> </cartridge> <cartridge type="php"> - <!-- factor:memory-consumption|load-average|request-in-flight--> + <!-- factor:memory-consumption|load-average|requests-in-flight--> <!-- mode:loop|continue|stop --> <!-- Mode defines the action needs to be taken after the last sample value: loop: start from beginning http://git-wip-us.apache.org/repos/asf/stratos/blob/67c3d8dd/products/stratos/modules/integration/src/test/resources/mock-iaas.xml ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/resources/mock-iaas.xml b/products/stratos/modules/integration/src/test/resources/mock-iaas.xml index 6828e0c..24e423c 100644 --- a/products/stratos/modules/integration/src/test/resources/mock-iaas.xml +++ b/products/stratos/modules/integration/src/test/resources/mock-iaas.xml @@ -20,7 +20,7 @@ <mock-iaas enabled="true"> <health-statistics> <cartridge type="tomcat"> - <!-- factor:memory-consumption|load-average|request-in-flight--> + <!-- factor:memory-consumption|load-average|requests-in-flight--> <!-- mode:loop|continue|stop --> <!-- Mode defines the action needs to be taken after the last sample value: loop: start from beginning @@ -40,7 +40,7 @@ </pattern> </cartridge> <cartridge type="php"> - <!-- factor:memory-consumption|load-average|request-in-flight--> + <!-- factor:memory-consumption|load-average|requests-in-flight--> <!-- mode:loop|continue|stop --> <!-- Mode defines the action needs to be taken after the last sample value: loop: start from beginning
