On 02/29/2012 05:38 PM, Cliff Perry wrote:
> On 02/29/2012 11:05 AM, Johannes Renner wrote:
>> Hello,
>>
>> I am investigating into a bug about cloned channels and errata. This is how 
>> to
>> reproduce it on the UI:
>>
>> 1. Clone a channel that contains errata, but select "clone without errata"
>> 2. Go to Channels -> Manage Software Channels -> Errata -> Add -> Add Custom 
>> Errata
>>    (or Add RedHat Errata) -> Unmark the checkbox "Package Assoc." if 
>> necessary
>> 3. Choose an Erratum, clone it and confirm
>>
>> Result: The cloned erratum can be found in the cloned channel as "CLxxx"
>>
>> 5. Now subscribe a system to the newly cloned channel only
>> 6. Go to this System -> Software -> Errata
>>
>> Result: There is two errata listed, "xxx" and "CLxxx", but only "CLxxx" 
>> should be.
>> Also the table 'RhnServerNeededCache' shows even more entries where 
>> errata_id == null?
>>
>> I found a lot of open bugs about this topic, but not exactly this one. If 
>> one of you
>> can reproduce it I could create a bug report for spacewalk, or are you aware 
>> of such
>> misbehavior already?
>>
>> To me it looks like the used statement 
>> ('insert_new_cache_entries_by_packages' in
>> ErrataCache_queries.xml) is not doing the right thing. There even seems to 
>> be an
>> easy fix that I attached as a patch for master, which just calls a stored 
>> procedure
>> ('update_needed_cache_for_channel', ErrataCache_queries.xml) instead.
>>
>> Maybe someone of you who knows about this code could have a look at the 
>> issue,
>> I might be missing something ..
>>
> 
> Replying to add more background. I was not aware of this specific bug
> myself either. I'd be interested to see if we can reproduce on Sat 5.4
> code as well as current Spacewalk code.
> 
> This area of the code seems to get updates and re-factor once every
> couple of years, due to subtle bugs in logic, along with
> scalability/performance feedback.
> 
> The particular line you attached to propose changing was last changed in
> Feb 2009 as part of a larger re-factor:
> http://git.fedorahosted.org/git/?p=spacewalk.git;a=commitdiff;h=3707af4149d84a1ddb1ce693c78f7b791a044cd1
> 
> If memory serves me correct, we were in the middle of a Satellite
> release cycle, so changing the stored procedure was not an ideal
> solution for Satellite. We fixed Java code - which performed well.
> 
>  I'm not sure if I'd want the fix, as proposed, in 1.7, without us
> spending time to confirm it is the best solution for logic and
> performance. I don't think we will have time to dedicate to assist until
> post 1.7. If one the guys finds we have time to dig in before 1.7 goes
> out in the next week (hopefully) - we will.
> 
> Cliff

Sorry, I now found out I was experiencing this bug and was missing the patch:

https://bugzilla.redhat.com/show_bug.cgi?id=707658

So the cloned patches now show up correctly on the UI, but anyways I think
there is some code in here that does strange things. E.g. when I analyze the
file PublishErrataAction.java:

The newly cloned patch is published by calling in line 80:

ErrataManager.publishErrataToChannelAsync(...)

This also triggers insertion into the cache table ("rhnServerNeededCache").
So why do we need to call later on (and without the actual errata ids):

ErrataCacheManager.insertCacheForChannelPackagesAsync(chanList, pidList); (line 
100)

This seems to insert another row into rhnServerNeededCache where the eid is 
null!
If this is wanted behaviour, then what is it for?

Thanks,
Johannes

-- 
SUSE LINUX Products GmbH, HRB 16746 (AG Nürnberg)
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer

_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to