jenkins-bot has submitted this change and it was merged. ( 
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(-)

Approvals:
  Catrope: Looks good to me, but someone else must approve
  jenkins-bot: Verified
  Jforrester: Looks good to me, approved



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: merged
Gerrit-Change-Id: I488fd7e74e37922044491695d6c9025a45531281
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Bartosz DziewoƄski <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: DLynch <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to