Last modified: 2014-09-19 23:18:15 UTC
Bug 67420 was apparently caused by a deprecation warning from inside the handler that attempts to log deprecation warnings. While Gerrit change #143894 should fix the immediate problem in that bug, it would probably be a good idea for ext.wikimediaEvents.deprecate.js to bail out when called recursively to avoid a repeat next time.
Detecting recursive calls might be difficult, but it can just suppress all warnings. From /tests/qunit/data/testrunner.js in core, these functions are used several times in tests: var warn; function suppressWarnings() { warn = mw.log.warn; mw.log.warn = $.noop; } function restoreWarnings() { if ( warn !== undefined ) { mw.log.warn = warn; warn = undefined; } }
The high priority bug was bug 67420 which has been fixed.
Actually, I don't see any way to implement this, given that everything can be asynchronous. I might be missing something, but this seems impossible. We can implement some half-solutions (only guarantee detection of this scenario when both the track handler and everything it does is synchronous; stop sending further tracks after some limit is reached;), but they would be prone to failure and could instill a false sense of confidence. There is a (conceptually) very simple way to avoid this: don't use deprecated APIs in your mw.track handler.