v3.5.2
Upgrade overview
This release contains upgrade notes that deviate from the norm:
ℹ️ Requires two-step database migration process for zero-downtime deployment
ℹ️ Some migrations may take a long time to run
For more information, scroll down to the upgrade instructions section.
Changelog
Added
- Add warning on direct messages screen in web UI (Gargron)
- We already had a warning when composing a direct message, it has now been reworded to be more clear
- Same warning is now displayed when viewing sent and received direct messages
- Add ability to set approval-based registration through tootctl (ClearlyClaire)
- Add pre-filling of domain from search filter in domain allow/block admin UI (ClearlyClaire)
Changed
- Change name of “Direct” visibility to “Mentioned people only” in web UI (Gargron, Gargron, ClearlyClaire)
- Change trending posts to only show one post from each account (Gargron)
- Change half-life of trending posts from 6 hours to 2 hours (Gargron)
- Change full-text search feature to also include polls you have voted in (tribela)
- Change Redis from using one connection per process, to using a connection pool (Gargron, ClearlyClaire, Gargron)
- Different threads no longer have to wait on a mutex over a single connection
- However, this does increase the number of Redis connections by a fair amount
- We are planning to optimize Redis use so that the pool can be made smaller in the future
Removed
- Remove IP matching from e-mail domain blocks (Gargron)
- The IPs of the blocked e-mail domain or its MX records are no longer checked
- Previously it was too easy to block e-mail providers by mistake
Fixed
- Fix compatibility with Friendica's pinned posts (ClearlyClaire, ClearlyClaire)
- Fix error when looking up handle with surrounding spaces in REST API (ClearlyClaire)
- Fix double render error when authorizing interaction (Gargron)
- Fix error when a post references an invalid media attachment (ClearlyClaire)
- Fix error when trying to revoke OAuth token without supplying a token (Gargron)
- Fix error caused by missing subject in Webfinger response (Gargron)
- Fix error on attempting to delete an account moderation note (ClearlyClaire)
- Fix light-mode emoji borders in web UI (Gaelan)
- Fix being able to scroll away from the loading bar in web UI (Gargron)
- Fix error when a bookmark or favorite has been reported and deleted (ClearlyClaire)
- Fix being offered empty “Server rules violation” report option in web UI (ClearlyClaire)
- Fix temporary network errors preventing from authorizing interactions with remote accounts (ClearlyClaire)
- Fix incorrect link in "new trending tags" email (cdzombak)
- Fix missing indexes on some foreign keys (ClearlyClaire)
- Fix n+1 query on feed merge and populate operations (Gargron)
- Fix feed unmerge worker being exceptionally slow in some conditions (ClearlyClaire)
- Fix PeerTube videos appearing with an erroneous “Edited at” marker (ClearlyClaire)
- Fix instance actor being created incorrectly when running through migrations (ClearlyClaire)
- Fix web push notifications containing HTML entities (ClearlyClaire)
- Fix inconsistent parsing of
TRUSTED_PROXY_IP
(ykzts) - Fix error when fetching pinned posts (tribela)
- Fix wrong optimization in feed populate operation (dogelover911)
- Fix error in alias settings page (ClearlyClaire)
Upgrade notes
To get the code for v3.5.2, use git fetch && git checkout v3.5.2
.
As always, make sure you have backups of the database before performing any upgrades. If you are using docker-compose, this is how a backup command might look: docker exec mastodon_db_1 pg_dump -Fc -U postgres postgres > name_of_the_backup.dump
Dependencies
Dependencies have not changed. To summarize, the dependency requirements for v3.5.2 are:
- Ruby: 2.6 up to 3.0
- PostgreSQL: 9.5 or newer
- Elasticsearch (optional, for full-text search): 7.x
- Redis: 4 or newer
- Node: 12 or newer
Update steps
Non-Docker only:
- Install dependencies:
bundle install
andyarn install
Both Docker and non-Docker:
ℹ️ Some of the migrations in this update may take a while to run. This is normal, just be prepared.
- Run the pre-deployment database migrations by specifying the
SKIP_POST_DEPLOYMENT_MIGRATIONS=true
environment variable:- Non-Docker:
SKIP_POST_DEPLOYMENT_MIGRATIONS=true RAILS_ENV=production bundle exec rails db:migrate
- Docker:
docker-compose run --rm -e SKIP_POST_DEPLOYMENT_MIGRATIONS=true web rails db:migrate
- Non-Docker:
- Precompile the assets:
- Non-Docker:
RAILS_ENV=production bundle exec rails assets:precompile
- Docker: The assets are already precompiled during the build step
- Non-Docker:
- Restart all Mastodon processes
- Now that the new code is running, we can finish the database migrations. This will run the post-deployment ones:
- Non-Docker:
RAILS_ENV=production bundle exec rails db:migrate
- Docker:
docker-compose run --rm web rails db:migrate
- Non-Docker: