Error when updating from 0.20.1 to 1.0
I use a multi-container setup.
Funkwhale worked well in v0.20.1, and upgrading produces no errors.
However, whenever I try to access a page (even the login page), I get two distincts errors :
postgres_1 | 2020-09-09 15:58:50.941 UTC [31] ERROR: column federation_actor.summary_obj_id does not exist at character 377
postgres_1 | 2020-09-09 15:58:50.941 UTC [31] STATEMENT: SELECT "federation_actor"."id", "federation_actor"."fid", "federation_actor"."url", "federation_actor"."outbox_url", "federation_actor"."inbox_url", "federation_actor"."following_url", "federation_actor"."followers_url", "federation_actor"."shared_inbox_url", "federation_actor"."type", "federation_actor"."name", "federation_actor"."domain_id", "federation_actor"."summary", "federation_actor"."summary_obj_id", "federation_actor"."preferred_username", "federation_actor"."public_key", "federation_actor"."private_key", "federation_actor"."creation_date", "federation_actor"."last_fetch_date", "federation_actor"."manually_approves_followers", "federation_actor"."attachment_icon_id", "federation_domain"."name", "federation_domain"."creation_date", "federation_domain"."nodeinfo_fetch_date", "federation_domain"."nodeinfo", "federation_domain"."service_actor_id", "federation_domain"."allowed" FROM "federation_actor" INNER JOIN "federation_domain" ON ("federation_actor"."domain_id" = "federation_domain"."name") WHERE ("federation_actor"."domain_id" = 'music.chosto.me' AND "federation_actor"."preferred_username" = 'service') LIMIT 21
postgres_1 | 2020-09-09 15:58:50.948 UTC [32] ERROR: column federation_actor.summary_obj_id does not exist at character 377
postgres_1 | 2020-09-09 15:58:50.948 UTC [32] STATEMENT: SELECT "federation_actor"."id", "federation_actor"."fid", "federation_actor"."url", "federation_actor"."outbox_url", "federation_actor"."inbox_url", "federation_actor"."following_url", "federation_actor"."followers_url", "federation_actor"."shared_inbox_url", "federation_actor"."type", "federation_actor"."name", "federation_actor"."domain_id", "federation_actor"."summary", "federation_actor"."summary_obj_id", "federation_actor"."preferred_username", "federation_actor"."public_key", "federation_actor"."private_key", "federation_actor"."creation_date", "federation_actor"."last_fetch_date", "federation_actor"."manually_approves_followers", "federation_actor"."attachment_icon_id", "federation_domain"."name", "federation_domain"."creation_date", "federation_domain"."nodeinfo_fetch_date", "federation_domain"."nodeinfo", "federation_domain"."service_actor_id", "federation_domain"."allowed" FROM "federation_actor" INNER JOIN "federation_domain" ON ("federation_actor"."domain_id" = "federation_domain"."name") WHERE ("federation_actor"."domain_id" = 'music.chosto.me' AND "federation_actor"."preferred_username" = 'service') LIMIT 21
nginx_1 | 172.20.0.9 - - [09/Sep/2020:15:58:50 +0000] "GET /front/img/text-white.e069529c.svg HTTP/1.1" 200 9045 "https://music.chosto.me/" "Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0" "176.146.64.200"
api_1 | /venv/lib/python3.7/site-packages/dynamic_preferences/registries.py:136: UserWarning: Creating a fallback preference with section "federation" and name "music_needs_approval".This means you have preferences in your database that don't match any registered preference. If you want to delete these entries, please refer to the documentation: https://django-dynamic-preferences.readthedocs.io/en/latest/lifecycle.html
api_1 | warnings.warn(message.format(section_name, pref_name))
api_1 | /venv/lib/python3.7/site-packages/dynamic_preferences/registries.py:136: UserWarning: Creating a fallback preference with section "instance" and name "nodeinfo_enabled".This means you have preferences in your database that don't match any registered preference. If you want to delete these entries, please refer to the documentation: https://django-dynamic-preferences.readthedocs.io/en/latest/lifecycle.html
api_1 | warnings.warn(message.format(section_name, pref_name))
api_1 | 2020-09-09 15:58:50,950 django.request ERROR Internal Server Error: /api/v1/instance/nodeinfo/2.0/
api_1 | Traceback (most recent call last):
api_1 | File "/venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 86, in _execute
api_1 | return self.cursor.execute(sql, params)
api_1 | psycopg2.errors.UndefinedColumn: column federation_actor.summary_obj_id does not exist
api_1 | LINE 1: ...actor"."domain_id", "federation_actor"."summary", "federatio...
api_1 | ^
api_1 |
api_1 |
api_1 | The above exception was the direct cause of the following exception:
api_1 |
api_1 | Traceback (most recent call last):
api_1 | File "/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
api_1 | response = get_response(request)
api_1 | File "/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
api_1 | response = self.process_exception_by_middleware(e, request)
api_1 | File "/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
api_1 | response = wrapped_callback(request, *callback_args, **callback_kwargs)
api_1 | File "/usr/lib/python3.7/contextlib.py", line 74, in inner
api_1 | return func(*args, **kwds)
api_1 | File "/venv/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
api_1 | return view_func(*args, **kwargs)
api_1 | File "/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view
api_1 | return self.dispatch(request, *args, **kwargs)
api_1 | File "/venv/lib/python3.7/site-packages/rest_framework/views.py", line 505, in dispatch
api_1 | response = self.handle_exception(exc)
api_1 | File "/venv/lib/python3.7/site-packages/rest_framework/views.py", line 465, in handle_exception
api_1 | self.raise_uncaught_exception(exc)
api_1 | File "/venv/lib/python3.7/site-packages/rest_framework/views.py", line 476, in raise_uncaught_exception
api_1 | raise exc
api_1 | File "/venv/lib/python3.7/site-packages/rest_framework/views.py", line 502, in dispatch
api_1 | response = handler(request, *args, **kwargs)
api_1 | File "/app/funkwhale_api/instance/views.py", line 52, in get
api_1 | data = nodeinfo.get()
api_1 | File "/app/funkwhale_api/instance/nodeinfo.py", line 44, in get
api_1 | "actorId": actors.get_service_actor().fid,
api_1 | File "/app/funkwhale_api/federation/actors.py", line 59, in get_service_actor
api_1 | preferred_username=name, domain__name=domain
api_1 | File "/venv/lib/python3.7/site-packages/django/db/models/query.py", line 411, in get
api_1 | num = len(clone)
api_1 | File "/venv/lib/python3.7/site-packages/django/db/models/query.py", line 258, in __len__
api_1 | self._fetch_all()
api_1 | File "/venv/lib/python3.7/site-packages/django/db/models/query.py", line 1261, in _fetch_all
api_1 | self._result_cache = list(self._iterable_class(self))
api_1 | File "/venv/lib/python3.7/site-packages/django/db/models/query.py", line 57, in __iter__
api_1 | results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
api_1 | File "/venv/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1154, in execute_sql
api_1 | cursor.execute(sql, params)
api_1 | File "/venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 68, in execute
api_1 | return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
api_1 | File "/venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
api_1 | return executor(sql, params, many, context)
api_1 | File "/venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 86, in _execute
api_1 | return self.cursor.execute(sql, params)
api_1 | File "/venv/lib/python3.7/site-packages/django/db/utils.py", line 90, in __exit__
api_1 | raise dj_exc_value.with_traceback(traceback) from exc_value
api_1 | File "/venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 86, in _execute
api_1 | return self.cursor.execute(sql, params)
api_1 | django.db.utils.ProgrammingError: column federation_actor.summary_obj_id does not exist
api_1 | LINE 1: ...actor"."domain_id", "federation_actor"."summary", "federatio...
api_1 | ^
api_1 |
and
api_1 | [2020-09-09 15:59:02 +0000] [12] [INFO] ('172.20.0.2', 34628) - "WebSocket /api/v1/activity" 403 403 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0" "-"
api_1 | [2020-09-09 15:59:02 +0000] [12] [ERROR] Exception in ASGI application
api_1 | Traceback (most recent call last):
api_1 | File "/venv/lib/python3.7/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 154, in run_asgi
api_1 | result = await self.app(self.scope, self.asgi_receive, self.asgi_send)
api_1 | File "/venv/lib/python3.7/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
api_1 | return await self.app(scope, receive, send)
api_1 | File "/venv/lib/python3.7/site-packages/uvicorn/middleware/asgi2.py", line 7, in __call__
api_1 | await instance(receive, send)
api_1 | File "/venv/lib/python3.7/site-packages/channels/sessions.py", line 183, in __call__
api_1 | return await self.inner(receive, self.send)
api_1 | File "/venv/lib/python3.7/site-packages/channels/middleware.py", line 41, in coroutine_call
api_1 | await inner_instance(receive, send)
api_1 | File "/venv/lib/python3.7/site-packages/channels/consumer.py", line 59, in __call__
api_1 | [receive, self.channel_receive], self.dispatch
api_1 | File "/venv/lib/python3.7/site-packages/channels/utils.py", line 58, in await_many_dispatch
api_1 | await task
api_1 | File "/venv/lib/python3.7/site-packages/channels/utils.py", line 50, in await_many_dispatch
api_1 | result = task.result()
api_1 | File "/venv/lib/python3.7/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 234, in asgi_receive
api_1 | data = await self.recv()
api_1 | File "/venv/lib/python3.7/site-packages/websockets/protocol.py", line 495, in recv
api_1 | return_when=asyncio.FIRST_COMPLETED,
api_1 | File "/usr/lib/python3.7/asyncio/tasks.py", line 387, in wait
api_1 | fs = {ensure_future(f, loop=loop) for f in set(fs)}
api_1 | File "/usr/lib/python3.7/asyncio/tasks.py", line 387, in <setcomp>
api_1 | fs = {ensure_future(f, loop=loop) for f in set(fs)}
api_1 | File "/usr/lib/python3.7/asyncio/tasks.py", line 619, in ensure_future
api_1 | raise TypeError('An asyncio.Future, a coroutine or an awaitable is '
api_1 | TypeError: An asyncio.Future, a coroutine or an awaitable is required
I use a standard setup, but if you want, I can provide configuration files, Compose, etc.
Thanks in advance for your help!