Bartosz Dziewoński has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/349289 )
Change subject: ve.init.mw.ArticleTarget: Only retry once after a 'badtoken'
error
......................................................................
ve.init.mw.ArticleTarget: Only retry once after a 'badtoken' error
If we retry and get another 'badtoken' error, something is very wrong,
and trying again and again is probably pointless. This behavior also
matches how mw.Api#postWithToken handles bad tokens.
Bug: T163493
Change-Id: I488fd7e74e37922044491695d6c9025a45531281
---
M modules/ve-mw/init/ve.init.mw.ArticleTarget.js
1 file changed, 10 insertions(+), 4 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/89/349289/1
diff --git a/modules/ve-mw/init/ve.init.mw.ArticleTarget.js
b/modules/ve-mw/init/ve.init.mw.ArticleTarget.js
index 52204f4..3f0d586 100644
--- a/modules/ve-mw/init/ve.init.mw.ArticleTarget.js
+++ b/modules/ve-mw/init/ve.init.mw.ArticleTarget.js
@@ -554,11 +554,12 @@
* @method
* @param {HTMLDocument} doc HTML document we tried to save
* @param {Object} saveData Options that were used
+ * @param {boolean} wasRetry Whether this was a retry after a 'badtoken' error
* @param {Object} jqXHR
* @param {string} status Text status message
* @param {Object|null} data API response data
*/
-ve.init.mw.ArticleTarget.prototype.saveFail = function ( doc, saveData, jqXHR,
status, data ) {
+ve.init.mw.ArticleTarget.prototype.saveFail = function ( doc, saveData,
wasRetry, jqXHR, status, data ) {
var editApi,
target = this;
@@ -588,6 +589,10 @@
// Handle token errors
if ( data.error && data.error.code === 'badtoken' ) {
+ if ( wasRetry ) {
+ this.saveErrorBadToken( null, true );
+ return;
+ }
this.refreshEditToken().done( function ( userChanged ) {
// target.editToken has been refreshed
if ( userChanged ) {
@@ -595,7 +600,7 @@
} else {
// New session is the same user still; retry
target.emit( 'saveErrorBadToken', true );
- target.save( doc, saveData );
+ target.save( doc, saveData, true );
}
} ).fail( function () {
target.saveErrorBadToken( null, true );
@@ -1633,9 +1638,10 @@
* - {string} summary Edit summary
* - {boolean} minor Edit is a minor edit
* - {boolean} watch Watch the page
+ * @param {boolean} [isRetry=false] Whether this is a retry after a 'badtoken'
error
* @return {boolean} Saving has been started
*/
-ve.init.mw.ArticleTarget.prototype.save = function ( doc, options ) {
+ve.init.mw.ArticleTarget.prototype.save = function ( doc, options, isRetry ) {
var data;
// Prevent duplicate requests
if ( this.saving ) {
@@ -1656,7 +1662,7 @@
this.saving = this.tryWithPreparedCacheKey( doc, data, 'save' )
.done( this.saveSuccess.bind( this, doc, data ) )
- .fail( this.saveFail.bind( this, doc, data ) );
+ .fail( this.saveFail.bind( this, doc, data, !!isRetry ) );
return true;
};
--
To view, visit https://gerrit.wikimedia.org/r/349289
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I488fd7e74e37922044491695d6c9025a45531281
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits