What is the problem?
With this clienthints payload:
{"bitness": null, "platformVersion": 29280, "brands": {"-70": "n", "null": -19480, "false": "\\u00887\\u0007", "\\u0016\\ud95c\\udda46BX": true, "m": ""}, "platform": "", "architecture": null, "mobile": "r", "model": false}
I see this error in the logs:
[error] [139f0c093f36788576efeabe] /bare/rest.php/checkuser/v0/useragent-clienthints/revision/16882 PHP Warning: implode(): Invalid arguments passed #0 [internal function]: MWExceptionHandler::handleError() #1 /home/drw/wikimedia/srv/bare/extensions/CheckUser/src/ClientHints/ClientHintsData.php(128): implode() #2 /home/drw/wikimedia/srv/bare/extensions/CheckUser/src/Services/UserAgentClientHintsManager.php(151): MediaWiki\CheckUser\ClientHints\ClientHintsData->toDatabaseRows() #3 /home/drw/wikimedia/srv/bare/extensions/CheckUser/src/Services/UserAgentClientHintsManager.php(114): MediaWiki\CheckUser\Services\UserAgentClientHintsManager->insertMappingRows() #4 /home/drw/wikimedia/srv/bare/extensions/CheckUser/src/Api/Rest/Handler/UserAgentClientHintsHandler.php(113): MediaWiki\CheckUser\Services\UserAgentClientHintsManager->insertClientHintValues() #5 /home/drw/wikimedia/srv/bare/includes/Rest/SimpleHandler.php(38): MediaWiki\CheckUser\Api\Rest\Handler\UserAgentClientHintsHandler->run() #6 /home/drw/wikimedia/srv/bare/includes/Rest/Router.php(517): MediaWiki\Rest\SimpleHandler->execute() #7 /home/drw/wikimedia/srv/bare/includes/Rest/Router.php(422): MediaWiki\Rest\Router->executeHandler() #8 /home/drw/wikimedia/srv/bare/includes/Rest/EntryPoint.php(195): MediaWiki\Rest\Router->execute() #9 /home/drw/wikimedia/srv/bare/includes/Rest/EntryPoint.php(135): MediaWiki\Rest\EntryPoint->execute() #10 /home/drw/wikimedia/srv/bare/rest.php(31): MediaWiki\Rest\EntryPoint::main() #11 {main}
The client sees a success message. The warning is only in the logs.
It does not seem to prevent other client hints data being recorded.
Steps to reproduce problem
- Setup debug logging on your local wiki (https://www.mediawiki.org/wiki/Manual:How_to_debug#Setting_up_a_debug_log_file)
- Install checkuser
- While logged out, make an edit on Firefox
- Find the revision ID of the edit you just made
- Run this command, replace <rev id> with the revision ID you just found:
curl 'http://localhost/bare/rest.php/checkuser/v0/useragent-clienthints/revision/<rev id>' -H 'Content-Type: application/json' --data-raw '{"bitness": null, "platformVersion": 29280, "brands": {"-70": "n", "null": -19480, "false": "\\u00887\\u0007", "\\u0016\\ud95c\\udda46BX": true, "m": ""}, "platform": "", "architecture": null, "mobile": "r", "model": false}'
- Inspect your debug.log file
Expected behavior: No errors, exceptions or warnings.
Observed behavior: You will see several lines with PHP Warning: implode(): Invalid arguments passed.
Environment
Wiki(s): MediaWiki 1.41.0-alpha (80d62c5) 10:11, 25 August 2023. CheckUser 2.5 (f1ead0e) 10:13, 25 August 2023.
QA Results - Local, VS
AC | Status | Details |
---|---|---|
1 | ✅ | https://phabricator.wikimedia.org/T344993 |