Page MenuHomePhabricator

Migrate proton (chromium-render) away from restbase
Closed, ResolvedPublic

Description

As part of the whole restbase sunsetting project, proton, the pdf rendering endpoints should be exposed without restbase as a dependency.

RESTBase Endpoints

/page/pdf/{title}
/page/pdf/{title}/{format}
/page/pdf/{title}/{format}/{type}

Request flow into proton and back

Miro: https://miro.com/app/board/uXjVPmitF6g=/

Compatibility

In order for proton to be able to serve traffic here is the logic that we need to implement in the backend level

  • Handle redirects (lib/access_check_filter.js)
  • Add content-type, content-disposition and content-length headers (required for downloads to work properly)
  • Make sure that the service serves the same cache headers
Notes
  • It looks like cache invalidation events are not served from restbase so just serving the right cache headers will be enough for compatibility
  • No RESTBase storage is used
  • Proton shouldn't call RESTBase to retrieve data
  • Currently not an active feature in MediaWiki.
  • Gets minimal traffic from 3rd party requests.
  • These 3rd parties are currently unknown entities.
  • This will allow us to define common features that currently exist in RESTbase itself, but need to exist elsewhere.
Acceptance Criteria
  • Identify service owner / key stakeholder
  • Plan next steps with owner / key stakeholder
  • Identify baseline metrics for current service routing through RESTbase
  • Serves correct cache headers
  • Plan and test new routing
  • Meet compatibility as outlined above

Related Objects

StatusSubtypeAssignedTask
StalledNone
In ProgressNone
ResolvedDAlangi_WMF
OpenQuiddity
ResolvedDAlangi_WMF
ResolvedDAlangi_WMF
OpenNone
StalledNone
ResolvedDAlangi_WMF
ResolvedDAlangi_WMF
ResolvedDAlangi_WMF
ResolvedDAlangi_WMF
OpenNone
Resolved mobrovac
ResolvedEevans
ResolvedEevans
ResolvedDzahn
ResolvedEevans
ResolvedEevans
OpenNone
DeclinedNone
ResolvedEevans
Resolvedfgiunchedi
ResolvedEevans
Resolved Pchelolo
OpenNone
OpenNone
OpenNone
Invalid GWicke
Resolvedliangent
Resolvedthiemowmde
OpenNone
Resolvedcscott
Resolvedcscott
Resolved Elitre
Resolvedcscott
Resolvedcscott
Resolvedcscott
Resolvedcscott
Resolvedcscott
OpenNone
DuplicateBUG REPORTNone
Resolvedcscott
OpenNone
OpenNone
OpenNone
OpenNone
ResolvedBUG REPORTJgiannelos
OpenNone
Resolved mobrovac
ResolvedJdforrester-WMF
ResolvedJdforrester-WMF
ResolvedEevans
ResolvedEevans
ResolvedEevans
Resolved mobrovac
Resolvedcscott
Resolved Pchelolo
Resolved Pchelolo
OpenNone
ResolvedDAlangi_WMF
ResolvedDAlangi_WMF
ResolvedNone
Resolvedpmiazga
ResolvedDAlangi_WMF

Event Timeline

Jgiannelos created this task.
daniel triaged this task as Medium priority.Dec 14 2022, 12:18 PM

+Proton (please add code base project tags - thanks!)

@JArguello-WMF and @DAlangi_WMF
If this work will likely occur over at least two sprint, then this is an epic ticket that needs to be groomed into the subtasks that are outlined in the acceptance criteria checklist.

Change 889211 had a related patch set uploaded (by D3r1ck01; author: Derick Alangi):

[mediawiki/services/chromium-render@master] Decouple Proton from RESTBase for article existence checks

https://gerrit.wikimedia.org/r/889211

BCornwall changed the status of subtask Restricted Task from Open to Stalled.Apr 25 2023, 8:51 PM
BCornwall changed the status of subtask Restricted Task from Stalled to In Progress.
Joe closed subtask Restricted Task as Resolved.May 2 2023, 8:33 AM

Change 929674 had a related patch set uploaded (by Hnowlan; author: Hnowlan):

[operations/puppet@production] trafficserver: route proton requests via the API gateway

https://gerrit.wikimedia.org/r/929674

Change 933427 had a related patch set uploaded (by Hnowlan; author: Hnowlan):

[operations/deployment-charts@master] rest-gateway: add domain list for restbase parity

https://gerrit.wikimedia.org/r/933427

Change 929674 merged by Hnowlan:

[operations/puppet@production] trafficserver: route proton requests via the API gateway

https://gerrit.wikimedia.org/r/929674

Change 933508 had a related patch set uploaded (by Hnowlan; author: Hnowlan):

[operations/puppet@production] trafficserver: add lua script for gateway routing

https://gerrit.wikimedia.org/r/933508

Change 933508 merged by Hnowlan:

[operations/puppet@production] trafficserver: add lua script for gateway routing

https://gerrit.wikimedia.org/r/933508

Change 933427 merged by jenkins-bot:

[operations/deployment-charts@master] rest-gateway: add domain list for restbase parity, fix regex

https://gerrit.wikimedia.org/r/933427

Change 934015 had a related patch set uploaded (by Hnowlan; author: Hnowlan):

[operations/puppet@production] trafficserver: add lua script for gateway routing

https://gerrit.wikimedia.org/r/934015

Change 934015 merged by Hnowlan:

[operations/puppet@production] trafficserver: add lua script for gateway routing

https://gerrit.wikimedia.org/r/934015

Change 941440 had a related patch set uploaded (by Hnowlan; author: Hnowlan):

[operations/puppet@production] trafficserver: route requests to proton via rest-gateway

https://gerrit.wikimedia.org/r/941440

Change 941440 merged by Hnowlan:

[operations/puppet@production] trafficserver: route requests to proton via rest-gateway

https://gerrit.wikimedia.org/r/941440

I think this is done?

Yes, this is now complete. Thanks @hnowlan 🎉