]> cat aescling's git repositories - mastodon.git/commit
Account archive download (#6460)
authorEugen Rochko <eugen@zeonfederated.com>
Wed, 21 Feb 2018 22:21:32 +0000 (23:21 +0100)
committerGitHub <noreply@github.com>
Wed, 21 Feb 2018 22:21:32 +0000 (23:21 +0100)
commit61ed133fea80041b354c78b043cec72dd8644101
treefa3c4aec521f5a0004a5d2277b1421fd983256d1
parentc1e77b56a92fc075f000af9c263c72ba6bdbe5f7
Account archive download (#6460)

* Fix #201: Account archive download

* Export actor and private key in the archive

* Optimize BackupService

- Add conversation to cached associations of status, because
  somehow it was forgotten and is source of N+1 queries
- Explicitly call GC between batches of records being fetched
  (Model class allocations are the worst offender)
- Stream media files into the tar in 1MB chunks
  (Do not allocate media file (up to 8MB) as string into memory)
- Use #bytesize instead of #size to calculate file size for JSON
  (Fix FileOverflow error)
- Segment media into subfolders by status ID because apparently
  GIF-to-MP4 media are all named "media.mp4" for some reason

* Keep uniquely generated filename in Paperclip::GifTranscoder

* Ensure dumped files do not overwrite each other by maintaing directory partitions

* Give tar archives a good name

* Add scheduler to remove week-old backups

* Fix code style issue
27 files changed:
Gemfile
Gemfile.lock
app/controllers/settings/exports_controller.rb
app/javascript/images/icon_file_download.svg [new file with mode: 0644]
app/javascript/images/mailer/icon_file_download.png [new file with mode: 0644]
app/mailers/user_mailer.rb
app/models/backup.rb [new file with mode: 0644]
app/models/status.rb
app/models/user.rb
app/policies/application_policy.rb
app/policies/backup_policy.rb [new file with mode: 0644]
app/serializers/activitypub/collection_serializer.rb
app/services/backup_service.rb [new file with mode: 0644]
app/views/settings/exports/show.html.haml
app/views/user_mailer/backup_ready.html.haml [new file with mode: 0644]
app/views/user_mailer/backup_ready.text.erb [new file with mode: 0644]
app/workers/backup_worker.rb [new file with mode: 0644]
app/workers/scheduler/backup_cleanup_scheduler.rb [new file with mode: 0644]
config/locales/en.yml
config/routes.rb
config/sidekiq.yml
db/migrate/20180211015820_create_backups.rb [new file with mode: 0644]
db/schema.rb
lib/paperclip/gif_transcoder.rb
spec/fabricators/backup_fabricator.rb [new file with mode: 0644]
spec/mailers/previews/user_mailer_preview.rb
spec/models/backup_spec.rb [new file with mode: 0644]