Issue #268: FlushError: Instance <UserLog at 0x7f2cecab6f10> has a NULL identity key. (conservancy/kallithea)

Stephan Riedel issues-reply at bitbucket.org
Wed Feb 8 11:42:30 UTC 2017


New issue 268: FlushError: Instance <UserLog at 0x7f2cecab6f10> has a NULL identity key.
https://bitbucket.org/conservancy/kallithea/issues/268/flusherror-instance-has-a-null-identity

Stephan Riedel:

Hi,

I'm currently trying to migrate the kallithea database from from sqlite to postgresql via pgloader.

Kallithea version: 0.3.2

```
#!bash

# sqlite3 --version
3.8.7.1 2014-10-29 13:59:56 3b7b72c4685aa5cf5e675c2c47ebec10d9704221
# psql --version
psql (PostgreSQL) 9.4.9
# pgloader --version
pgloader version "3.2.2"
compiled with SBCL 1.3.1.debian
```

When trying to push or pull a repository, I get an HTTP error 500 and the following stack trace in the syslog:

```
#!

Feb  7 20:19:39 bsserv24 paster[8288]: 2017-02-07 20:19:39.883 ERROR [kallithea.lib.middleware.simplegit] Traceback (most recent call last):
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/kallithea/lib/middleware/simplegit.py", line 203, in _handle_request
Feb  7 20:19:39 bsserv24 paster[8288]: self._handle_githooks(repo_name, action, baseui, environ)
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/kallithea/lib/middleware/simplegit.py", line 296, in _handle_githooks
Feb  7 20:19:39 bsserv24 paster[8288]: log_pull_action(ui=baseui, repo=_repo._repo)
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/kallithea/lib/hooks.py", line 135, in log_pull_action
Feb  7 20:19:39 bsserv24 paster[8288]: action_logger(user, action, ex.repository, ex.ip, commit=True)
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/kallithea/lib/utils.py", line 206, in action_logger
Feb  7 20:19:39 bsserv24 paster[8288]: sa.commit()
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 710, in commit
Feb  7 20:19:39 bsserv24 paster[8288]: self.transaction.commit()
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 368, in commit
Feb  7 20:19:39 bsserv24 paster[8288]: self._prepare_impl()
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 347, in _prepare_impl
Feb  7 20:19:39 bsserv24 paster[8288]: self.session.flush()
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 1734, in flush
Feb  7 20:19:39 bsserv24 paster[8288]: self._flush(objects)
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 1809, in _flush
Feb  7 20:19:39 bsserv24 paster[8288]: flush_context.finalize_flush_changes()
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py", line 347, in finalize_flush_changes
Feb  7 20:19:39 bsserv24 paster[8288]: self.session._register_newly_persistent(state)
Feb  7 20:19:39 bsserv24 paster[8288]: File "/srv/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 1323, in _register_newly_persistent
Feb  7 20:19:39 bsserv24 paster[8288]: "a load() event." % mapperutil.state_str(state)
Feb  7 20:19:39 bsserv24 paster[8288]: FlushError: Instance <UserLog at 0x7f2cecab6f10> has a NULL identity key.  If this is an auto-generated value, check that the database table allows generation of new primary key values, and that the mapped Column object is configured to expect these generated values.  Ensure also that this flush() is not occurring at an inappropriate time, such as within a load() event.
```

Google tells me, that this might be connecte to the AUTOINCREMENT feature of sqlite but on first sight, all tables/columns using AUTOINCREMENT in sqlite were converted correctly to postgres (I think at least).

Can you give me a hint where Kallithea is crashing or which tables might get corrupted during conversion?

Also, is there any official guide on how to convert the Kallithea sqlite DB to postgres? The grate command (as proposed in the docs) requires some metadata for the migration. Where can I find it?




More information about the kallithea-general mailing list