Commit Graph

32 Commits (a012e4c7ffb7fa4d474530554c6ab5a088135d77)

Author SHA1 Message Date
Eugen Rochko 3f075c7794 API for apps to register for push notifications
Eugen Rochko 8a880a3d46 Make blocks create entries and unfollows instantly, but do the clean up
in the background instead. Should fix delay where blocked person
can interact with blocker for a short time before background job
gets processed
Eugen Rochko cca82bf0a2 Move merging/unmerging of timelines into background. Move blocking into
background as well since it's a computationally expensive
Eugen Rochko f0de621e76 Fix - Fetch and display previews of URLs using OpenGraph tags
Eugen Rochko 6c28886317 Improve background jobs params and error handling
Eugen Rochko 86be6d48c9 Fix accidental distribution of hidden stream entries to PuSH subscribers
Eugen Rochko 49834a6e7f Add API for retrieving blocked accounts
Eugen Rochko 4c6809f6ab Adding some rescues to workers, e.g. don't fail removal job when status can't be found in the first place (already removed)
Eugen Rochko 0542773bca Make unfavouriting async to prevent timeout errors from leaving orphaned records behind
Eugen Rochko 6de079a5af Removing external hub completely, fix fixing digit-only hashtags,
removing web app capability from non-webapp pages
Eugen Rochko 668013265c Restoring old async behaviour of thread resolving as it proved to be more robust
Eugen Rochko f90133d2ad Thread resolving no longer needs to be separate from ProcessFeedService,
since that is only ever called in the background
Eugen Rochko f406e01fcf Add filters for suspended accounts
Eugen Rochko 58b3f4fd67 Fix - avatar errors no longer prevent remote accounts from being saved
(without avatar). Also improved search position of exact matches
Eugen Rochko 4a2347da41 Track successful PuSH deliveries
Eugen Rochko 93a90cd9c3 Delete statuses asynchronously but provide instant feedback in the API
Eugen Rochko cc70f28f19 Adding rack timeout of 30sec, PuSH jobs moved to push queue so they
can be processed separately
Eugen Rochko 4e351baf88 Fix URLs in inline-rendered XML
Eugen Rochko 3ba6531611 Fix setting of confirmed=true on successful confirmation
Eugen Rochko 50638174c8 More logging to ConfirmationWorker
Eugen Rochko 4eba76711b Adding backtracing to Salmon/Processing workers
Eugen Rochko 2d2c81765b Adding embedded PuSH server
Eugen Rochko 45c7ee39b3 Remove unneeded indices, improve error handling in background workers, don't needlessly reload reblogged status, send Devise e-mails asynchronously
Eugen Rochko 7dea6a23f7 Move Salmon processing to background as well as PuSH
Eugen Rochko fdc17bea58 Fix rubocop issues, introduce usage of frozen literal to improve performance
Eugen Rochko a91c3ef6ce Delegate processing of incoming PuSH data to background workers
Eugen Rochko bb4d1eb2e8 Improve feed regeneration
Eugen Rochko 3319473b2c Move PubSubHubbub pinging to a background worker
It can take as much as 0.5s if not longer to complete
Eugen Rochko 927333f4f8 Improve code style
Eugen Rochko 4bec613897 Fix - Thread resolving for remote statuses
This is a big one, so let me enumerate:

Accounts as well as stream entry pages now contain Link headers that
reference the Atom feed and Webfinger URL for the former and Atom entry
for the latter. So you only need to HEAD those resources to get that
information, no need to download and parse HTML <link>s.

ProcessFeedService will now queue ThreadResolveWorker for each remote
status that it cannot find otherwise. Furthermore, entries are now
processed in reverse order (from bottom to top) in case a newer entry
references a chronologically previous one.

ThreadResolveWorker uses FetchRemoteStatusService to obtain a status
and attach the child status it was queued for to it.

FetchRemoteStatusService looks up the URL, first with a HEAD, tests
if it's an Atom feed, in which case it processes it directly. Next
for Link headers to the Atom feed, in which case that is fetched
and processed. Lastly if it's HTML, it is checked for <link>s to the Atom
feed, and if such is found, that is fetched and processed. The account for
the status is derived from author/name attribute in the XML and the hostname
in the URL (domain). FollowRemoteAccountService and ProcessFeedService
are used.

This means that potentially threads are resolved recursively until a dead-end
is encountered, however it is performed asynchronously over background jobs,
so it should be ok.
Eugen Rochko 85b00d19b8 Moving Salmon notifications to background processing, fixing mini-profiler
behaviour with Turbolinks enabled, optimizing Rabl for production
Eugen Rochko 8eeec389c1 Add link to github project to footer, move FanOutOnWriteService calls to
DistributionWorker. That isn't the heaviest service, yet, but gotta start
somewhere