Page MenuHomePhabricator

Visual Editor + Apache bug. Visual Editor not working when editing or creating a page with : or / characters in the Title. e.g. http://localhost/w/index.php/User:John/Newpage
Closed, ResolvedPublic

Description

Debian 10.5 buster
MediaWiki 1.35.0-rc.2
PHP 7.3.19-1~deb10u1 (apache2handler)
MariaDB 10.4.8-MariaDB-log

When I try to create a page using Visual Editor that has either : or / in the title I get an error: Error contacting the Parsoid/RESTBase server (HTTP 404)

Debugging the warning emitted in file ApiParsoidTrait.php (/extensions/VisualEditor/includes/ApiParsoidTrait.php) line 160 I get the following values (when I try to create /User:John/Testpage):

'code':
404

'trace':
#0 /var/www/html/w/extensions/VisualEditor/includes/ApiVisualEditor.php(67): ApiVisualEditor->requestRestbase(Object(Title), 'POST', 'transform/wikit...', Array)
#1 /var/www/html/w/extensions/VisualEditor/includes/ApiVisualEditor.php(251): ApiVisualEditor->parseWikitextFragment(Object(Title), 'testtext', false, NULL, true)
#2 /var/www/html/w/includes/api/ApiMain.php(1593): ApiVisualEditor->execute()
#3 /var/www/html/w/includes/api/ApiMain.php(529): ApiMain->executeAction()
#4 /var/www/html/w/includes/api/ApiMain.php(500): ApiMain->executeActionWithErrorHandling()
#5 /var/www/html/w/api.php(90): ApiMain->execute()
#6 /var/www/html/w/api.php(45): wfApiMain()
#7 {main}

'response':
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.38 (Debian) Server at localhost Port 80</address> </body></html>

'requestPath':
transform/wikitext/to/html/User%3AJohn%2FTestpage

What looks strange to me is this part:

'requestPath': transform/wikitext/to/html/User%3AJohn%2FTestpage

given that some / are sanitized and some are not. So what I did is remove the function urlencode from lines 230 & 250 in file ApiParsoidTrait.php then Visual Editor creates new pages either inside the User namespace or subpages in the Main namespace without problem.

i.e. the use of urlencode there seems to create problems.

Event Timeline

Johnbra created this task.Thu, Sep 3, 7:36 AM
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptThu, Sep 3, 7:36 AM
Johnbra updated the task description. (Show Details)Thu, Sep 3, 7:44 AM
Johnbra updated the task description. (Show Details)Thu, Sep 3, 7:56 AM
Johnbra updated the task description. (Show Details)Thu, Sep 3, 8:00 AM
Seb35 added a subscriber: Seb35.Thu, Sep 3, 10:10 AM

I have pretty much the same configuration, except I use nginx and you use Apache, and I have no issue, neither when I create a page with VE, neither when I edit one existing page. When I create a page, both the standard version with urlencode at lines 230 and 250 in extensions/VisualEditor/includes/ApiParsoidTrait.php, and your version without urlencode work. But when I edit an existing page, only the standard version works, Parsoid says me 404 with your version. Hence the only difference seems to be the webserver.

Can you provide your access logs related to "POST api.php" and "POST rest.php" to check how is encoded your URLs?

Also you can set $wgDebugLogFile = '/tmp/mediawiki.log'; in LocalSettings.php to get verbose logs. Can you provide the headers of the requests from the point of view of MediaWiki (like Start request POST /w/rest.php/…)?

Thanks for testing this Seb35, my results seem strange when compared to your results.

I reverted back to the original version (i.e. no changes to lines 230 and 250 in extensions/VisualEditor/includes/ApiParsoidTrait.php), and setting the $wgDebugLogFile I get the below:

Start request POST /w/api.php
IP: ::1
HTTP HEADERS:
HOST: localhost
CONNECTION: keep-alive
CONTENT-LENGTH: 2059
ACCEPT: application/json, text/javascript, */*; q=0.01
X-REQUESTED-WITH: XMLHttpRequest
USER-AGENT: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
CONTENT-TYPE: multipart/form-data; boundary=----WebKitFormBoundaryd59bCYTV7xvNev6P
ORIGIN: http://localhost
SEC-FETCH-SITE: same-origin
SEC-FETCH-MODE: cors
SEC-FETCH-DEST: empty
REFERER: http://localhost/w/index.php?title=Main_Page/Newpage2&action=edit
ACCEPT-ENCODING: gzip, deflate, br
ACCEPT-LANGUAGE: en-GB,en-US;q=0.9,en;q=0.8
COOKIE: mediadb_mw__session=802bh4rlvuspd64mnhhutqit0rfcu7j0; mediadb_mw_UserID=10; mediadb_mw_UserName=John; mediadb_mw_Token=fac9c8a3e5c8655486daeea2f275c56d; VEE=visualeditor; UseDC=master; UseCDNCache=false
(end headers)
[localisation] LocalisationCache using store LCStoreDB
[session] SessionManager using store SqlBagOStuff
[DBQuery] Wikimedia\Rdbms\DatabaseMysqlBase::open [0s] localhost: SET group_concat_max_len = 262144, sql_mode = ''
[DBReplication] Wikimedia\Rdbms\LBFactory::getChronologyProtector: request info {
    "IPAddress": "::1",
    "UserAgent": "Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/85.0.4183.83 Safari\/537.36",
    "ChronologyProtection": false,
    "ChronologyPositionIndex": 0,
    "ChronologyClientId": false
}
[DBReplication] Wikimedia\Rdbms\ChronologyProtector::getStartupMasterPositions: client ID is 3ab04fb2a97c6552062fdb96e07fc1de (read)
[DBReplication] Wikimedia\Rdbms\ChronologyProtector::getStartupMasterPositions: key is global:Wikimedia\Rdbms\ChronologyProtector:3ab04fb2a97c6552062fdb96e07fc1de:v2 (read)
[DBConnection] Wikimedia\Rdbms\LoadBalancer::lazyLoadReplicationPositions: executed chronology callback.
[DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: opened new connection for 0
User: cache miss for user 10
[DBQuery] Wikimedia\Rdbms\Database::beginIfImplied (User::loadFromDatabase) [0s] localhost: BEGIN
[DBQuery] User::loadFromDatabase [0s] localhost: SELECT  user_id,user_name,user_real_name,user_email,user_touched,user_token,user_email_authenticated,user_email_token,user_email_token_expires,user_registration,user_editcount,user_actor.actor_id  FROM `mw_user` JOIN `mw_actor` `user_actor` ON ((user_actor.actor_user = user_id))   WHERE user_id = 10  LIMIT 1  
[objectcache] fetchOrRegenerate(global:user:id:mediadb-mw_:10): miss, new value computed
[DBQuery] Wikimedia\Rdbms\DatabaseMysqlBase::open [0s] localhost: SET group_concat_max_len = 262144, sql_mode = ''
[DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: opened new connection for 0
[DBQuery] SqlBagOStuff::fetchBlobMulti [0s] localhost: SELECT  keyname,value,exptime  FROM `mw_objectcache`    WHERE keyname = 'mediadb-mw_:MWSession:802bh4rlvuspd64mnhhutqit0rfcu7j0'  
[DBQuery] MediaWiki\User\UserGroupManager::getUserGroupMemberships [0s] localhost: SELECT  ug_user,ug_group,ug_expiry  FROM `mw_user_groups`    WHERE ug_user = 10  
[DBQuery] Wikimedia\Rdbms\DatabaseMysqlBase::serverIsReadOnly [0s] localhost: SELECT @@GLOBAL.read_only AS Value
[objectcache] fetchOrRegenerate(global:rdbms-server-readonly:localhost:mediadb:): miss, new value computed
[DBQuery] LinkCache::fetchPageRow [0s] localhost: SELECT  page_id,page_len,page_is_redirect,page_latest,page_restrictions,page_content_model  FROM `mw_page`    WHERE page_namespace = 0 AND page_title = 'Main_Page/Newpage2'  LIMIT 1  
[ContentHandler] Registered handler for wikitext: WikitextContentHandler
Unstubbing $wgLang on call of $wgLang::unstub from ContentHandler->getPageLanguage
[DBQuery] MediaWiki\Revision\RevisionStore::fetchRevisionRowFromConds [0s] localhost: SELECT  rev_id,rev_page,rev_timestamp,rev_minor_edit,rev_deleted,rev_len,rev_parent_id,rev_sha1,comment_rev_comment.comment_text AS `rev_comment_text`,comment_rev_comment.comment_data AS `rev_comment_data`,comment_rev_comment.comment_id AS `rev_comment_cid`,actor_rev_user.actor_user AS `rev_user`,actor_rev_user.actor_name AS `rev_user_text`,temp_rev_user.revactor_actor AS `rev_actor`,page_namespace,page_title,page_id,page_latest,page_is_redirect,page_len,user_name  FROM `mw_revision` JOIN `mw_revision_comment_temp` `temp_rev_comment` ON ((temp_rev_comment.revcomment_rev = rev_id)) JOIN `mw_comment` `comment_rev_comment` ON ((comment_rev_comment.comment_id = temp_rev_comment.revcomment_comment_id)) JOIN `mw_revision_actor_temp` `temp_rev_user` ON ((temp_rev_user.revactor_rev = rev_id)) JOIN `mw_actor` `actor_rev_user` ON ((actor_rev_user.actor_id = temp_rev_user.revactor_actor)) JOIN `mw_page` ON ((page_id = rev_page)) LEFT JOIN `mw_user` ON ((actor_rev_user.actor_user != 0) AND (user_id = actor_rev_user.actor_user))   WHERE page_namespace = 8 AND page_title = 'Gadgets-definition' AND (rev_id=page_latest)  LIMIT 1  
[objectcache] fetchOrRegenerate(mediadb-mw_:gadgets-definition:9:2): miss, new value computed
[UserOptionsManager] Loading options from database
[DBQuery] MediaWiki\User\UserOptionsManager::loadUserOptions [0s] localhost: SELECT  up_property,up_value  FROM `mw_user_properties`    WHERE up_user = 10  
[http] POST: http://localhost/w/rest.php/localhost/v3/transform/html/to/wikitext/Main_Page%2FNewpage2
[VisualEditor] ApiParsoidTrait::requestRestbase: Received HTTP 404 from RESTBase
[MessageCache] MessageCache using store SqlBagOStuff
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'deps'  LIMIT 1  
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'list'  LIMIT 1  
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'preload'  LIMIT 1  
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'preload'  LIMIT 1  
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'messages:apierror-visualeditor-docserver-http'  LIMIT 1  
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'list'  LIMIT 1  
[DBQuery] SqlBagOStuff::fetchBlobMulti [0s] localhost: SELECT  keyname,value,exptime  FROM `mw_objectcache`    WHERE keyname = 'mediadb-mw_:messages:en'  
[DBQuery] SqlBagOStuff::fetchBlobMulti [0s] localhost: SELECT  keyname,value,exptime  FROM `mw_objectcache`    WHERE keyname = 'mediadb-mw_:messages:en:status'  
[DBQuery] SqlBagOStuff::lock [0s] localhost: SELECT GET_LOCK('mediadb-mw_:messages:en', 0) AS lockstatus
[SQLBagOStuff] SqlBagOStuff::lock failed due to timeout for mediadb-mw_:messages:en.
[DBQuery] MessageCache::loadFromDB(en)-big [0s] localhost: SELECT  page_title,page_latest  FROM `mw_page`    WHERE page_is_redirect = 0 AND page_namespace = 8 AND (page_title NOT LIKE '%/%' ESCAPE '`' ) AND (page_len > 10000)  
[DBQuery] MessageCache::loadFromDB(en)-small [0s] localhost: SELECT  /*! STRAIGHT_JOIN */ rev_id,rev_page,rev_timestamp,rev_minor_edit,rev_deleted,rev_len,rev_parent_id,rev_sha1,comment_rev_comment.comment_text AS `rev_comment_text`,comment_rev_comment.comment_data AS `rev_comment_data`,comment_rev_comment.comment_id AS `rev_comment_cid`,actor_rev_user.actor_user AS `rev_user`,actor_rev_user.actor_name AS `rev_user_text`,temp_rev_user.revactor_actor AS `rev_actor`,page_namespace,page_title,page_id,page_latest,page_is_redirect,page_len,user_name  FROM `mw_page` JOIN `mw_revision` ON ((page_id = rev_page)) JOIN `mw_revision_comment_temp` `temp_rev_comment` ON ((temp_rev_comment.revcomment_rev = rev_id)) JOIN `mw_comment` `comment_rev_comment` ON ((comment_rev_comment.comment_id = temp_rev_comment.revcomment_comment_id)) JOIN `mw_revision_actor_temp` `temp_rev_user` ON ((temp_rev_user.revactor_rev = rev_id)) JOIN `mw_actor` `actor_rev_user` ON ((actor_rev_user.actor_id = temp_rev_user.revactor_actor)) LEFT JOIN `mw_user` ON ((actor_rev_user.actor_user != 0) AND (user_id = actor_rev_user.actor_user))   WHERE page_is_redirect = 0 AND page_namespace = 8 AND (page_title NOT LIKE '%/%' ESCAPE '`' ) AND (page_len <= 10000) AND (page_latest = rev_id)  
[DBQuery] MediaWiki\Revision\RevisionStore::loadSlotRecords [0s] localhost: SELECT  slot_revision_id,slot_content_id,slot_origin,slot_role_id,content_size,content_sha1,content_address,content_model  FROM `mw_slots` JOIN `mw_content` ON ((slot_content_id = content_id))   WHERE slot_revision_id = '212'  
[DBQuery] MediaWiki\Storage\NameTableStore::loadTable [0s] localhost: SELECT  role_id AS `id`,role_name AS `name`  FROM `mw_slot_roles`     ORDER BY id 
[objectcache] fetchOrRegenerate(global:NameTableSqlStore:slot_roles:mediadb-mw_): miss, new value computed
[DBQuery] MediaWiki\Storage\NameTableStore::loadTable [0s] localhost: SELECT  model_id AS `id`,model_name AS `name`  FROM `mw_content_models`     ORDER BY id 
[objectcache] fetchOrRegenerate(global:NameTableSqlStore:content_models:mediadb-mw_): miss, new value computed
[DBQuery] MediaWiki\Storage\SqlBlobStore::fetchBlobs [0s] localhost: SELECT  old_id,old_text,old_flags  FROM `mw_text`    WHERE old_id = 207  
[objectcache] fetchOrRegenerate(global:SqlBlobStore-blob:mediadb-mw_:tt%3A207): miss, new value computed
[DBQuery] SqlBagOStuff::updateTable [0.003s] localhost: REPLACE INTO `mw_objectcache` (keyname,value,exptime) VALUES ('mediadb-mw_:messages:en','U��\n�0��>��q t]�6;�&��Md��͂V�ԋ��v޼�|�� Hx�0VMGt,�!�\nX0\n�O���\\�(�\Z{Î�;GV������8������9���?���G�����2�aW�EQ[�\r���Vņ��\'X>����0j\Z����Ѫ��R��Z�x�*���XVoW����.8W\\F\\�&S�~�','20380119031407')
[DBQuery] SqlBagOStuff::unlock [0s] localhost: SELECT RELEASE_LOCK('mediadb-mw_:messages:en') as lockstatus
[MessageCache] MessageCache::load: Loading en... local cache is empty, global cache is expired/volatile, loading from database
ParserFactory: using default preprocessor
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'magicWords'  LIMIT 1  
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'namespaceGenderAliases'  LIMIT 1  
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'linkPrefixExtension'  LIMIT 1  
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'messages:api-usage-docref'  LIMIT 1  
[DBQuery] LCStoreDB::get [0s] localhost: SELECT  lc_value  FROM `mw_l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'messages:api-usage-mailinglist-ref'  LIMIT 1  
ApiMain::setCacheMode: setting cache mode private
[DBQuery] MediaWiki::preOutputCommit [0s] localhost: COMMIT
MediaWiki::preOutputCommit: primary transaction round committed
MediaWiki::preOutputCommit: pre-send deferred updates completed
MediaWiki::preOutputCommit: session changes committed
[DBReplication] Wikimedia\Rdbms\ChronologyProtector::storeSessionReplicationPosition: DB 'localhost' touched
[DBReplication] Wikimedia\Rdbms\ChronologyProtector::shutdown: no master positions to save
MediaWiki::preOutputCommit: LBFactory shutdown completed
[cookie] setcookie: "UseDC", "master", "1599130147", "/", "", "", "1", ""
[cookie] setcookie: "UseCDNCache", "false", "1599130147", "/", "", "", "1", ""
User::getBlockedStatus: checking blocked status for John
[DBQuery] Wikimedia\Rdbms\Database::beginIfImplied (MediaWiki\Block\DatabaseBlock::newLoad) [0s] localhost: BEGIN
[DBQuery] MediaWiki\Block\DatabaseBlock::newLoad [0s] localhost: SELECT  ipb_id,ipb_address,ipb_timestamp,ipb_auto,ipb_anon_only,ipb_create_account,ipb_enable_autoblock,ipb_expiry,ipb_deleted,ipb_block_email,ipb_allow_usertalk,ipb_parent_block_id,ipb_sitewide,comment_ipb_reason.comment_text AS `ipb_reason_text`,comment_ipb_reason.comment_data AS `ipb_reason_data`,comment_ipb_reason.comment_id AS `ipb_reason_cid`,actor_ipb_by.actor_user AS `ipb_by`,actor_ipb_by.actor_name AS `ipb_by_text`,ipb_by_actor  FROM `mw_ipblocks` JOIN `mw_comment` `comment_ipb_reason` ON ((comment_ipb_reason.comment_id = ipb_reason_id)) JOIN `mw_actor` `actor_ipb_by` ON ((actor_ipb_by.actor_id = ipb_by_actor))   WHERE ipb_address IN ('John','0:0:0:0:0:0:0:1')  OR ((ipb_range_start  LIKE 'v6-0000%' ESCAPE '`' ) AND (ipb_range_start <= 'v6-00000000000000000000000000000001') AND (ipb_range_end >= 'v6-00000000000000000000000000000001'))  
[DBQuery] MediaWiki::restInPeace [0s] localhost: COMMIT
[DeferredUpdates] DeferredUpdates::run: started MWCallableUpdate_Pingback::schedulePingback #244
[DeferredUpdates] DeferredUpdates::run: ended MWCallableUpdate_Pingback::schedulePingback #244
Request ended normally
[session] Saving all sessions on shutdown
[DBConnection] Wikimedia\Rdbms\LBFactory::destroy: closing connection to database 'localhost'.
[DBConnection] Wikimedia\Rdbms\LBFactory::destroy: closing connection to database 'localhost'.
Seb35 added a comment.Thu, Sep 3, 1:05 PM

I tested after installing Apache 2.4.38 with default settings and mod_php7.3 and *I can confirm* the bug when creating a page, and indeed solved by removing the two urlencode in VE code; and I can never edit an existing page, both with and without the two urlencode when there is a slash in the title.

I suspect something like a double-decoding somewhere in the stack, perhaps in mod_php or in Apache, perhaps there is some option to pre-decode percent-encoded URLs incompatible with this part of MediaWiki (given the core MediaWiki understand the URLs provided by Apache to display pages).

Seb35 added a comment.Thu, Sep 3, 1:24 PM

It’s really a difference of treatment by core Apache between:

http://localhost/mediawiki-1.35.0-rc.2/rest.php/localhost/v3/page/html/Utilisateur:Seb35/Test7/25?redirect=false&stash=true

which is handled by the rest.php script with an unknown (MediaWiki) handler, i.e. 404 MediaWiki error {"messageTranslations":{"fr":"Le chemin relatif requis (/localhost/v3/page/html/Utilisateur:Seb35/Test7/25) ne correspondait à aucun gestionnaire connu","en":"The requested relative path (/localhost/v3/page/html/Utilisateur:Seb35/Test7/25) did not match any known handler"},"httpCode":404,"httpReason":"Not Found"}

and

http://localhost/mediawiki-1.35.0-rc.2/rest.php/localhost/v3/page/html/Utilisateur%3ASeb35%2FTest7/25?redirect=false&stash=true

which is directly handled by Apache, returning a 404 Apache error with its standard page Not Found - The requested URL was not found on this server. - Apache/2.4.38 (Debian) Server at localhost Port 80

Seb35 added a comment.Thu, Sep 3, 1:50 PM

I’m no more accustomed to Apache, but probably it is related to some pathinfo, I tried without success to play with AcceptPathInfo and AllowEncodingSlashed. The second URL is always rejected for me.

Thank you, given this is a confirmed bug using Apache (and editing doesn't work even with the changes proposed), I will install nginx for the time being.

Johnbra renamed this task from Visual Editor not working when : or / characters in the Title. Possible bug? to Visual Editor + Apache bug. Visual Editor not working when editing or creating a page with : or / characters in the Title. e.g. http://localhost/w/index.php/User:John/Newpage.Thu, Sep 3, 2:22 PM
Seb35 added a comment.Fri, Sep 4, 5:19 PM

I finally found: it works by setting AllowEncodedSlashes NoDecode in the VirtualHost (can also be on but Apache docs say it’s more secure to set to NoDecode). I it also mentionned in Restbase configuration, which has URLs similar to Parsoid.

In my previous tests I set up AllowEncodedSlashes in global config as it should be authorised given the docs, but it seems it had no effect.

@Johnbra: do you want to test or you already switched to nginx?

Seb35 closed this task as Resolved.Fri, Sep 4, 5:46 PM
Seb35 claimed this task.
Restricted Application added a project: User-Ryasmeen. · View Herald TranscriptFri, Sep 4, 5:46 PM

I had changed to nginx but was having another problem....

Just reinstalled apache, tried it and it works!

Thank you very much for your help

Draceane reopened this task as Open.Wed, Sep 9, 9:40 PM
JTannerWMF moved this task from To Triage to Triaged on the VisualEditor board.Thu, Sep 10, 4:32 PM
matmarex closed this task as Resolved.Thu, Sep 10, 9:31 PM
matmarex added a subscriber: matmarex.

@Draceane This task was about an issue that never affected Wikimedia wikis, it's unlikely to be the same as the issue that person ran into. Unfortunately there are several different problems that all result in the same message ("Error contacting the Parsoid/RESTBase server (HTTP 404)").

Your issue is most likely the same as this: T235822: VisualEditor can't save edits (HTTP 404 error) when it was open for more than 24 hours while editing an old revision or after switching from wikitext, although I can't be sure (I tried searching our error logs for cswiki and I can't find anything corresponding to that edit attempt).

If it keeps happening, please open a new task.

Draceane removed a subscriber: Draceane.Thu, Sep 10, 9:36 PM