You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@allura.apache.org by Kenton Taylor <kt...@slashdotmedia.com.INVALID> on 2022/03/23 14:58:36 UTC

[allura:tickets] Ticket 4359 discussion

* 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.tickets@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.