Page MenuHomePhabricator

Prepare for newer geoip2/geoip2 library
Closed, ResolvedPublic

Description

Forking from T379587: PHP 8.4: Implicitly nullable parameter declarations deprecated in 3rd party vendor libs

https://github.com/maxmind/GeoIP2-php/compare/v2.13.0...v3.1.0

Doesn't need doing yet, but after WMF production is on PHP 8.1, we'll want to upgrade geoip2/geoip2 to (at least) v3.1.0 to get PHP 8.4 support/fixes.

https://github.com/maxmind/GeoIP2-php/releases/tag/v3.0.0 requires PHP 8.1

https://github.com/maxmind/GeoIP2-php/releases/tag/v3.1.0 brings in PHP 8.4 fixes

However, 3.0.0 has some breaking changes that may need modifications making for; I don't know if they are relevant to our usages in IPInfo:

  • BREAKING: Read-only properties are now used for the model and record classes rather than magic methods. This significantly improves performance.
  • BREAKING: The raw property on model classess and the record property on record classes have been removed.
  • BREAKING: On GeoIp2\Record\Traits, the deprecated isAnonymousProxy and isSatelliteProvider properties have been removed. -- Neither of these are used in the extension
  • BREAKING: The jsonSerialize output has changed.

Related Objects

StatusSubtypeAssignedTask
OpenNone
OpenNone
ResolvedReedy
ResolvedKrinkle
Resolvedtstarling
ResolvedJdforrester-WMF
ResolvedJdforrester-WMF
Resolvedtstarling
ResolvedReedy
ResolvedBUG REPORTtstarling
Resolvedtstarling
ResolvedDaimona
ResolvedDaimona
ResolvedNone
ResolvedJdforrester-WMF
ResolvedBUG REPORTNone
Resolvedtstarling
ResolvedJdforrester-WMF
Resolvedssastry
Resolvedkostajh
Resolvedkostajh
Resolvedthiemowmde
Resolvedtstarling
Resolvedtstarling
ResolvedBUG REPORTLucas_Werkmeister_WMDE
Resolvedhoo
Resolvedhoo
ResolvedJdforrester-WMF
Resolvedthiemowmde
Resolvedkostajh
ResolvedUmherirrender
ResolvedPRODUCTION ERROR brooke
ResolvedTheresNoTime
Resolvedtstarling
ResolvedJdforrester-WMF
Resolved larissagaulia
ResolvedJMeybohm
ResolvedMoritzMuehlenhoff
ResolvedNone
DuplicateNone
ResolvedNone
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORNone
ResolvedPRODUCTION ERROR mszabo
ResolvedPRODUCTION ERROR mszabo
ResolvedPRODUCTION ERROR mszabo
ResolvedPRODUCTION ERRORNone
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERROR mszabo
ResolvedPRODUCTION ERRORNone
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORhashar
ResolvedPRODUCTION ERRORUmherirrender
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORthiemowmde
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORTacsipacsi
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORJdforrester-WMF
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORdcausse
ResolvedPRODUCTION ERROR mszabo
ResolvedPRODUCTION ERROR mszabo
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORUmherirrender
ResolvedPRODUCTION ERRORUmherirrender
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORjijiki
ResolvedScott_French
ResolvedPRODUCTION ERRORABreault-WMF
ResolvedPRODUCTION ERRORdaniel
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORihurbain
ResolvedPRODUCTION ERRORJdforrester-WMF
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORJdforrester-WMF
ResolvedPRODUCTION ERRORJdforrester-WMF
DuplicatePRODUCTION ERRORNone
ResolvedPRODUCTION ERRORJdforrester-WMF
ResolvedPRODUCTION ERRORUmherirrender
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
DuplicatePRODUCTION ERRORNone
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORJdforrester-WMF
ResolvedPRODUCTION ERRORPaladox
ResolvedPRODUCTION ERRORJdforrester-WMF
ResolvedBUG REPORTWargo
ResolvedPRODUCTION ERRORJdforrester-WMF
ResolvedBUG REPORTScott_French
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORssastry
ResolvedPRODUCTION ERRORReedy
ResolvedPRODUCTION ERRORJdforrester-WMF
ResolvedPRODUCTION ERRORUmherirrender
ResolvedPRODUCTION ERRORJdforrester-WMF
ResolvedPRODUCTION ERRORUmherirrender
ResolvedLadsgroup
ResolvedPRODUCTION ERRORUmherirrender
ResolvedFeature bd808
ResolvedScott_French
ResolvedScott_French
ResolvedScott_French
ResolvedKrinkle
ResolvedMSantos
ResolvedTgr
ResolvedScott_French
ResolvedScott_French
Resolveddduvall
ResolvedClement_Goubert
ResolvedScott_French
ResolvedScott_French
ResolvedScott_French
ResolvedScott_French
Resolvedori
ResolvedClement_Goubert
ResolvedScott_French
In ProgressScott_French
ResolvedScott_French
OpenNone
ResolvedScott_French
ResolvedScott_French
ResolvedScott_French
ResolvedScott_French
ResolvedScott_French
OpenNone

Event Timeline

Reedy renamed this task from Prepare for newer geoip libraries to Prepare for newer geoip2/geoip2 library.Nov 18 2024, 3:38 PM
Reedy updated the task description. (Show Details)
Krinkle subscribed.

Forking from T379587: PHP 8.4: Implicitly nullable parameter declarations

https://github.com/maxmind/GeoIP2-php/compare/v2.13.0...v3.1.0

Doesn't need doing yet, but after WMF production is on PHP 8.1, we'll want to upgrade geoip2/geoip2 to (at least) v3.1.0 to get PHP 8.4 support/fixes.

https://github.com/maxmind/GeoIP2-php/releases/tag/v3.0.0 requires PHP 8.1

If I understand correctly, this is not an issue under PHP 8.1, so I'll untag as such to keep the PHP 8.1 workboard focussed on tasks that block PHP 8.1 and/or that relate to making it run warning-free for third parties.

I am leaving the task relation to T319432: Migrate WMF production from PHP 7.4 to PHP 8.1 unchanged. But note that this is a parent relation, that is, the geoip2 upgrade can start after the PHP 8.1 upgrade has finished. It is not a dependency or subtask of T319432.

Change #1159393 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/vendor@master] Upgrading geoip2/geoip2 (v2.13.0 => v3.2.0)

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

Change #1159394 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/extensions/IPInfo@master] Update geoip2/geoip2 to ^3.2.0

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

Change #1159414 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/extensions/WikimediaEvents@master] Update geoip2/geoip2 to ^3.2.0

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

3.0.0 (2023-12-04)

  • BREAKING: Read-only properties are now used for the model and record classes rather than magic methods. This significantly improves performance.

Shouldn't affect source code, but affects test mocks. I see @Reedy has fixed those already.

  • BREAKING: The raw property on model classes and the record property on record classes have been removed.

The repos that use GeoIp2, per Codesearch are:

  • mediawiki/extensions/IPInfo
  • mediawiki/extensions/WikimediaEvents
  • mediawiki/extensions/DonationInterface

Searching those for >raw and >record yields no code results (Codesearch).

  • BREAKING: On GeoIp2\Record\Traits, the deprecated isAnonymousProxy and isSatelliteProvider properties have been removed.

No refs, LGTM. Codesearch.

  • GeoIp2\WebService\Client methods now throw an InvalidArgumentException […]. Previously, they would make […] throw a GeoIp2\Exception\InvalidRequestException.

No refs, LGTM. Codesearch.

  • BREAKING: The jsonSerialize output has changed.

Hard to be sure since this could be called many layers deep in a random variable passed to json_encode. I don't see any explicit calls to >jsonSerialize in these repos that look like they're passing a GeoIp2 record. And in the calls to json_encode, none of the params look like they're related to geo data.

Codesearch.

Change #1160191 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/extensions/DonationInterface@master] Update geoip2/geoip2 to ^3.2.0

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

Regarding the serialisation, I don't see anything obvious where we're saving it anywhere...

Change #1159393 merged by Jforrester:

[mediawiki/vendor@master] Upgrading geoip2/geoip2 (v2.13.0 => v3.2.0)

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

Change #1159394 merged by Jforrester:

[mediawiki/extensions/IPInfo@master] Update geoip2/geoip2 to ^3.2.0

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

Change #1159414 merged by jenkins-bot:

[mediawiki/extensions/WikimediaEvents@master] Update geoip2/geoip2 to ^3.2.0

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