#3692 SQLAlchemy error on push
Closed: Fixed 5 years ago Opened 5 years ago by felixonmars.

Didn't find this reported but I am getting the failure on every push:

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 393 bytes | 393.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Changes: {u'refs/heads/master': (u'e22fc8c8abe55635372a05f2cc3182a1f82a2cdc', u'5d21dadcf83444f25734fdbcae4fe7cd9fab1147')}
remote: Auth backend <class 'pagure.lib.git_auth.Gitolite3Auth'> is static-only
remote: Running plugin default
remote: Sending to redis to log activity and send commit notification emails
remote: Traceback (most recent call last):
remote:   File "hooks/post-receive", line 24, in <module>
remote:     run_hook_file(hooktype)
remote:   File "/usr/lib/python2.7/site-packages/pagure/hooks/__init__.py", line 478, in run_hook_file
remote:     pull_request,
remote:   File "/usr/lib/python2.7/site-packages/pagure/hooks/__init__.py", line 348, in run_project_hooks
remote:     changes,
remote:   File "/usr/lib/python2.7/site-packages/pagure/hooks/__init__.py", line 92, in runhook
remote:     session, username, project, repotype, repodir, changes
remote:   File "/usr/lib/python2.7/site-packages/pagure/hooks/default.py", line 297, in post_receive
remote:     session, project, repodir, username, refname, commits, forced
remote:   File "/usr/lib/python2.7/site-packages/pagure/hooks/default.py", line 112, in send_notifications
remote:     author = pagure.lib.search_user(session, email=email) or name
remote:   File "/usr/lib/python2.7/site-packages/pagure/lib/__init__.py", line 224, in search_user
remote:     output = query.first()
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py", line 2367, in first
remote:     ret = list(self[0:1])
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py", line 2228, in __getitem__
remote:     return list(res)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py", line 2438, in __iter__
remote:     return self._execute_and_instances(context)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py", line 2453, in _execute_and_instances
remote:     result = conn.execute(querycontext.statement, self._params)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 729, in execute
remote:     return meth(self, multiparams, params)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/sql/elements.py", line 322, in _execute_on_connection
remote:     return connection._execute_clauseelement(self, multiparams, params)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 826, in _execute_clauseelement
remote:     compiled_sql, distilled_params
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 958, in _execute_context
remote:     context)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 1159, in _handle_dbapi_exception
remote:     exc_info
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
remote:     reraise(type(exception), exception, tb=exc_tb)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 951, in _execute_context
remote:     context)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/default.py", line 436, in do_execute
remote:     cursor.execute(statement, parameters)
remote: sqlalchemy.exc.InternalError: (InternalError) current transaction is aborted, commands ignored until end of transaction block
remote:  'SELECT users.id AS users_id, users."user" AS users_user, users.fullname AS users_fullname, users.public_ssh_key AS users_public_ssh_key, users.default_email AS users_default_email, users._settings AS users__settings, users.password AS users_password, users.token AS users_token, users.created AS users_created, users.updated_on AS users_updated_on, users.refuse_sessions_before AS users_refuse_sessions_before \nFROM users, user_emails \nWHERE user_emails.user_id = users.id AND user_emails.email = %(email_1)s ORDER BY users."user" \n LIMIT %(param_1)s' {'email_1': u'giuemcom@gmail.com', 'param_1': 1}
To ssh://pagure.io/dnsmasq-china-list.git
   e22fc8c8a..5d21dadcf  master -> master

Metadata Update from @pingou:
- Issue set to the milestone: 5.1
- Issue tagged with: bug

5 years ago

Same issue happened to me, pushing worked fine:

$ git push origin hawkey 
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 866 bytes | 866.00 KiB/s, done.
Total 6 (delta 4), reused 0 (delta 0)
remote: Changes: {u'refs/heads/hawkey': (u'0000000000000000000000000000000000000000', u'17738064bb5570ec8636dd63d0451e13ec5ff81b')}
remote: Auth backend <class 'pagure.lib.git_auth.Gitolite3Auth'> is static-only
remote: Running plugin default
remote: ('frantisekz', 'post-receive', <pagure.lib.model.Project object at 0x7fe18bb030d0>, u'main', {u'refs/heads/hawkey': (u'0000000000000000000000000000000000000000', u'17738064bb5570ec8636dd63d0451e13ec5ff81b')})
remote: Entering post_receive
remote: None
remote: task-abicheck
remote: 0000000000000000000000000000000000000000 17738064bb5570ec8636dd63d0451e13ec5ff81b
remote: task-abicheck
remote: None
remote: task-abicheck
remote: task-abicheck
remote: Sending to redis to send commit notification emails
remote: task-abicheck
remote: Traceback (most recent call last):
remote:   File "hooks/post-receive", line 24, in <module>
remote:     run_hook_file(hooktype)
remote:   File "/usr/lib/python2.7/site-packages/pagure/hooks/__init__.py", line 502, in run_hook_file
remote:     pull_request,
remote:   File "/usr/lib/python2.7/site-packages/pagure/hooks/__init__.py", line 367, in run_project_hooks
remote:     changes=changes,
remote:   File "/usr/lib/python2.7/site-packages/pagure/hooks/__init__.py", line 111, in runhook
remote:     changes=changes,
remote:   File "/usr/lib/python2.7/site-packages/pagure/hooks/default.py", line 306, in post_receive
remote:     print(project.user.user)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/attributes.py", line 239, in __get__
remote:     return self.impl.get(instance_state(instance), dict_)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/attributes.py", line 591, in get
remote:     value = self.callable_(state, passive)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/strategies.py", line 534, in _load_for_state
remote:     return self._emit_lazyload(session, state, ident_key, passive)
remote:   File "<string>", line 1, in <lambda>
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/strategies.py", line 579, in _emit_lazyload
remote:     return loading.load_on_ident(q, ident_key)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/loading.py", line 231, in load_on_ident
remote:     return q.one()
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py", line 2395, in one
remote:     ret = list(self)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py", line 2438, in __iter__
remote:     return self._execute_and_instances(context)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py", line 2453, in _execute_and_instances
remote:     result = conn.execute(querycontext.statement, self._params)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 729, in execute
remote:     return meth(self, multiparams, params)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/sql/elements.py", line 322, in _execute_on_connection
remote:     return connection._execute_clauseelement(self, multiparams, params)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 826, in _execute_clauseelement
remote:     compiled_sql, distilled_params
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 958, in _execute_context
remote:     context)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 1159, in _handle_dbapi_exception
remote:     exc_info
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
remote:     reraise(type(exception), exception, tb=exc_tb)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 951, in _execute_context
remote:     context)
remote:   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/default.py", line 436, in do_execute
remote:     cursor.execute(statement, parameters)
remote: sqlalchemy.exc.InternalError: (InternalError) current transaction is aborted, commands ignored until end of transaction block
remote:  'SELECT users.id AS users_id, users."user" AS users_user, users.fullname AS users_fullname, users.public_ssh_key AS users_public_ssh_key, users.default_email AS users_default_email, users._settings AS users__settings, users.password AS users_password, users.token AS users_token, users.created AS users_created, users.updated_on AS users_updated_on, users.refuse_sessions_before AS users_refuse_sessions_before \nFROM users \nWHERE users.id = %(param_1)s' {'param_1': 320}
To ssh://pagure.io/task-abicheck.git

Yes, the error is somewhat harmless, the commit still goes through, but adding it to the heatmap calendar and sending emails about them doesn't work (minor compared to failing the push itself)

It took me a good long while but I finally found and fixed this issue.
Basically it seems it was missing some database schema migration, this is the relevant part of the output of a run of createdb:

2018-09-25 14:00:18,645 INFO sqlalchemy.engine.base.Engine 
            SELECT EXISTS (
                SELECT * FROM pg_catalog.pg_type t
                WHERE t.typname = %(typname)s
                AND pg_type_is_visible(t.oid)
                )

2018-09-25 14:00:18,645 INFO sqlalchemy.engine.base.Engine {'typname': u'lock_type_enum'}
2018-09-25 14:00:18,646 INFO sqlalchemy.engine.base.Engine 
            SELECT EXISTS (
                SELECT * FROM pg_catalog.pg_type t
                WHERE t.typname = %(typname)s
                AND pg_type_is_visible(t.oid)
                )

2018-09-25 14:00:18,646 INFO sqlalchemy.engine.base.Engine {'typname': u'merge_status_enum'}
2018-09-25 14:00:18,648 INFO sqlalchemy.engine.base.Engine 
CREATE TABLE hook_mirror (
    id SERIAL NOT NULL, 
    project_id INTEGER NOT NULL, 
    active BOOLEAN NOT NULL, 
    public_key TEXT, 
    target TEXT, 
    last_log TEXT, 
    CONSTRAINT hook_mirror_pkey PRIMARY KEY (id), 
    CONSTRAINT hook_mirror_project_id_fkey FOREIGN KEY(project_id) REFERENCES projects (id) ON DELETE CASCADE ON UPDATE CASCADE
)

Metadata Update from @pingou:
- Issue assigned to pingou

5 years ago

Metadata Update from @pingou:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

5 years ago

Login to comment on this ticket.

Metadata
Related Pull Requests
  • #3756 Merged 5 years ago