For MediaWiki (recent comments | status changes | tags | authors | states | release notes | statistics)
/me dislikes the new (and old) unreadable boolean parameters.
1) If you have the 'comma' counting method set, and do something like:
$a = new Article( $title_of_existing_page );
$a->doEdit( ... );
...nothing will get called that process caches the text getRawText() needs (I don't see anything that sets contentLoaded yet). Then updateRevisionOn() will get called and a COMMIT done to the DB before $this->editUpdates(). This means that page_latest is already updated (even if we didn't commit, if we happened hit the same DB, a MySQL session will "see" it's own uncommitted changes).
editUpdates() will get called and cause some lines of code to be hit:
1. $good = (int)$this->isCountable( $editInfo ) - (int)$this->isCountable();
2. $text = $this->getRawText(); [in isCountable]
3. $rev = Revision::newFromTitle( $this->mTitle ); [in getRawText]
...this will query the DB based on page_latest. This will fetch the new text, not the old text. Even when/if this gets the proper old text, it's still an extra hit (to memcached) to get the text. You should pass $oldtext (from $oldtext = $this->getRawText(); // current revision) down to the editUpdates somehow.
$oldtext = $this->getRawText(); // current revision
2) I grepped and don't see any extensions called editUpdates(). I suggest refactoring the params. I'd combine $minoredit, $created, and $changed into one $flags param using constants instead of booleans. $timestamp_of_pagechange could also be removed for being unused. If we really need b/c, then we can make a doEditUpdates() like this and leave editUpdates() as wrapper around it.
Done in r91180.