* Allura/allura/model/discuss.py:find_posts: short circuit if self.posts is already present and avoid requerying
* artifactreference bulk preload and cache this was the biggest; each post has to check for backreferenced artifacts before checking for related artifacts. bulk querying for all these and caching them as instance attrs allows us to skip all the individual checks * ForgeDiscussion/forgediscussion/model/forum.py:ForumThread.subscribed it's super() call was memoized, but this invocation wasn't * memoize Allura/allura/model/notification.py:Mailbox.subscribed i believe this shaved one ming call off; not much but can't hurt * edit post HTML isn't present when not logged in, so nothing to be done there * there still seem to be more Project fetches than should be needed, but didn't really find a good way to identify truly unnecessary ones or reduce those * final counts - 6 total posts, 2 top level, 1 related artifact and one backrefd before: mongo": 172, "ming": 104, after: mongo": 135, "ming": 84, --- ** [tickets:#4359] Reduce duplicate queries in threaded discussion display** **Status:** open **Milestone:** unreleased **Labels:** performance **Created:** Tue Jun 12, 2012 08:37 PM UTC by Dave Brondsema **Last Updated:** Sat Feb 07, 2015 06:12 PM UTC **Owner:** nobody There are lot of duplicate ming queries for a threaded discussion. The following is logged by timermiddleware, when viewing a ticket page that had 2 comments by admin1, when logged in as admin1. ~~~~ get args=(<class 'allura.model.auth.User'>, ObjectId('4fbc01a69c104009d2000407')) kwargs={} find args=(<class 'allura.model.project.Project'>, {'deleted': False, 'shortname': u'u/admin1'}) kwargs={}... find args=(<class 'allura.model.project.Project'>, {'deleted': False, 'shortname': u'u/admin1'}) kwargs={}... find args=(<class 'allura.model.project.ProjectFile'>, {'category': 'icon', 'project_id': ObjectId('4fbc01a69c104009d2000408')}) kwargs={}... find args=(<class 'allura.model.project.Project'>, {'deleted': False, 'shortname': u'u/admin1'}) kwargs={}... find args=(<class 'allura.model.project.Project'>, {'deleted': False, 'shortname': u'u/admin1'}) kwargs={}... find args=(<class 'allura.model.project.ProjectFile'>, {'category': 'icon', 'project_id': ObjectId('4fbc01a69c104009d2000408')}) kwargs={}... get args=(<class 'allura.model.auth.User'>, ObjectId('4fbc01a69c104009d2000407')) kwargs={} get args=(<class 'allura.model.auth.User'>, ObjectId('4fbc01a69c104009d2000407')) kwargs={} get args=(<class 'allura.model.index.ArtifactReference'>, u'allura/model/discuss/Post#6f62e5c2eec5ff46a51fb65a4d91efcba41b1aaf/tickets@testall/p/sourceforge/net') kwargs={}... find args=(<class 'allura.model.index.ArtifactReference'>, {'references': u'allura/model/discuss/Post#6f62e5c2eec5ff46a51fb65a4d91efcba41b1aaf/tickets@testall/p/sourceforge/net'}) kwargs={}... get args=(<class 'allura.model.discuss.Thread'>, u'f0cd42a4') kwargs={} get args=(<class 'allura.model.discuss.Discussion'>, ObjectId('4fbc059b9c104012b2000030')) kwargs={} get args=(<class 'allura.model.project.AppConfig'>, ObjectId('4fbc059b9c104012b200002e')) kwargs={} get args=(<class 'allura.model.project.AppConfig'>, ObjectId('4fbc059b9c104012b200002e')) kwargs={} find args=(<class 'allura.model.discuss.DiscussionAttachment'>, {'post_id': u'6f62e5c2eec5ff46a51fb65a4d91efcba41b1aaf.tick...@testall.p.sourceforge.net', 'type': 'attachment'}) kwargs={}... get args=(<class 'allura.model.auth.User'>, None) kwargs={} get args=(<class 'allura.model.index.ArtifactReference'>, u'forgetracker/model/ticket/Ticket#4fbd3f079c1040225a000002') kwargs={}... get args=(<class 'allura.model.project.Project'>, ObjectId('4fbc059b9c104012b2000000')) kwargs={} find args=(<class 'allura.model.project.AppConfig'>, {'options.mount_point': None, 'project_id': ObjectId('4fbc059b9c104012b2000000')}) kwargs={}... get args=(<class 'forgetracker.model.ticket.Ticket'>, ObjectId('4fbd3f079c1040225a000002')) kwargs={} get args=(<class 'allura.model.discuss.Post'>, None) kwargs={} get args=(<class 'allura.model.auth.User'>, ObjectId('4fbc01a69c104009d2000407')) kwargs={} find args=(<class 'allura.model.project.Project'>, {'deleted': False, 'shortname': u'u/admin1'}) kwargs={}... find args=(<class 'allura.model.project.Project'>, {'deleted': False, 'shortname': u'u/admin1'}) kwargs={}... find args=(<class 'allura.model.project.ProjectFile'>, {'category': 'icon', 'project_id': ObjectId('4fbc01a69c104009d2000408')}) kwargs={}... find args=(<class 'allura.model.project.Project'>, {'deleted': False, 'shortname': u'u/admin1'}) kwargs={}... find args=(<class 'allura.model.project.Project'>, {'deleted': False, 'shortname': u'u/admin1'}) kwargs={}... ~~~~ --- Sent from forge-allura.apache.org because dev@allura.apache.org is subscribed to https://forge-allura.apache.org/p/allura/tickets/ To unsubscribe from further messages, a project admin can change settings at https://forge-allura.apache.org/p/allura/admin/tickets/options. Or, if this is a mailing list, you can unsubscribe from the mailing list.