#304 closed defect (fixed)
sessionModifSchedule.py error
Reported by: | dmartinc | Owned by: | dmartinc |
---|---|---|---|
Priority: | high | Milestone: | v0.97.0 |
Component: | Timetable | Version: | 0.97.0 |
Keywords: | timetable, session, room booking | Cc: |
Description
In some events there are exceptions when the event managers go to sessionModifSchedule.py.
Since 0.97 is in indico.cern.ch there has been 1 error report, 38 exceptions similar to these one, and there were 16 in indicobeta.
It does not happen with all events; maybe only with those that have had a room reservation done and then deleted?
From dmartinc: It seems that when a Session object is being pickled, its conference is also pickled, and then the rooms booked for the conference are pickled, ultimately this calls a roombooking method. However in reservation.py, lines 191-194, the "root" object obtained (root of the RB ZODB) is None.
Example of exception:
exception message => unsubscriptable object exception type => exceptions.TypeError traceback => File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/rh/base.py", line 476, in process res = self._process() File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/rh/sessionModif.py", line 1042, in _process return p.display(**params) File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/base.py", line 146, in display return "%s%s%s"%( self._getHTMLHeader(), \ File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/main.py", line 160, in _display body = WMainBase(self._getBody( params ), self._timezone, self._getNavigationDrawer(), File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/conferences.py", line 2213, in _getBody return self._applyFrame( self._getPageContent( params ) ) File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/sessions.py", line 683, in _getPageContent body = wcomponents.WTabControl( self._tabCtrl, self._getAW() ).getHTML( self._getTabContent( params ) ) File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/sessions.py", line 1477, in _getTabContent return self._getTTPage(params) File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/conferences.py", line 3241, in _getTTPage return wc.getHTML(params) File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/wcomponents.py", line 187, in getHTML vars = self.getVars() File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/sessions.py", line 1502, in getVars eventInfo = DictPickler.pickle(self._session.getConference(), timezone=tz) File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/common/PickleJar.py", line 197, in pickle return DictPickler._pickle(object, globalPickleMap[clazz], timezone) File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/common/PickleJar.py", line 248, in _pickle result = method(object) File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/conference.py", line 3332, in getFavoriteRooms roomList.extend(map(lambda x: x._getName(), self.getBookedRooms())) File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/conference.py", line 2229, in getBookedRooms for r in self.getRoomBookingList(): File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/conference.py", line 2204, in getRoomBookingList r = resvGuid.getReservation() File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/rb_location.py", line 305, in getReservation return CrossLocationQueries.getReservations( File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/rb_location.py", line 421, in getReservations return Location.parse( location ).factory.newReservation().getReservations( **kwargs ) File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/plugins/RoomBooking/default/reservation.py", line 194, in getReservations return root[_RESERVATIONS].get( resvID ) request handler => <class 'MaKaC.webinterface.rh.sessionModif.RHSessionModifSchedule'> url => http://indico.cern.ch/sessionModifSchedule.py?sessionId=6&confId=76883 parameters => sessionId = 6 view = parallel days = all confId = 76883
Change History (5)
comment:1 Changed 6 years ago by dmartinc
- Priority changed from normal to high
comment:2 Changed 6 years ago by dmartinc
- Owner set to dmartinc
- Status changed from new to accepted
comment:3 Changed 6 years ago by jbenito
- Milestone set to v0.97
comment:4 Changed 6 years ago by david.martin.clavo@…
- Resolution set to fixed
- Status changed from accepted to closed
commit a21bf83183a0895356e16f780402066fe88970db
Author: David Martín Clavo <david.martin.clavo@…>
Date: Thu Mar 11 17:05:57 2010 +0100
[FIX] Missing RoomBookingDBMixin in sessionModif
-fixes #304
comment:5 Changed 5 years ago by David Martín Clavo <david.martin.clavo@…>
Note: See
TracTickets for help on using
tickets.
After some research lurking in the DB:
This happens for any event where a reservation is made through the "Room Booking" section.
I was confused because in the event 76883 (of the above traceback) there were apparently no bookings. But it seems that if a booking is rejected, there is still a value inside the self.__roomBookingGuids list of the Conference object; it's not erased, just marked as rejected. I then tried with an event of my own and was able to reproduce.
In conclusion: making a room booking for an event makes the sessionModifSchedule.py page go bad.
PS: to get to the sessionModifSchedule.py page: Timetable section->eedit properties of a session->timetable tab inside the session modif interface.