You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/07/29 21:32:06 UTC
[11/31] git commit: fix memory leak where peeked-locations are kept
by their parents
fix memory leak where peeked-locations are kept by their parents
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/2ecb9687
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/2ecb9687
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/2ecb9687
Branch: refs/heads/master
Commit: 2ecb9687df779864b1bdd51ddc003baed2d8b98e
Parents: 3411881
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Jul 23 13:06:25 2014 -0700
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue Jul 29 10:42:07 2014 -0400
----------------------------------------------------------------------
.../main/java/brooklyn/location/basic/AbstractLocation.java | 2 +-
.../location/basic/FixedListMachineProvisioningLocation.java | 2 +-
.../brooklyn/management/internal/LocalLocationManager.java | 7 +++++++
3 files changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ecb9687/core/src/main/java/brooklyn/location/basic/AbstractLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/basic/AbstractLocation.java b/core/src/main/java/brooklyn/location/basic/AbstractLocation.java
index d468622..eb46be7 100644
--- a/core/src/main/java/brooklyn/location/basic/AbstractLocation.java
+++ b/core/src/main/java/brooklyn/location/basic/AbstractLocation.java
@@ -528,7 +528,7 @@ public abstract class AbstractLocation implements LocationInternal, HasHostGeoIn
child.setParent(this);
}
- protected boolean removeChild(Location child) {
+ public boolean removeChild(Location child) {
boolean removed;
synchronized (children) {
removed = children.remove(child);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ecb9687/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java b/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
index 523eb6d..242319b 100644
--- a/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
+++ b/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
@@ -184,7 +184,7 @@ implements MachineProvisioningLocation<T>, Closeable {
}
@Override
- protected boolean removeChild(Location child) {
+ public boolean removeChild(Location child) {
if (inUse.contains(child)) {
throw new IllegalStateException("Child location "+child+" is in use; cannot remove from "+this);
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ecb9687/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java b/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
index 3038257..8ce4dbe 100644
--- a/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
+++ b/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
@@ -88,6 +88,13 @@ public class LocalLocationManager implements LocationManager {
T loc = locationFactory.createLocation(spec);
if (!createUnmanaged) {
manage(loc);
+ } else {
+ // remove references
+ Location parent = loc.getParent();
+ if (parent!=null) {
+ ((AbstractLocation)parent).removeChild(loc);
+ }
+ preRegisteredLocationsById.remove(loc.getId());
}
return loc;