Github user aledsage commented on a diff in the pull request:

    https://github.com/apache/brooklyn-server/pull/879#discussion_r149314895
  
    --- Diff: 
core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
 ---
    @@ -536,8 +538,52 @@ public BrooklynObject lookup(String id) {
             result = getLocationManager().getLocation(id);
             if (result!=null && type.isInstance(result)) return (T)result;
     
    -        // TODO policies, enrichers, feeds; bundles?
    -        return null;
    +        return lookup((o) -> { return type.isInstance(o) && 
Objects.equal(id, o.getId()); });
    --- End diff --
    
    `lookupAll` is inefficient, because we don't have indexes for 
policies/enrichers/feeds.
    
    You could guard this call, only doing it if 
`!(Entity.class.isAssignableFrom(type) || 
Location.class.isAssignableFrom(type))`.
    
    Longer term, we should see how often this is called with 1000s of entities 
- we'll make immutable copies of the various collections each time, iterating 
over them. But we can defer that, assuming it's not too bad just now?!


---

Reply via email to