Bug 963924

Summary: database error "SAVEPOINT sa_savepoint_2 does not exist" when updating inventory
Product: [Retired] Beaker Reporter: Jeff Burke <jburke>
Component: schedulerAssignee: beaker-dev-list
Status: CLOSED INSUFFICIENT_DATA QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 0.12CC: dcallagh, ebaak, qwan, rjoost, tools-bugs
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
URL: https://beaker.engineering.redhat.com/recipes/879505
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-05-31 19:48:25 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jeff Burke 2013-05-16 19:11:32 UTC
Inventory task failed.

 On the client we received this:

:: [   LOG    ] :: Traceback (most recent call last):
:: [   LOG    ] :: File "./pushInventory.py", line 448, in <module>
:: [   LOG    ] :: main()
:: [   LOG    ] :: File "./pushInventory.py", line 444, in main
:: [   LOG    ] :: push_inventory("push", hostname, inventory)
:: [   LOG    ] :: File "./pushInventory.py", line 44, in push_inventory
:: [   LOG    ] :: resp = getattr(session, method)(hostname, inventory)
:: [   LOG    ] :: File "/usr/lib64/python2.6/xmlrpclib.py", line 1199, in __call__
:: [   LOG    ] :: return self.__send(self.__name, args)
:: [   LOG    ] :: File "/usr/lib64/python2.6/xmlrpclib.py", line 1489, in __request
:: [   LOG    ] :: verbose=self.__verbose
:: [   LOG    ] :: File "/usr/lib64/python2.6/xmlrpclib.py", line 1253, in request
:: [   LOG    ] :: return self._parse_response(h.getfile(), sock)
:: [   LOG    ] :: File "/usr/lib64/python2.6/xmlrpclib.py", line 1392, in _parse_response
:: [   LOG    ] :: return u.close()
:: [   LOG    ] :: File "/usr/lib64/python2.6/xmlrpclib.py", line 838, in close
:: [   LOG    ] :: raise Fault(**self._stack[0])
:: [   LOG    ] :: xmlrpclib.Fault: <Fault 1: "<class 'xmlrpclib.ProtocolError'>:<ProtocolError for beaker.engineering.redhat.com/client/: 500 Internal error>">

 On the server we received this:

2013-05-16 12:02:43,285 bkr.server.xmlrpccontroller ERROR Error handling XML-RPC method
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/bkr/server/xmlrpccontroller.py", line 54, in RPC2
    response = self.process_rpc(method,params)
  File "/usr/lib/python2.6/site-packages/bkr/server/xmlrpccontroller.py", line 43, in process_rpc
    response = obj(*params)
  File "/usr/lib/python2.6/site-packages/bkr/server/controllers.py", line 1850, in push
    return system.update(inventory)
  File "/usr/lib/python2.6/site-packages/bkr/server/model.py", line 2345, in update
    method(inventory[key])
  File "/usr/lib/python2.6/site-packages/bkr/server/model.py", line 2414, in updateDevices
    description = device['description'])
  File "/usr/lib/python2.6/site-packages/bkr/server/model.py", line 1451, in lazy_create
    session.commit()
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/scoping.py", line 139, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/session.py", line 614, in commit
    self.transaction.commit()
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/session.py", line 385, in commit
    self._prepare_impl()
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/session.py", line 369, in _prepare_impl
    self.session.flush()
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/session.py", line 1400, in flush
    self._flush(objects)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/session.py", line 1487, in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/session.py", line 411, in rollback
    transaction._rollback_impl()
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/session.py", line 424, in _rollback_impl
    t[1].rollback()
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1524, in rollback
    self._do_rollback()
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1573, in _do_rollback
    self._savepoint, self._parent)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1113, in _rollback_to_savepoint_impl
    self.engine.dialect.do_rollback_to_savepoint(self, name)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/default.py", line 290, in do_rollback_to_savepoint
    connection.execute(expression.RollbackToSavepointClause(name))
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1191, in execute
    params)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1271, in _execute_clauseelement
    return self.__execute_context(context)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1302, in __execute_context
    context.parameters[0], context=context)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1401, in _cursor_execute
    context)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1394, in _cursor_execute
    context)
  File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/default.py", line 299, in do_execute
    cursor.execute(statement, parameters)
  File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 173, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
OperationalError: (OperationalError) (1305, 'SAVEPOINT sa_savepoint_2 does not exist') 'ROLLBACK TO SAVEPOINT sa_savepoint_2' ()


This was seen on two different jobs. J:417883 not J:4178843

Comment 2 Roman Joost 2016-05-31 19:48:25 UTC
Dear Jeff,

I'm closing this bug since we haven't seen this happening in recent times. Our log files only date back a few weeks, but I guess if it would have happened between Beaker 0.12 this bug would have probably escalated quicker.

If it *does* happen again tho, don't hesitate to open it and we'll investigate. My apologies if looking at this problem didn't happen earlier.