You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by dr...@apache.org on 2017/10/02 12:49:55 UTC
[04/10] brooklyn-server git commit: Delete deprecated
ImmediateDeltaChangeListener
Delete deprecated ImmediateDeltaChangeListener
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/deb722cd
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/deb722cd
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/deb722cd
Branch: refs/heads/master
Commit: deb722cd92d5be87fa5ecd7ec54145bce790d1ba
Parents: fca6f14
Author: Aled Sage <al...@gmail.com>
Authored: Tue Sep 26 13:14:11 2017 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Mon Oct 2 06:08:30 2017 +0100
----------------------------------------------------------------------
.../rebind/ImmediateDeltaChangeListener.java | 160 -------------------
1 file changed, 160 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/deb722cd/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/ImmediateDeltaChangeListener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/ImmediateDeltaChangeListener.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/ImmediateDeltaChangeListener.java
deleted file mode 100644
index 3d77f41..0000000
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/ImmediateDeltaChangeListener.java
+++ /dev/null
@@ -1,160 +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.brooklyn.core.mgmt.rebind;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.apache.brooklyn.api.catalog.CatalogItem;
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.mgmt.rebind.ChangeListener;
-import org.apache.brooklyn.api.mgmt.rebind.PersistenceExceptionHandler;
-import org.apache.brooklyn.api.mgmt.rebind.mementos.BrooklynMementoPersister;
-import org.apache.brooklyn.api.mgmt.rebind.mementos.CatalogItemMemento;
-import org.apache.brooklyn.api.mgmt.rebind.mementos.EnricherMemento;
-import org.apache.brooklyn.api.mgmt.rebind.mementos.EntityMemento;
-import org.apache.brooklyn.api.mgmt.rebind.mementos.LocationMemento;
-import org.apache.brooklyn.api.mgmt.rebind.mementos.ManagedBundleMemento;
-import org.apache.brooklyn.api.mgmt.rebind.mementos.Memento;
-import org.apache.brooklyn.api.mgmt.rebind.mementos.PolicyMemento;
-import org.apache.brooklyn.api.objs.BrooklynObject;
-import org.apache.brooklyn.api.policy.Policy;
-import org.apache.brooklyn.api.sensor.Enricher;
-import org.apache.brooklyn.api.typereg.ManagedBundle;
-import org.apache.brooklyn.core.location.internal.LocationInternal;
-import org.apache.brooklyn.core.objs.BrooklynObjectInternal;
-
-import com.google.common.collect.Maps;
-
-/**
- * Persists changes immediately. This can cause massive CPU load if entities etc are changing frequently
- * (for any serializing / file-based persister implementation).
- *
- * @author aled
- *
- * @deprecated since 0.7; unused code
- */
-@Deprecated
-public class ImmediateDeltaChangeListener implements ChangeListener {
-
- private final BrooklynMementoPersister persister;
- private final PersistenceExceptionHandler exceptionHandler;
-
- private volatile boolean running = true;
-
- public ImmediateDeltaChangeListener(BrooklynMementoPersister persister) {
- this.persister = persister;
- exceptionHandler = PersistenceExceptionHandlerImpl.builder()
- .build();
- }
-
- @Override
- public void onManaged(BrooklynObject instance) {
- onChanged(instance);
- }
-
- @Override
- public void onUnmanaged(BrooklynObject instance) {
- if (running && persister != null) {
- PersisterDeltaImpl delta = new PersisterDeltaImpl();
- if (instance instanceof Entity) {
- delta.removedEntityIds.add(instance.getId());
- } else if (instance instanceof Location) {
- delta.removedLocationIds.add(instance.getId());
- } else if (instance instanceof Policy) {
- delta.removedPolicyIds.add(instance.getId());
- } else if (instance instanceof Enricher) {
- delta.removedEnricherIds.add(instance.getId());
- } else if (instance instanceof CatalogItem) {
- delta.removedCatalogItemIds.add(instance.getId());
- } else if (instance instanceof ManagedBundle) {
- delta.removedBundleIds.add(instance.getId());
- } else {
- throw new IllegalStateException("Unexpected brooklyn type: "+instance);
- }
- persister.delta(delta, exceptionHandler);
- }
- }
-
- @Override
- public void onChanged(BrooklynObject instance) {
- if (running && persister != null) {
- PersisterDeltaImpl delta = new PersisterDeltaImpl();
- Memento memento = ((BrooklynObjectInternal)instance).getRebindSupport().getMemento();
- if (instance instanceof Entity) {
- delta.entities.add((EntityMemento) memento);
- addEntityAdjuncts((Entity)instance, delta);
- } else if (instance instanceof Location) {
- delta.locations.add((LocationMemento) memento);
- } else if (instance instanceof Policy) {
- delta.policies.add((PolicyMemento) memento);
- } else if (instance instanceof Enricher) {
- delta.enrichers.add((EnricherMemento) memento);
- } else if (instance instanceof CatalogItem) {
- delta.catalogItems.add((CatalogItemMemento) instance);
- } else if (instance instanceof ManagedBundle) {
- delta.bundles.add((ManagedBundleMemento) memento);
- } else {
- throw new IllegalStateException("Unexpected brooklyn type: "+instance);
- }
- persister.delta(delta, exceptionHandler);
- }
- }
-
- private void addEntityAdjuncts(Entity entity, PersisterDeltaImpl delta) {
- // FIXME How to let the policy/location tell us about changes?
- // Don't do this every time!
- Map<String, LocationMemento> locations = Maps.newLinkedHashMap();
- for (Location location : entity.getLocations()) {
- if (!locations.containsKey(location.getId())) {
- Collection<Location> locsInHierachy = TreeUtils.findLocationsInHierarchy(location);
-
- /*
- * Need to guarantee "happens before", with any thread that has written
- * fields of these locations. In particular, saw failures where SshMachineLocation
- * had null address field. Our hypothesis is that the location had its fields set,
- * and then set its parent (which goes through a synchronized in AbstractLocation.addChild),
- * but that this memento-generating code did not go through any synchronization or volatiles.
- */
- synchronized (new Object()) {}
-
- for (Location locInHierarchy : locsInHierachy) {
- locations.put(locInHierarchy.getId(), ((LocationInternal)locInHierarchy).getRebindSupport().getMemento());
- }
- }
- }
- delta.locations = locations.values();
-
- // FIXME Not including policies, because lots of places regiser anonymous inner class policies
- // (e.g. AbstractController registering a AbstractMembershipTrackingPolicy)
- // Also, the entity constructor often re-creates the policy.
- // Also see MementosGenerator.newEntityMementoBuilder()
-// List<PolicyMemento> policies = Lists.newArrayList();
-// for (Policy policy : entity.getPolicies()) {
-// policies.add(policy.getRebindSupport().getMemento());
-// }
-// delta.policies = policies;
-
- /*
- * Make the writes to the mementos visible to other threads.
- */
- synchronized (new Object()) {}
- }
-}