[Fedora QA] #380: Update Sync can't handle new packages

Fedora QA trac at fedorahosted.org
Fri Apr 5 16:14:50 UTC 2013


#380: Update Sync can't handle new packages
--------------------------------------+------------------------
 Reporter:  tflink                    |       Owner:  tflink
     Type:  defect                    |      Status:  new
 Priority:  blocker                   |   Milestone:  Fedora 19
Component:  Blocker bug tracker page  |     Version:
 Keywords:                            |  Blocked By:
 Blocking:                            |
--------------------------------------+------------------------
 = bug description =

 The update sync process blows up if a new package is submitted as a
 blocker fix.

 This does cause problems in the sync process and needs to be fixed ASAP.

 = bug analysis =

 The problem is that update_sync assumes there is a push time for anything
 "pending stable" which is not true for new packages - they just get pushed
 stable. This causes a TB like the following during sync:

 {{{
 Traceback (most recent call last):
   File "sync_db.py", line 116, in <module>
     update_sync.full_sync_updates(release)
   File "/home/blockerbugs/blockerbugs/blockerbugs/util/update_sync.py",
 line 180, in full_sync_updates
     self.sync_bug_updates(release, bugs)
   File "/home/blockerbugs/blockerbugs/blockerbugs/util/update_sync.py",
 line 158, in sync_bug_updates
     updates = self.search_updates([bug.bugid], release.number)
   File "/home/blockerbugs/blockerbugs/blockerbugs/util/update_sync.py",
 line 146, in search_updates
     updateinfos.append(self.extract_information(update))
   File "/home/blockerbugs/blockerbugs/blockerbugs/util/update_sync.py",
 line 56, in extract_information
     updateinfo['date_pushed_testing'] = date_pushed
 UnboundLocalError: local variable 'date_pushed' referenced before
 assignment
 }}}

 = fix recommendation =

 The root of the problem is this code in UpdateSync.extract_information():

 {{{
 if update.date_pushed:
     date_pushed = datetime.strptime(update.date_pushed, '%Y-%m-%d
 %H:%M:%S')
 }}}
 and later
 {{{
         if update.status == 'pending':
             updateinfo['pending'] = True

             if update.request == 'stable':
                 updateinfo['status'] = 'stable'
                 updateinfo['date_pushed_testing'] = date_pushed
             elif update.request == 'testing':
                 updateinfo['status'] = 'testing'
             else:
                 updateinfo['status'] = 'undefined'
         else:
             updateinfo['status'] = str(update.status)
             if update.status == 'testing':
                 updateinfo['date_pushed_testing'] = date_pushed
             elif update.status == 'stable':
                 updateinfo['date_pushed_stable'] = date_pushed
 }}}

 Either date_pushed needs to be initialized to 'None' or the assignments
 need to make sure that date_pushed actually exists before attempting to
 access it.

-- 
Ticket URL: <https://fedorahosted.org/fedora-qa/ticket/380>
Fedora QA <http://fedorahosted.org/fedora-qa>
Fedora Quality Assurance


More information about the qa-devel mailing list