Page MenuHomePhabricator

Remove usage of preq in all services and replace with node fetch; requires node >=18.x.x
Open, Needs TriagePublic

Description

  • mediawiki/services/cxserver : T350773
  • mediawiki/services/citoid done, but need to remove undici wmf fork once node 26 is released
  • html-metadata: released as 3.0.0
  • service-runner: T309772, done but should replace with service-utils instead.
  • mediawiki/services/example-node-api removal in progress
  • mediawiki/services/geoshapes
  • mediawiki/services/recommendation-api sunsetting in progress
  • mediawiki/services/chromium-render
  • mediawiki/services/kartotherian
  • mediawiki/services/mobileapps
  • mediawiki/services/push-notifications
  • mediawiki/services/servicelib-node sunsetting in progress
  • mediawiki/services/wikifeeds
  • mediawiki/services/change-propagation
  • mediawiki/services/restbase - sunsetting in progress

https://libraryupgrader2.wmcloud.org/library/npm/preq?branch=main

Event Timeline

Change #1122574 had a related patch set uploaded (by Mvolz; author: Mvolz):

[mediawiki/services/citoid@master] Remove preq from spec tests

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

Change #1122574 merged by jenkins-bot:

[mediawiki/services/citoid@master] Remove preq from spec tests

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

Change #1122934 had a related patch set uploaded (by Mvolz; author: Mvolz):

[mediawiki/services/citoid@master] Remove preq from app tests

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

Change #1122937 had a related patch set uploaded (by Mvolz; author: Mvolz):

[mediawiki/services/citoid@master] [WIP] Remove preq from app tests

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

Change #1122934 abandoned by Mvolz:

[mediawiki/services/citoid@master] Remove preq from app tests

Reason:

duplicate

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

Change #1122937 merged by jenkins-bot:

[mediawiki/services/citoid@master] Remove preq from app tests

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

Change #1122978 had a related patch set uploaded (by Mvolz; author: Mvolz):

[mediawiki/services/citoid@master] Remove preq from error tests

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

Change #1122978 merged by jenkins-bot:

[mediawiki/services/citoid@master] Remove preq from error tests

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

Change #1125127 had a related patch set uploaded (by Mvolz; author: Mvolz):

[mediawiki/services/citoid@master] build: Update dependencies

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

Change #1125127 merged by jenkins-bot:

[mediawiki/services/citoid@master] build: Update dependencies

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

Mvolz updated the task description. (Show Details)

Is this just for Editing services, or do we want to do the others? https://libraryupgrader2.wmcloud.org/library/npm/preq?branch=main

It should be done everywhere, as its a wrapper of the request library, which is itself deprecated, see: https://www.npmjs.com/package/request

Is mediawiki/services/servicelib-node being used anywhere? It looks like an abandoned attempt to convert service-template-node into a library. @tchin maybe knows if we should we empty this repo / decomm it (as with example-node-api)?

Is mediawiki/services/servicelib-node being used anywhere? It looks like an abandoned attempt to convert service-template-node into a library. @tchin maybe knows if we should we empty this repo / decomm it (as with example-node-api)?

It was being created as part of T289207; I filed T365512 for service-scaffold-node but missed servicelib-node, which @tchin noted in T365512#9880928. Will file a task. [Edit] T388424

Change #1153997 had a related patch set uploaded (by Mvolz; author: Mvolz):

[mediawiki/services/citoid@master] Replace preq with fetch in test server

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

Change #1153997 merged by jenkins-bot:

[mediawiki/services/citoid@master] Replace preq with fetch in test server

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

Change #1156292 had a related patch set uploaded (by Mvolz; author: Mvolz):

[mediawiki/services/citoid@master] Remove preq from ZoteroService

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

Change #1156292 merged by jenkins-bot:

[mediawiki/services/citoid@master] Remove preq from ZoteroService

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

Change #1182150 had a related patch set uploaded (by Mvolz; author: Mvolz):

[mediawiki/services/citoid@master] Redo "Remove preq from ZoteroService"

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

Change #1182150 merged by jenkins-bot:

[mediawiki/services/citoid@master] Redo "Remove preq from ZoteroService"

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

Change #1153119 had a related patch set uploaded (by Mvolz; author: Mvolz):

[mediawiki/services/citoid@master] [WIP] Remove preq usage

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

Change #1230285 had a related patch set uploaded (by Mvolz; author: Mvolz):

[mediawiki/services/citoid@master] Remove preq dependency

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

Change #1153119 abandoned by Mvolz:

[mediawiki/services/citoid@master] Remove preq and request usage

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

Change #1230285 merged by jenkins-bot:

[mediawiki/services/citoid@master] Remove preq dependency

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

Change #1243079 had a related patch set uploaded (by Jforrester; author: Mvolz):

[mediawiki/services/citoid@master] Remove preq dependency again

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

Change #1243079 merged by jenkins-bot:

[mediawiki/services/citoid@master] Remove preq dependency again

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

Mvolz updated the task description. (Show Details)

This is now done in citoid, however note that for outbound requests, fetch in node versions <= 24 does not use the correct protocol for http when contacting it through a proxy.

This means if you try to make outbound requests using the http protocol, our squid proxy url-downloader used in production rejects the requests. This is not caught by CI because external requests in CI does not pass through url-downloader: T427499

We are therefore temporarily use a WMF fork of undici here: https://github.com/wikimedia/undici-proxy in production

Undici plans to support this natively in node from node 26. They are not planning to backport it. So this is "done" in citoid but there is further work to be done once we have node 26 in production to switch from this fork back to node 26's native undici. See thread: https://github.com/nodejs/undici/pull/5116