Repository: stratos Updated Branches: refs/heads/master a2c62001f -> 7d4abd0bc
Fixing STRATOS-893 Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/27f2a6d3 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/27f2a6d3 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/27f2a6d3 Branch: refs/heads/master Commit: 27f2a6d3c9fde825eca2a13f553c6c774f9dc5f7 Parents: 8105f27 Author: R-Rajkumar <[email protected]> Authored: Tue Oct 14 19:07:20 2014 +0530 Committer: R-Rajkumar <[email protected]> Committed: Tue Oct 14 19:07:20 2014 +0530 ---------------------------------------------------------------------- .../monitor/ClusterMonitorFactory.java | 28 ++++++++++++++++++++ .../controller/topology/TopologyBuilder.java | 3 ++- .../topology/TopologyEventPublisher.java | 4 ++- .../conf/LoadBalancerConfiguration.java | 4 ++- .../messaging/domain/topology/Member.java | 13 ++++++--- .../event/topology/InstanceSpawnedEvent.java | 8 +++++- .../InstanceSpawnedMessageProcessor.java | 2 +- 7 files changed, 54 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java index 9724690..d3932ea 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java @@ -142,15 +142,24 @@ public class ClusterMonitorFactory { MemberContext memberContext = new MemberContext(); memberContext.setClusterId(member.getClusterId()); memberContext.setMemberId(memberId); + memberContext.setInitTime(member.getInitTime()); memberContext.setPartition(partition); memberContext.setProperties(convertMemberPropsToMemberContextProps(member.getProperties())); if (MemberStatus.Activated.equals(member.getStatus())) { + if (log.isDebugEnabled()) { + String msg = String.format("Active member loaded from topology and added to active member list, %s", member.toString()); + log.debug(msg); + } partitionContext.addActiveMember(memberContext); // networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1); // partitionContext.incrementCurrentActiveMemberCount(1); } else if (MemberStatus.Created.equals(member.getStatus()) || MemberStatus.Starting.equals(member.getStatus())) { + if (log.isDebugEnabled()) { + String msg = String.format("Pending member loaded from topology and added to pending member list, %s", member.toString()); + log.debug(msg); + } partitionContext.addPendingMember(memberContext); // networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1); @@ -273,13 +282,22 @@ public class ClusterMonitorFactory { memberContext.setClusterId(member.getClusterId()); memberContext.setMemberId(memberId); memberContext.setPartition(partition); + memberContext.setInitTime(member.getInitTime()); if (MemberStatus.Activated.equals(member.getStatus())) { + if (log.isDebugEnabled()) { + String msg = String.format("Active member loaded from topology and added to active member list, %s", member.toString()); + log.debug(msg); + } partitionContext.addActiveMember(memberContext); // networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1); // partitionContext.incrementCurrentActiveMemberCount(1); } else if (MemberStatus.Created.equals(member.getStatus()) || MemberStatus.Starting.equals(member.getStatus())) { + if (log.isDebugEnabled()) { + String msg = String.format("Pending member loaded from topology and added to pending member list, %s", member.toString()); + log.debug(msg); + } partitionContext.addPendingMember(memberContext); // networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1); } else if (MemberStatus.Suspended.equals(member.getStatus())) { @@ -384,17 +402,27 @@ public class ClusterMonitorFactory { MemberContext memberContext = new MemberContext(); memberContext.setMemberId(memberId); memberContext.setClusterId(clusterId); + memberContext.setInitTime(member.getInitTime()); // if there is at least one member in the topology, that means service has been created already // this is to avoid calling startContainer() method again kubernetesClusterCtxt.setServiceClusterCreated(true); if (MemberStatus.Activated.equals(member.getStatus())) { + if (log.isDebugEnabled()) { + String msg = String.format("Active member loaded from topology and added to active member list, %s", member.toString()); + log.debug(msg); + } dockerClusterMonitor.getKubernetesClusterCtxt().addActiveMember(memberContext); } else if (MemberStatus.Created.equals(member.getStatus()) || MemberStatus.Starting.equals(member.getStatus())) { + if (log.isDebugEnabled()) { + String msg = String.format("Pending member loaded from topology and added to pending member list, %s", member.toString()); + log.debug(msg); + } dockerClusterMonitor.getKubernetesClusterCtxt().addPendingMember(memberContext); } + kubernetesClusterCtxt.addMemberStatsContext(new MemberStatsContext(memberId)); if (log.isInfoEnabled()) { log.info(String.format("Member stat context has been added: [member] %s", memberId)); http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java index 2c7b77b..2b91e46 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java @@ -240,6 +240,7 @@ public class TopologyBuilder { String memberId = context.getMemberId(); String networkPartitionId = context.getNetworkPartitionId(); String lbClusterId = context.getLbClusterId(); + long initTime = context.getInitTime(); if (cluster.memberExists(memberId)) { log.warn(String.format("Member %s already exists", memberId)); @@ -249,7 +250,7 @@ public class TopologyBuilder { try { TopologyManager.acquireWriteLock(); Member member = new Member(serviceName, clusterId, - networkPartitionId, partitionId, memberId); + networkPartitionId, partitionId, memberId, initTime); member.setStatus(MemberStatus.Created); member.setMemberIp(privateIp); member.setLbClusterId(lbClusterId); http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java index db3059d..4a48a13 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java @@ -144,9 +144,11 @@ public class TopologyEventPublisher { String clusterId, String networkPartitionId, String partitionId, String memberId, String lbClusterId, String publicIp, String privateIp, MemberContext context) { + + long initTime = context.getInitTime(); InstanceSpawnedEvent instanceSpawnedEvent = new InstanceSpawnedEvent( serviceName, clusterId, networkPartitionId, partitionId, - memberId); + memberId, initTime); instanceSpawnedEvent.setLbClusterId(lbClusterId); instanceSpawnedEvent.setMemberIp(privateIp); instanceSpawnedEvent.setMemberPublicIp(publicIp); http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java index 3c6c5d1..e6589fa 100644 --- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java +++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java @@ -470,7 +470,9 @@ public class LoadBalancerConfiguration { for (Node memberNode : membersNode.getChildNodes()) { String memberId = memberNode.getName(); - Member member = new Member(cluster.getServiceName(), cluster.getClusterId(), Constants.STATIC_NETWORK_PARTITION, Constants.STATIC_PARTITION, memberId); + // we are making it as 1 because we are not using this for static loadbalancer configuration + long initTime = -1; + Member member = new Member(cluster.getServiceName(), cluster.getClusterId(), Constants.STATIC_NETWORK_PARTITION, Constants.STATIC_PARTITION, memberId, initTime); String ip = memberNode.getProperty(Constants.CONF_PROPERTY_IP); validateRequiredPropertyInNode(Constants.CONF_PROPERTY_IP, ip, String.format("member %s", memberId)); http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java index c3d9e79..70872c5 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java @@ -39,6 +39,8 @@ public class Member implements Serializable { private final String networkPartitionId; private final String partitionId; private final String memberId; + // member initiated time + private final long initTime; // Key: Port.proxy @XmlJavaTypeAdapter(MapAdapter.class) private final Map<Integer, Port> portMap; @@ -49,13 +51,14 @@ public class Member implements Serializable { private Properties properties; private String lbClusterId; - public Member(String serviceName, String clusterId, String networkPartitionId, String partitionId, String memberId) { + public Member(String serviceName, String clusterId, String networkPartitionId, String partitionId, String memberId, long initTime) { this.serviceName = serviceName; this.clusterId = clusterId; this.networkPartitionId = networkPartitionId; this.partitionId = partitionId; this.memberId = memberId; this.portMap = new HashMap<Integer, Port>(); + this.initTime = initTime; } public String getServiceName() { @@ -69,7 +72,11 @@ public class Member implements Serializable { public String getMemberId() { return memberId; } - + + public long getInitTime() { + return initTime; + } + public MemberStatus getStatus() { return status; } @@ -154,7 +161,7 @@ public class Member implements Serializable { @Override public String toString() { return "Member [serviceName=" + serviceName + ", clusterId=" + clusterId + ", networkPartitionId=" - + networkPartitionId + ", partitionId=" + partitionId + ", memberId=" + memberId + ", portMap=" + + networkPartitionId + ", partitionId=" + partitionId + ", memberId=" + memberId + ", initTime=" + initTime + ", portMap=" + portMap + ", memberPublicIp=" + memberPublicIp + ", status=" + status + ", memberIp=" + memberIp + ", properties=" + properties + ", lbClusterId=" + lbClusterId + "]"; } http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/InstanceSpawnedEvent.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/InstanceSpawnedEvent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/InstanceSpawnedEvent.java index 3e99a30..bcb1da2 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/InstanceSpawnedEvent.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/InstanceSpawnedEvent.java @@ -34,18 +34,20 @@ public class InstanceSpawnedEvent extends TopologyEvent implements Serializable private final String networkPartitionId; private final String partitionId; private final String memberId; + private final long initTime; private String lbClusterId; private String memberPublicIp; private String memberIp; private Properties properties; - public InstanceSpawnedEvent(String serviceName, String clusterId, String networkPartitionId, String partitionId, String memberId) { + public InstanceSpawnedEvent(String serviceName, String clusterId, String networkPartitionId, String partitionId, String memberId, long initTime) { this.serviceName = serviceName; this.clusterId = clusterId; this.networkPartitionId = networkPartitionId; this.partitionId = partitionId; this.memberId = memberId; + this.initTime = initTime; } public String getServiceName() { @@ -67,6 +69,10 @@ public class InstanceSpawnedEvent extends TopologyEvent implements Serializable public String getMemberId() { return memberId; } + + public long getInitTime() { + return initTime; + } public String getLbClusterId() { return lbClusterId; http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java index db7cc20..eec6474 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java @@ -109,7 +109,7 @@ public class InstanceSpawnedMessageProcessor extends MessageProcessor { } else { // Apply changes to the topology - Member member = new Member(event.getServiceName(), event.getClusterId(), event.getNetworkPartitionId(), event.getPartitionId(), event.getMemberId()); + Member member = new Member(event.getServiceName(), event.getClusterId(), event.getNetworkPartitionId(), event.getPartitionId(), event.getMemberId(), event.getInitTime()); member.setStatus(MemberStatus.Created); member.setMemberPublicIp(event.getMemberPublicIp()); member.setMemberIp(event.getMemberIp());
