mirror of
https://git.kescher.at/CatCatNya/catstodon.git
synced 2024-11-27 00:11:35 +01:00
Fix tootctl accounts cull
(#10460)
* List the actual accounts that would have been culled during a dry run. Otherwise, the dry run mode is basically useless. * Prevent unreachable domains from inheriting the previous status code. * Update CHANGELOG.md for #10460.
This commit is contained in:
parent
bd365cc38b
commit
e6814a332c
2 changed files with 14 additions and 1 deletions
|
@ -50,6 +50,7 @@ All notable changes to this project will be documented in this file.
|
||||||
- Change Webpack to not use @babel/preset-env to compile node_modules ([ykzts](https://github.com/tootsuite/mastodon/pull/10289))
|
- Change Webpack to not use @babel/preset-env to compile node_modules ([ykzts](https://github.com/tootsuite/mastodon/pull/10289))
|
||||||
- Change web UI to use new Web Share Target API ([gol-cha](https://github.com/tootsuite/mastodon/pull/9963))
|
- Change web UI to use new Web Share Target API ([gol-cha](https://github.com/tootsuite/mastodon/pull/9963))
|
||||||
- Change ActivityPub reports to have persistent URIs ([ThibG](https://github.com/tootsuite/mastodon/pull/10303))
|
- Change ActivityPub reports to have persistent URIs ([ThibG](https://github.com/tootsuite/mastodon/pull/10303))
|
||||||
|
- Change `tootctl accounts cull --dry-run` to list accounts that would be deleted ([BenLubar](https://github.com/tootsuite/mastodon/pull/10460))
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
@ -75,6 +76,7 @@ All notable changes to this project will be documented in this file.
|
||||||
- Fix race condition when streaming out deleted statuses ([ThibG](https://github.com/tootsuite/mastodon/pull/10280))
|
- Fix race condition when streaming out deleted statuses ([ThibG](https://github.com/tootsuite/mastodon/pull/10280))
|
||||||
- Fix performance of admin federation UI by caching account counts ([Gargron](https://github.com/tootsuite/mastodon/pull/10374))
|
- Fix performance of admin federation UI by caching account counts ([Gargron](https://github.com/tootsuite/mastodon/pull/10374))
|
||||||
- Fix JS error on pages that don't define a CSRF token ([hinaloe](https://github.com/tootsuite/mastodon/pull/10383))
|
- Fix JS error on pages that don't define a CSRF token ([hinaloe](https://github.com/tootsuite/mastodon/pull/10383))
|
||||||
|
- Fix `tootctl accounts cull` sometimes removing accounts that are temporarily unreachable ([BenLubar](https://github.com/tootsuite/mastodon/pull/10460))
|
||||||
|
|
||||||
## [2.7.4] - 2019-03-05
|
## [2.7.4] - 2019-03-05
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
|
@ -219,12 +219,14 @@ module Mastodon
|
||||||
def cull
|
def cull
|
||||||
skip_threshold = 7.days.ago
|
skip_threshold = 7.days.ago
|
||||||
culled = 0
|
culled = 0
|
||||||
|
dry_run_culled = []
|
||||||
skip_domains = Set.new
|
skip_domains = Set.new
|
||||||
dry_run = options[:dry_run] ? ' (DRY RUN)' : ''
|
dry_run = options[:dry_run] ? ' (DRY RUN)' : ''
|
||||||
|
|
||||||
Account.remote.where(protocol: :activitypub).partitioned.find_each do |account|
|
Account.remote.where(protocol: :activitypub).partitioned.find_each do |account|
|
||||||
next if account.updated_at >= skip_threshold || (account.last_webfingered_at.present? && account.last_webfingered_at >= skip_threshold)
|
next if account.updated_at >= skip_threshold || (account.last_webfingered_at.present? && account.last_webfingered_at >= skip_threshold)
|
||||||
|
|
||||||
|
code = 0
|
||||||
unless skip_domains.include?(account.domain)
|
unless skip_domains.include?(account.domain)
|
||||||
begin
|
begin
|
||||||
code = Request.new(:head, account.uri).perform(&:code)
|
code = Request.new(:head, account.uri).perform(&:code)
|
||||||
|
@ -236,7 +238,11 @@ module Mastodon
|
||||||
end
|
end
|
||||||
|
|
||||||
if [404, 410].include?(code)
|
if [404, 410].include?(code)
|
||||||
SuspendAccountService.new.call(account, destroy: true) unless options[:dry_run]
|
if options[:dry_run]
|
||||||
|
dry_run_culled << account.acct
|
||||||
|
else
|
||||||
|
SuspendAccountService.new.call(account, destroy: true)
|
||||||
|
end
|
||||||
culled += 1
|
culled += 1
|
||||||
say('+', :green, false)
|
say('+', :green, false)
|
||||||
else
|
else
|
||||||
|
@ -252,6 +258,11 @@ module Mastodon
|
||||||
say('The following servers were not available during the check:', :yellow)
|
say('The following servers were not available during the check:', :yellow)
|
||||||
skip_domains.each { |domain| say(' ' + domain) }
|
skip_domains.each { |domain| say(' ' + domain) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
unless dry_run_culled.empty?
|
||||||
|
say('The following accounts would have been deleted:', :green)
|
||||||
|
dry_run_culled.each { |account| say(' ' + account) }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
option :all, type: :boolean
|
option :all, type: :boolean
|
||||||
|
|
Loading…
Reference in a new issue