fix for InventoryManager.mergeUnknownResources

Jay Shaughnessy jshaughn at redhat.com
Tue Nov 2 12:52:35 UTC 2010


If a user disables a plugin that currently supports  inventory then the 
agent responsible for that inventory will go into an avail report 
sending loop.   It's an easy fix to backport to the CP branch although 
the workarounds are not terrible, either re-enable the plugin or 
uninventory the offending resources.

On 11/1/2010 11:08 PM, Joseph Marques wrote:
>    Mazz, good catch.
>
> What is the next effect of this fix?  I notice that size of the
> 'unknownResourceIds' collection is, in part, responsible for a
> subsequent availability check and resource service scan.  When the
> collection size is incorrect - in the context of the larger inventory
> synchronization process - what would the net effect of the previous
> logic error be?  Specifically, under what conditions would it trigger an
> unnecessary availability check and service scan (false positive)?  Under
> what conditions would it miss them (false negative)?  I'm satisfied by
> inspection that this fix is correct, but I'd still like to know what
> users (who lack the fix) would experience in terms of inventory
> synchronization.  On that note, shouldn't this be pushed to the latest
> cumulative patch branch?  Do you think this requires a BZ to track?
>
> On 10/29/2010 04:57 PM, mazz wrote:
>>    modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java |  136 +++++-----
>>    1 file changed, 73 insertions(+), 63 deletions(-)
>>
>> New commits:
>> commit 7155896be74b82b2a9be7b1358103a4e2182fbcf
>> Author: John Mazzitelli<mazz at redhat.com>
>> Date:   Fri Oct 29 16:52:44 2010 -0400
>>
>>       we need to remove the disabled resource's IDs from the callers set - removing resources from our internal resource set is useless
>>
>> diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
>> index 4c3b345..e483bb7 100644
>> --- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
>> +++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
>> @@ -2449,7 +2449,7 @@ public class InventoryManager extends AgentService implements ContainerService,
>>                Set<Resource>   unknownResources = configuration.getServerServices().getDiscoveryServerService()
>>                    .getResources(unknownResourceIds, true);
>>
>> -            Set<Resource>   toBeIgnored = new HashSet<Resource>();
>> +            Set<Integer>   toBeIgnored = new HashSet<Integer>();
>>
>>                for (Resource unknownResource : unknownResources) {
>>                    ResourceType resourceType = pmm.getType(unknownResource.getResourceType());
>> @@ -2457,7 +2457,7 @@ public class InventoryManager extends AgentService implements ContainerService,
>>                        mergeResource(unknownResource);
>>                        syncSchedulesRecursively(unknownResource);
>>                    } else {
>> -                    toBeIgnored.add(unknownResource);
>> +                    toBeIgnored.add(unknownResource.getId());
>>                        if (log.isDebugEnabled()) {
>>                            log.debug("During an inventory sync, the server gave us resource [" + unknownResource
>>                                + "] but its type is disabled in the agent; ignoring it");
>> @@ -2465,7 +2465,7 @@ public class InventoryManager extends AgentService implements ContainerService,
>>                    }
>>                }
>>
>> -            unknownResources.removeAll(toBeIgnored);
>> +            unknownResourceIds.removeAll(toBeIgnored);
>>            }
>>            return;
>>        }
> _______________________________________________
> rhq-devel mailing list
> rhq-devel at lists.fedorahosted.org
> https://fedorahosted.org/mailman/listinfo/rhq-devel
>


More information about the rhq-devel mailing list