You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2015/12/09 18:06:40 UTC
[15/21] stratos git commit: Move acquireWriteLock call in
terminateInstance method to a separate try-finally block in-order to avoid
releasing locks which are not taken
Move acquireWriteLock call in terminateInstance method to a separate try-finally block in-order to avoid releasing locks which are not taken
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/cbde779f
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/cbde779f
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/cbde779f
Branch: refs/heads/stratos-4.1.x
Commit: cbde779f99690d72edddfc6360fafad445cbcb13
Parents: 6ae0185
Author: Akila Perera <ra...@gmail.com>
Authored: Mon Dec 7 16:04:38 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Wed Dec 9 18:41:33 2015 +0530
----------------------------------------------------------------------
.../impl/CloudControllerServiceImpl.java | 56 ++++++++++----------
1 file changed, 29 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/cbde779f/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index 6a1303a..d25ab52 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -645,41 +645,43 @@ public class CloudControllerServiceImpl implements CloudControllerService {
throw new InvalidMemberException(msg);
}
- // check if status == active, if true, then this is a termination on member faulty
- TopologyHolder.acquireWriteLock();
- Topology topology = TopologyHolder.getTopology();
- org.apache.stratos.messaging.domain.topology.Service service = topology
- .getService(memberContext.getCartridgeType());
-
- if (service != null) {
- Cluster cluster = service.getCluster(memberContext.getClusterId());
- if (cluster != null) {
- Member member = cluster.getMember(memberId);
- if (member != null) {
-
- // check if ready to shutdown member is expired and send
- // member terminated if it is.
- if (isMemberExpired(member, memberContext.getObsoleteInitTime(),
- memberContext.getObsoleteExpiryTime())) {
- if (log.isInfoEnabled()) {
- log.info(String.format(
- "Member pending termination in ReadyToShutdown state exceeded expiry time. "
- + "This member has to be manually deleted: %s",
- memberContext.getMemberId()));
- }
+ try {
+ // check if status == active, if true, then this is a termination on member faulty
+ TopologyHolder.acquireWriteLock();
+ Topology topology = TopologyHolder.getTopology();
+ org.apache.stratos.messaging.domain.topology.Service service = topology
+ .getService(memberContext.getCartridgeType());
+
+ if (service != null) {
+ Cluster cluster = service.getCluster(memberContext.getClusterId());
+ if (cluster != null) {
+ Member member = cluster.getMember(memberId);
+ if (member != null) {
+
+ // check if ready to shutdown member is expired and send
+ // member terminated if it is.
+ if (isMemberExpired(member, memberContext.getObsoleteInitTime(),
+ memberContext.getObsoleteExpiryTime())) {
+ if (log.isInfoEnabled()) {
+ log.info(String.format(
+ "Member pending termination in ReadyToShutdown state exceeded expiry time. "
+ + "This member has to be manually deleted: %s",
+ memberContext.getMemberId()));
+ }
- CloudControllerServiceUtil.executeMemberTerminationPostProcess(memberContext);
- return false;
+ CloudControllerServiceUtil.executeMemberTerminationPostProcess(memberContext);
+ return false;
+ }
}
}
}
+ executorService.execute(new InstanceTerminator(memberContext));
+ } finally {
+ TopologyHolder.releaseWriteLock();
}
- executorService.execute(new InstanceTerminator(memberContext));
} catch (Exception e) {
String message = "Could not terminate instance: [member-id] " + memberId;
throw new CloudControllerException(message, e);
- } finally {
- TopologyHolder.releaseWriteLock();
}
return true;
}