Page MenuHomePhabricator

Upload: RecordWizard stops uploading pending recordings
Open, Needs TriagePublicBUG REPORT

Description

List of steps to reproduce (step by step, including full links if applicable):

  • No ideas yet

What happens?:

This error :

jQuery.Deferred exception: data is null rw.Record.prototype.finishUpload/<@https://lingualibre.org/load.php?lang=fr&modules=dataValues%2Cjquery%2Coojs%2Coojs-ui%2Coojs-ui-core%2Coojs-ui-toolbars%2Coojs-ui-widgets%2Coojs-ui-windows%2Csite%7CdataValues.DataValue%2CTimeValue%2Cvalues%7Cext.echo.api%2Cinit%7Cext.recordWizard%7Cext.recordWizard.base%2Ccomponents%2Cgenerator%2Crecorder%2Cstore%2Cupload%2Cvuejs%2Cvues%2Cwidgets%2Cwikibase%7Cext.recordWizard.wikibase.serialization%7Cext.uls.common%2Cinterface%2Cpreferences%2Cwebfonts%7Cjquery.client%2Ccookie%2Cspinner%2Cui%7Cjquery.event.special.eachchange%7Cjquery.spinner.styles%7Cjquery.ui.suggester%7Cjquery.uls.data%7Cjquery.wikibase.entityselector%7Cmediawiki.ForeignApi%2CString%2CTitle%2CUri%2Capi%2Cbase%2Ccldr%2Ccookie%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.ForeignApi.core%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%2Cstartup%7Coojs-ui-toolbars.icons%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Coojs-ui.styles.icons-content%2Cicons-interactions%2Cicons-location%2Cicons-media%2Cicons-movement%2Cicons-wikimedia%7Cskins.bluell.js%7Cuser.defaults%7Cutil.inherit%7Cwikibase.api.RepoApi%7Cwikibase.datamodel%7Cwikibase.ui.entitysearch&skin=bluell&version=1k09u:538:31
mightThrow@https://lingualibre.org/load.php?lang=fr&modules=dataValues%2Cjquery%2Coojs%2Coojs-ui%2Coojs-ui-core%2Coojs-ui-toolbars%2Coojs-ui-widgets%2Coojs-ui-windows%2Csite%7CdataValues.DataValue%2CTimeValue%2Cvalues%7Cext.echo.api%2Cinit%7Cext.recordWizard%7Cext.recordWizard.base%2Ccomponents%2Cgenerator%2Crecorder%2Cstore%2Cupload%2Cvuejs%2Cvues%2Cwidgets%2Cwikibase%7Cext.recordWizard.wikibase.serialization%7Cext.uls.common%2Cinterface%2Cpreferences%2Cwebfonts%7Cjquery.client%2Ccookie%2Cspinner%2Cui%7Cjquery.event.special.eachchange%7Cjquery.spinner.styles%7Cjquery.ui.suggester%7Cjquery.uls.data%7Cjquery.wikibase.entityselector%7Cmediawiki.ForeignApi%2CString%2CTitle%2CUri%2Capi%2Cbase%2Ccldr%2Ccookie%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.ForeignApi.core%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%2Cstartup%7Coojs-ui-toolbars.icons%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Coojs-ui.styles.icons-content%2Cicons-interactions%2Cicons-location%2Cicons-media%2Cicons-movement%2Cicons-wikimedia%7Cskins.bluell.js%7Cuser.defaults%7Cutil.inherit%7Cwikibase.api.RepoApi%7Cwikibase.datamodel%7Cwikibase.ui.entitysearch&skin=bluell&version=1k09u:49:149
resolve/</process<@https://lingualibre.org/load.php?lang=fr&modules=dataValues%2Cjquery%2Coojs%2Coojs-ui%2Coojs-ui-core%2Coojs-ui-toolbars%2Coojs-ui-widgets%2Coojs-ui-windows%2Csite%7CdataValues.DataValue%2CTimeValue%2Cvalues%7Cext.echo.api%2Cinit%7Cext.recordWizard%7Cext.recordWizard.base%2Ccomponents%2Cgenerator%2Crecorder%2Cstore%2Cupload%2Cvuejs%2Cvues%2Cwidgets%2Cwikibase%7Cext.recordWizard.wikibase.serialization%7Cext.uls.common%2Cinterface%2Cpreferences%2Cwebfonts%7Cjquery.client%2Ccookie%2Cspinner%2Cui%7Cjquery.event.special.eachchange%7Cjquery.spinner.styles%7Cjquery.ui.suggester%7Cjquery.uls.data%7Cjquery.wikibase.entityselector%7Cmediawiki.ForeignApi%2CString%2CTitle%2CUri%2Capi%2Cbase%2Ccldr%2Ccookie%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.ForeignApi.core%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%2Cstartup%7Coojs-ui-toolbars.icons%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Coojs-ui.styles.icons-content%2Cicons-interactions%2Cicons-location%2Cicons-media%2Cicons-movement%2Cicons-wikimedia%7Cskins.bluell.js%7Cuser.defaults%7Cutil.inherit%7Cwikibase.api.RepoApi%7Cwikibase.datamodel%7Cwikibase.ui.entitysearch&skin=bluell&version=1k09u:49:808
 undefined load.php:51:970

Same, but urldecoded :

jQuery.Deferredexception:dataisnullrw.Record.prototype.finishUpload/<@https://lingualibre.org/load.php?lang=fr&modules=dataValues,jquery,oojs,oojs-ui,oojs-ui-core,oojs-ui-toolbars,oojs-ui-widgets,oojs-ui-windows,site|dataValues.DataValue,TimeValue,values|ext.echo.api,init|ext.recordWizard|ext.recordWizard.base,components,generator,recorder,store,upload,vuejs,vues,widgets,wikibase|ext.recordWizard.wikibase.serialization|ext.uls.common,interface,preferences,webfonts|jquery.client,cookie,spinner,ui|jquery.event.special.eachchange|jquery.spinner.styles|jquery.ui.suggester|jquery.uls.data|jquery.wikibase.entityselector|mediawiki.ForeignApi,String,Title,Uri,api,base,cldr,cookie,jqueryMsg,language,storage,user,util,widgets|mediawiki.ForeignApi.core|mediawiki.libs.pluralruleparser|mediawiki.page.ready,startup|oojs-ui-toolbars.icons|oojs-ui-widgets.icons|oojs-ui-windows.icons|oojs-ui.styles.icons-content,icons-interactions,icons-location,icons-media,icons-movement,icons-wikimedia|skins.bluell.js|user.defaults|util.inherit|wikibase.api.RepoApi|wikibase.datamodel|wikibase.ui.entitysearch&skin=bluell&version=1k09u:538:31mightThrow@https://lingualibre.org/load.php?lang=fr&modules=dataValues,jquery,oojs,oojs-ui,oojs-ui-core,oojs-ui-toolbars,oojs-ui-widgets,oojs-ui-windows,site|dataValues.DataValue,TimeValue,values|ext.echo.api,init|ext.recordWizard|ext.recordWizard.base,components,generator,recorder,store,upload,vuejs,vues,widgets,wikibase|ext.recordWizard.wikibase.serialization|ext.uls.common,interface,preferences,webfonts|jquery.client,cookie,spinner,ui|jquery.event.special.eachchange|jquery.spinner.styles|jquery.ui.suggester|jquery.uls.data|jquery.wikibase.entityselector|mediawiki.ForeignApi,String,Title,Uri,api,base,cldr,cookie,jqueryMsg,language,storage,user,util,widgets|mediawiki.ForeignApi.core|mediawiki.libs.pluralruleparser|mediawiki.page.ready,startup|oojs-ui-toolbars.icons|oojs-ui-widgets.icons|oojs-ui-windows.icons|oojs-ui.styles.icons-content,icons-interactions,icons-location,icons-media,icons-movement,icons-wikimedia|skins.bluell.js|user.defaults|util.inherit|wikibase.api.RepoApi|wikibase.datamodel|wikibase.ui.entitysearch&skin=bluell&version=1k09u:49:149resolve/</process<@https://lingualibre.org/load.php?lang=fr&modules=dataValues,jquery,oojs,oojs-ui,oojs-ui-core,oojs-ui-toolbars,oojs-ui-widgets,oojs-ui-windows,site|dataValues.DataValue,TimeValue,values|ext.echo.api,init|ext.recordWizard|ext.recordWizard.base,components,generator,recorder,store,upload,vuejs,vues,widgets,wikibase|ext.recordWizard.wikibase.serialization|ext.uls.common,interface,preferences,webfonts|jquery.client,cookie,spinner,ui|jquery.event.special.eachchange|jquery.spinner.styles|jquery.ui.suggester|jquery.uls.data|jquery.wikibase.entityselector|mediawiki.ForeignApi,String,Title,Uri,api,base,cldr,cookie,jqueryMsg,language,storage,user,util,widgets|mediawiki.ForeignApi.core|mediawiki.libs.pluralruleparser|mediawiki.page.ready,startup|oojs-ui-toolbars.icons|oojs-ui-widgets.icons|oojs-ui-windows.icons|oojs-ui.styles.icons-content,icons-interactions,icons-location,icons-media,icons-movement,icons-wikimedia|skins.bluell.js|user.defaults|util.inherit|wikibase.api.RepoApi|wikibase.datamodel|wikibase.ui.entitysearch&skin=bluell&version=1k09u:49:808undefinedload.php:51:970

RW uploads the records a few at the same time. It usually starts uplaoding the next ones once it received the "go" from both Commons & Lili's Wikibase. Here, it seems it failed to continue uploading the remaining recordings of a session of 380 (it "stopped" at 357).

Software version (if not a Wikimedia wiki), browser information, screenshots, other information, etc:

Firefox, Windows 7

Event Timeline

Okay, so it kept happening to Lyokoï (and still does). I was able to pinpoint where the error is occurring. And... We're going to need more data.

https://github.com/lingua-libre/RecordWizard/blob/42ade479659552538f51bf398127560d7827b17a/modules/rw.Record.js#L312

	rw.Record.prototype.finishUpload = function ( api ) {
		var deferred = $.Deferred();

		if ( this.stashkey === null || this.hasPendingRequests() === true ) {
			deferred.reject( '[Record] can not upload' );
			return deferred;
		}

		this.deferred = deferred;

		api.postWithToken( 'csrf', {
			action: 'upload-to-commons',
			format: 'json',
			filekey: this.stashkey,
			filename: this.getFilename(),
			text: this.getText(),
			ignorewarnings: true
		} ).then(
			function ( result ) {
				var data = result[ 'upload-to-commons' ].oauth; // <----- How can this thing be "null" ???

				if ( data.error !== undefined ) { // [ERROR] <----- where the error occurs
					this.deferred.reject( data.error.code, data.error );
					return;
				}

				this.imageInfo = data.upload.imageinfo;
				this.stashkey = null;

				this.deferred.resolve( result );
			}.bind( this ),
			function ( code, error ) {
				this.deferred.reject( code, error );
			}.bind( this )
		);

		return this.deferred;
	};
Yug renamed this task from RecordWizard stops uploading pending recordings to Upload: RecordWizard stops uploading pending recordings.Jul 7 2022, 3:17 PM
Yug subscribed.

So this is not relate to Ratelimit, right ? ( T260649 )
Lyokoï has sufficient rights to not be limited by the 380 ratelimit.