Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Broken DB migrations since 8ca1078 #1485

Closed
ymatsiuk opened this issue Jul 27, 2021 · 6 comments
Closed

Broken DB migrations since 8ca1078 #1485

ymatsiuk opened this issue Jul 27, 2021 · 6 comments
Labels
bug Something isn't working

Comments

@ymatsiuk
Copy link
Contributor

Describe the bug
Sample data dump points to revision which doesn't exist:

points to dropped migration.
This prevents DB migrations from succeeding.

To Reproduce
Steps to reproduce the behavior:

  1. Run ./install.sh from https://github.com/Netflix/dispatch-docker/blob/master/install.sh
  2. Loading example data throws the error below
  3. Skipping example data load will result in another error below

Expected behavior
Both flows should succeed

Additional context
Log for loading example data:

Do you want to load example data (WARNING: this will remove all existing database data) (y/N)?y
...
Example data loaded. Navigate to /register and create a new user.
Running standard database migrations...
Creating dispatch_core_1 ... done
Creating dispatch_web_run ... done
Detected single tenant database, converting to multi-tenant...
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UndefinedTable: relation "dispatch_core.organization" does not exist


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/dispatch", line 8, in <module>
    sys.exit(entrypoint())
  File "/usr/local/lib/python3.8/site-packages/dispatch/cli.py", line 715, in entrypoint
    dispatch_cli()
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/dispatch/cli.py", line 369, in upgrade_database
    setup_fulltext_search(conn, get_core_tables())
  File "/usr/local/lib/python3.8/site-packages/dispatch/database/manage.py", line 164, in setup_fulltext_search
    sync_trigger(**trigger)
  File "/usr/local/lib/python3.8/site-packages/dispatch/search/fulltext/__init__.py", line 399, in sync_trigger
    conn.execute(str(sql), **sql.params)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1003, in execute
    return self._execute_text(object_, multiparams, params)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1172, in _execute_text
    ret = self._execute_context(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "dispatch_core.organization" does not exist

[SQL: CREATE TRIGGER organization_search_vector_trigger BEFORE UPDATE OR INSERT ON dispatch_core."organization" FOR EACH ROW EXECUTE PROCEDURE organization_search_vector_update()]
(Background on this error at: http://sqlalche.me/e/13/f405)
ERROR: 1
Cleaning up...

Log for skipping the load:

Do you want to load example data (WARNING: this will remove all existing database data) (y/N)?N
Running standard database migrations...
Creating dispatch_core_1 ... done
Creating dispatch_web_run ... done
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/alembic/script/base.py", line 171, in _catch_revision_errors
    yield
  File "/usr/local/lib/python3.8/site-packages/alembic/script/base.py", line 365, in _upgrade_revs
    revs = list(revs)
  File "/usr/local/lib/python3.8/site-packages/alembic/script/revision.py", line 706, in iterate_revisions
    revisions, heads = fn(
  File "/usr/local/lib/python3.8/site-packages/alembic/script/revision.py", line 1290, in _collect_upgrade_revisions
    current_revisions = self.get_revisions(lower)
  File "/usr/local/lib/python3.8/site-packages/alembic/script/revision.py", line 457, in get_revisions
    return sum([self.get_revisions(id_elem) for id_elem in id_], ())
  File "/usr/local/lib/python3.8/site-packages/alembic/script/revision.py", line 457, in <listcomp>
    return sum([self.get_revisions(id_elem) for id_elem in id_], ())
  File "/usr/local/lib/python3.8/site-packages/alembic/script/revision.py", line 479, in get_revisions
    return tuple(
  File "/usr/local/lib/python3.8/site-packages/alembic/script/revision.py", line 480, in <genexpr>
    self._revision_for_ident(rev_id, branch_label)
  File "/usr/local/lib/python3.8/site-packages/alembic/script/revision.py", line 546, in _revision_for_ident
    raise ResolutionError(
alembic.script.revision.ResolutionError: No such revision or branch '03f742366750'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/dispatch", line 8, in <module>
    sys.exit(entrypoint())
  File "/usr/local/lib/python3.8/site-packages/dispatch/cli.py", line 715, in entrypoint
    dispatch_cli()
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/dispatch/cli.py", line 390, in upgrade_database
    alembic_command.upgrade(alembic_cfg, revision, sql=sql, tag=tag)
  File "/usr/local/lib/python3.8/site-packages/alembic/command.py", line 294, in upgrade
    script.run_env()
  File "/usr/local/lib/python3.8/site-packages/alembic/script/base.py", line 490, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/usr/local/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 97, in load_python_file
    module = load_module_py(module_id, path)
  File "/usr/local/lib/python3.8/site-packages/alembic/util/compat.py", line 184, in load_module_py
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/usr/local/lib/python3.8/site-packages/dispatch/database/revisions/core/env.py", line 70, in <module>
    run_migrations_online()
  File "/usr/local/lib/python3.8/site-packages/dispatch/database/revisions/core/env.py", line 64, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/usr/local/lib/python3.8/site-packages/alembic/runtime/environment.py", line 813, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/usr/local/lib/python3.8/site-packages/alembic/runtime/migration.py", line 549, in run_migrations
    for step in self._migrations_fn(heads, self):
  File "/usr/local/lib/python3.8/site-packages/alembic/command.py", line 283, in upgrade
    return script._upgrade_revs(revision, rev)
  File "/usr/local/lib/python3.8/site-packages/alembic/script/base.py", line 366, in _upgrade_revs
    return [
  File "/usr/local/lib/python3.8/contextlib.py", line 131, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/local/lib/python3.8/site-packages/alembic/script/base.py", line 203, in _catch_revision_errors
    compat.raise_(util.CommandError(resolution), from_=re)
  File "/usr/local/lib/python3.8/site-packages/alembic/util/compat.py", line 296, in raise_
    raise exception
alembic.util.exc.CommandError: Can't locate revision identified by '03f742366750'
ERROR: 1
Cleaning up...
@kevgliss kevgliss added the bug Something isn't working label Jul 27, 2021
@kevgliss
Copy link
Contributor

Thanks for the report I will take a look at this today.

@kevgliss
Copy link
Contributor

I've updated the example data set here:
#1493

and also slightly modified the install.sh script here:
Netflix/dispatch-docker#113

Currently, our install.sh file points to the latest release, if you want to pick up these changes before we do a release you can modify the install file here:

https://github.com/Netflix/dispatch-docker/blob/master/install.sh#L14

And modify the URL to point to:
https://raw.githubusercontent.com/Netflix/dispatch/master/data/dispatch-sample-data.dump

@ymatsiuk
Copy link
Contributor Author

Thanks @kevgliss for the lightning fast fix!
I wonder if that s in the end of 8f364cf49a23s typo? Because it doesn't match up with 8f364cf49a23

@kevgliss
Copy link
Contributor

kevgliss commented Jul 28, 2021

@ymatsiuk you're right let me fix that real quick.

@kevgliss
Copy link
Contributor

Fixed typo here: #1494

@ymatsiuk
Copy link
Contributor Author

It works now 🎉 Thanks!

PS: Keep in mind that v20210714 is broken, so people who play with dispatch-dockerwill face this issue (it uses latest release by default). Not sure what is the policy around tags you guys have, but you might want to drop this tag. Anyway I'll leave this to you 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants