jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/352669 )
Change subject: Upgrade tree differ to support timeouts, and handle them ...................................................................... Upgrade tree differ to support timeouts, and handle them Bug: T164724 Change-Id: I6512203fb37725a2da7899b4f88b8a55042b0b66 --- M lib/treeDiffer/treeDiffer-dist.js M src/dm/ve.dm.VisualDiff.js 2 files changed, 16 insertions(+), 1 deletion(-) Approvals: jenkins-bot: Verified Jforrester: Looks good to me, approved diff --git a/lib/treeDiffer/treeDiffer-dist.js b/lib/treeDiffer/treeDiffer-dist.js index 0333ed3..77e2310 100644 --- a/lib/treeDiffer/treeDiffer-dist.js +++ b/lib/treeDiffer/treeDiffer-dist.js @@ -189,10 +189,13 @@ * @constructor * @param {treeDiffer.Tree} tree1 First tree * @param {treeDiffer.Tree} tree2 Second tree + * @param {Number} [timeout=1000] Timeout after which to stop diffing */ -treeDiffer.Differ = function ( tree1, tree2 ) { +treeDiffer.Differ = function ( tree1, tree2, timeout ) { var i, ilen, j, jlen, transactions, transactionIndex = 0; + + this.endTime = new Date().getTime() + ( timeout || 1000 ); this.tree1 = tree1; this.tree2 = tree2; @@ -295,6 +298,10 @@ // Get the diff this.findMinimumTransactions( keyRoot1, keyRoot2, iNulls, jNulls, transactions ); + + if ( new Date().getTime() > this.endTime ) { + return; + } } } diff --git a/src/dm/ve.dm.VisualDiff.js b/src/dm/ve.dm.VisualDiff.js index 534faca..750d112 100644 --- a/src/dm/ve.dm.VisualDiff.js +++ b/src/dm/ve.dm.VisualDiff.js @@ -255,6 +255,14 @@ // tags for each child node keepLength = oldDocChild.length - 2 * ( oldDocChildTree.orderedNodes.length - 1 ); + // Tree diff timed out: record as full remove and insert + if ( !treeDiff ) { + treeDiff = []; + linearDiff = null; + diffLength = oldDocChild.length + newDocChild.length; + keepLength = 0; + } + for ( i = 0, ilen = treeDiff.length; i < ilen; i++ ) { removeLength = 0; -- To view, visit https://gerrit.wikimedia.org/r/352669 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6512203fb37725a2da7899b4f88b8a55042b0b66 Gerrit-PatchSet: 2 Gerrit-Project: VisualEditor/VisualEditor Gerrit-Branch: master Gerrit-Owner: Esanders <esand...@wikimedia.org> Gerrit-Reviewer: Jforrester <jforres...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits