self-hosted icon indicating copy to clipboard operation
self-hosted copied to clipboard

Restore failed: 'Site' object has no attribute 'get_possible_relocation_scopes'

Open ingria opened this issue 1 year ago • 5 comments

Self-Hosted Version

23.9.1

CPU Architecture

x86_x64

Docker Version

24.0.4

Docker Compose Version

2.18.1

Steps to Reproduce

Execute ./scripts/restore.sh

Expected Result

Backup is restored

Actual Result

I receive an error:

AttributeError: 'Site' object has no attribute 'get_possible_relocation_scopes'

Logs:

#...whole bunch of containers...
 Container sentry-self-hosted-vroom-1  Started
 Container sentry-self-hosted-snuba-subscription-consumer-events-1  Started
 Container sentry-self-hosted-snuba-transactions-consumer-1  Started
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
/usr/local/lib/python3.8/site-packages/memcache.py:1303: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if key is '':
/usr/local/lib/python3.8/site-packages/memcache.py:1304: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if key_extra_len is 0:
Traceback (most recent call last):
  File "/usr/local/bin/sentry", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/site-packages/sentry/runner/__init__.py", line 193, in main
    func(**kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/sentry/runner/decorators.py", line 29, in inner
    return ctx.invoke(f, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/sentry/runner/commands/backup.py", line 150, in import_global
    import_in_global_scope(
  File "/usr/local/lib/python3.8/site-packages/sentry/backup/imports.py", line 321, in import_in_global_scope
    return _import(src, ImportScope.Global, flags=flags, printer=printer)
  File "/usr/local/lib/python3.8/site-packages/sentry/backup/imports.py", line 204, in _import
    do_write()
  File "/usr/local/lib/python3.8/site-packages/sentry/backup/imports.py", line 164, in do_write
    if o.get_possible_relocation_scopes() & allowed_relocation_scopes:
AttributeError: 'Site' object has no attribute 'get_possible_relocation_scopes'
Error in scripts/_lib.sh:69.
'$dc run --rm -T web import global /etc/sentry/backup.json' exited with status 1
-> ./scripts/restore.sh:main:4
--> scripts/_lib.sh:restore:69

Cleaning up...

If I checkout to previous commit (e.g. 9eb056), I don't get this error, but restore still doesn't work:

 Container sentry-self-hosted-snuba-api-1  Started
 Container sentry-self-hosted-snuba-sessions-consumer-1  Started
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Usage: sentry import [OPTIONS] COMMAND [ARGS]...

  Performs non-destructive imports of core data for a Sentry installation.

Options:
  --help  Show this message and exit.

Commands:
  config         Import all configuration and administrator accounts...
  global         Import all Sentry data from an exported JSON file.
  organizations  Import the Sentry organizations, and all constituent...
  users          Import the Sentry users from an exported JSON file.

Event ID

No response

ingria avatar Sep 24 '23 12:09 ingria

Thanks for filing this issue. We'll look into this.

cc: @azaslavsky

hubertdeng123 avatar Sep 26 '23 21:09 hubertdeng123

Was this from a backup taken after you had migrated to 23.9.1 as well? Or is this from an earlier version?

azaslavsky avatar Sep 26 '23 21:09 azaslavsky

I cannot tell for sure now, because I had to delete the “donor” instance. But I remember updating it with ./install.sh before calling ./backup.sh

ingria avatar Sep 27 '23 01:09 ingria

Was this from a backup taken after you had migrated to 23.9.1 as well? Or is this from an earlier version?

same error , backup from 21.7.0 to 23.10.0

zechen706 avatar Sep 27 '23 01:09 zechen706

I cannot tell for sure now, because I had to delete the “donor” instance. But I remember updating it with ./install.sh before calling ./backup.sh

I'm sorry you're experiencing this!

My suspicion is that the backup was generated from a version before 23.9.1, because the model you are having trouble uploading, sites.site, is no longer included in the export as of that version, as specified here. As noted in the release notes for 23.9.1, that release constitutes a breaking change to the backup/restore script, and data from before that change will no longer work. I think the best course of action is to revert back to 23.8.0, try to restore on that version, then upgrade to 23.9.1 once the restore is complete.

same error , backup from 21.7.0 to 23.10.0

You mean 23.9.1? In any case, I would suggest the same advice as above: pull 23.8.0, restore there, then upgrade to 23.9.1. I'll also note that there are hard stops on your migration path that you should take care use as milestones.

azaslavsky avatar Sep 27 '23 15:09 azaslavsky