uPortal IRC Logs-2011-05-05

[13:18:13 CDT(-0500)] <EricDalquist> athena: I think you may have an uncommitted change
[13:18:23 CDT(-0500)] <athena> ugh i do, sorry
[13:18:23 CDT(-0500)] <athena> hang on
[13:18:27 CDT(-0500)] <athena> found that last night
[13:18:34 CDT(-0500)] <EricDalquist> for the max inactive filter?
[13:18:40 CDT(-0500)] <athena> yep
[13:18:44 CDT(-0500)] <athena> context file
[13:18:46 CDT(-0500)] <EricDalquist> great (smile)
[13:18:47 CDT(-0500)] <EricDalquist> yeah
[13:18:50 CDT(-0500)] <athena> had missed that it was mapped there and web.xml
[13:18:56 CDT(-0500)] <EricDalquist> working on getting the live nightly build script working
[13:19:22 CDT(-0500)] <athena> committed! thanks for the reminder
[13:19:25 CDT(-0500)] <athena> oh that's terrific
[13:19:29 CDT(-0500)] <athena> will be really nice to have that out there (smile)
[13:21:07 CDT(-0500)] <EricDalquist> yeah
[13:38:22 CDT(-0500)] <EricDalquist> so to accommodate the live build I'm adding another environment property: environment.build.hsql.port=8887
[13:38:38 CDT(-0500)] <EricDalquist> most people can just ignore it but I didn't really have any better ideas on where to put it
[13:59:43 CDT(-0500)] <athena> that sounds reasonable to me
[14:42:43 CDT(-0500)] <athena> so it seems like person directory information for local accounts gets cached a lot longer than we'd like it to
[14:42:56 CDT(-0500)] <athena> since we'd like for the directory to be updated when the database is
[14:43:09 CDT(-0500)] <athena> any idea if that's a caching issue on the local side or the person directory side?
[14:43:22 CDT(-0500)] <EricDalquist> it is likely in person directory
[14:43:32 CDT(-0500)] <EricDalquist> and now that local accounts are using jpa
[14:43:35 CDT(-0500)] <EricDalquist> with their own cache
[14:43:49 CDT(-0500)] <EricDalquist> we can probably just remove the cache wrapper around the local account person attribute dao
[14:44:24 CDT(-0500)] <athena> ok, that makes sense (smile)
[14:45:57 CDT(-0500)] <athena> aww dog has the hiccups
[14:46:13 CDT(-0500)] <EricDalquist> lol
[14:47:24 CDT(-0500)] <athena> hmmm.
[14:47:39 CDT(-0500)] <athena> looks like now the caching is actually built into OverwritingPersonAttributeDao?
[14:48:03 CDT(-0500)] <EricDalquist> no way to disable it?
[14:48:16 CDT(-0500)] <athena> nto that i can tell
[14:48:32 CDT(-0500)] <athena> looks like they used to be wrapped, and now it's baked in at the top level?
[14:48:46 CDT(-0500)] <athena> we of course don't want to stop caching the other ones
[14:48:54 CDT(-0500)] <EricDalquist> huh
[14:49:04 CDT(-0500)] <EricDalquist> I wonder if that is just a simplified config file
[14:49:35 CDT(-0500)] <athena> also dunno what we really want and how that'll impact performance - like if we turn caching off at the top level, how often are we merging together user attributes?
[14:50:04 CDT(-0500)] <EricDalquist> right
[14:50:18 CDT(-0500)] <EricDalquist> the config we have here has a top level cache set to something like 15s
[14:50:28 CDT(-0500)] <athena> ahh
[14:50:30 CDT(-0500)] <EricDalquist> and then longer caches around each of the individual DAOs
[14:50:33 CDT(-0500)] <athena> yeah maybe this is just missing some stuff
[14:50:35 CDT(-0500)] <EricDalquist> tuned based on the source
[14:50:40 CDT(-0500)] <athena> yeah
[14:50:51 CDT(-0500)] <athena> so this isn't a change since 3.2 or anything?
[14:51:05 CDT(-0500)] <EricDalquist> I don't think so
[14:51:12 CDT(-0500)] <EricDalquist> the PD code hasn't changed since 3.2
[14:51:14 CDT(-0500)] <EricDalquist> I think I have the live-build code almost done
[14:51:19 CDT(-0500)] <EricDalquist> doing once last build now
[14:51:28 CDT(-0500)] <athena> maybe if you have a chance at some point you could share some sample config and i'll try and come up w/ a working configuration?
[14:51:40 CDT(-0500)] <athena> and that's awesome (smile)
[14:51:46 CDT(-0500)] <EricDalquist> sure I think there is one out there
[14:51:49 CDT(-0500)] <EricDalquist> let me see if I can find it
[14:52:09 CDT(-0500)] <EricDalquist> https://mywebspace.wisc.edu/dalquist/web/JA-SIG/UWExamples/personDirectoryContext.xml
[14:55:27 CDT(-0500)] <athena> thanks
[14:55:33 CDT(-0500)] <athena> will see what i can do (smile)
[14:58:21 CDT(-0500)] <EricDalquist> oh and the registry reworking should be done tonight
[14:58:32 CDT(-0500)] <EricDalquist> all the main code is done. now going through and fixing the unit tests
[14:58:37 CDT(-0500)] <EricDalquist> since the APIs changed a little bit
[14:59:51 CDT(-0500)] <athena> nice (smile)
[15:00:14 CDT(-0500)] <EricDalquist> yeah this will also simplfy the portlet domain model
[15:00:30 CDT(-0500)] <athena> nice (smile)
[15:00:39 CDT(-0500)] <EricDalquist> you can now just do portletWindow.getPortletEntity().getPortletDefinition()
[15:00:42 CDT(-0500)] <EricDalquist> to walk up the tree
[15:00:48 CDT(-0500)] <EricDalquist> no need for extra registry calls
[15:00:58 CDT(-0500)] <athena> oh nice (smile)
[15:01:02 CDT(-0500)] <EricDalquist> and I'm trying to move more convience methods into the registries
[15:01:03 CDT(-0500)] <athena> will this require an initdb?
[15:01:14 CDT(-0500)] <EricDalquist> yes (tongue)
[15:01:26 CDT(-0500)] <EricDalquist> but only because I renamed the channel_sub_id column in the entity data to layout_node_id
[15:02:51 CDT(-0500)] <athena> you know, i wonder if the caching i saw was actually pags, not the person directory
[15:03:02 CDT(-0500)] <EricDalquist> could be
[15:08:10 CDT(-0500)] <athena> oh by the way, i did some debugging about that content-type issue
[15:08:14 CDT(-0500)] <athena> and it's kind of crazly
[15:08:21 CDT(-0500)] <athena> but if i put this in DynamicRenderingPipeline:
[15:08:22 CDT(-0500)] <athena> System.out.println("Setting content type to " + mediaType);
[15:08:22 CDT(-0500)] <athena> res.setContentType(mediaType + "; charset=" + CHARACTER_SET);
[15:08:22 CDT(-0500)] <athena> System.out.println("Just set content type to " + res.getContentType());
[15:08:30 CDT(-0500)] <athena> it prints out text/html the first them, then null
[15:08:52 CDT(-0500)] <athena> so the mediaType is returned correctly, but that set call doesn't seem to actually be working on that first request
[15:09:10 CDT(-0500)] <EricDalquist> wtf
[15:09:20 CDT(-0500)] <EricDalquist> can you set a breakpoint at res.setContentType(mediaType + "; charset=" + CHARACTER_SET);
[15:09:28 CDT(-0500)] <EricDalquist> and see if there is some sort of response wrapper there?
[15:09:43 CDT(-0500)] <EricDalquist> I'm wondering if there is a filter or something swallowing the set
[15:10:10 CDT(-0500)] <athena> seems like sometimes that first response object is a javax.servlet.http.NoBodyResponse
[15:10:30 CDT(-0500)] <EricDalquist> I wonder if something is doing a HEAD
[15:11:05 CDT(-0500)] <athena> dunno
[15:11:09 CDT(-0500)] <athena> but figured i'd pass that on (smile)
[15:11:22 CDT(-0500)] <EricDalquist> and how is this all getting triggered again?
[15:11:29 CDT(-0500)] <EricDalquist> which browser(s) and what host setup?
[15:12:57 CDT(-0500)] <athena> firefox, vanilla tomcat setup
[15:13:03 CDT(-0500)] <athena> but it's not actually causing any errors
[15:13:10 CDT(-0500)] <athena> just no content-type
[15:13:26 CDT(-0500)] <EricDalquist> I'm really wondering why that NoBodyResponse is being used
[15:13:35 CDT(-0500)] <EricDalquist> that implies something is doing a HTTP HEAD request to the portal
[15:13:39 CDT(-0500)] <EricDalquist> which is weird
[15:13:57 CDT(-0500)] <athena> let me check it again and see if that's consistently happening
[15:14:16 CDT(-0500)] <athena> also, turns out actually person directory by default isn't caching at all (smile)
[15:14:20 CDT(-0500)] <EricDalquist> do you have a way to stick a proxy between FF and Tomcat to capture the traffic?
[15:14:29 CDT(-0500)] <athena> but that my issue was caused by the default 6 hour cache on group membership
[15:14:40 CDT(-0500)] <athena> yeah i can use charles
[15:20:19 CDT(-0500)] <athena> what would you like to see?
[15:22:41 CDT(-0500)] <EricDalquist> any request and responses for /f* /p* or *.uP
[15:22:51 CDT(-0500)] <EricDalquist> those are the ones that hit the rendering pipeline codepath
[15:22:59 CDT(-0500)] <athena> ok
[15:23:03 CDT(-0500)] <athena> rebuilding to get a bit more info
[15:23:29 CDT(-0500)] <athena> by the way, is there a way to configure the portal such that when the local accounts are updated, the group membership cache is flushed? can i do that w/ aop or something?
[15:23:41 CDT(-0500)] <EricDalquist> not that I know of
[15:23:56 CDT(-0500)] <EricDalquist> I had an email chat with greg luck about essentially the ability to tag cache entries
[15:24:00 CDT(-0500)] <EricDalquist> I'll have to see if Ic an find it
[15:24:17 CDT(-0500)] <EricDalquist> thought it would be nice if we could figure out a way to 'tag' all of the cache entries across all caches for a specific user
[15:24:26 CDT(-0500)] <athena> what if i was willing to just drop everything in one cache?
[15:24:34 CDT(-0500)] <EricDalquist> that would work
[15:24:46 CDT(-0500)] <EricDalquist> not sure how bad that would be to do on a heavily loaded system though
[15:24:58 CDT(-0500)] <athena> yeah i don't thinkt hat'd be a good idea for most installations
[15:25:09 CDT(-0500)] <athena> but for the conference umobile app we basically have two groups of interest
[15:25:23 CDT(-0500)] <athena> well maybe 4
[15:25:34 CDT(-0500)] <athena> but in that case half of them are affected by changes in user attributes
[15:25:47 CDT(-0500)] <EricDalquist> yeah
[15:25:51 CDT(-0500)] <EricDalquist> for that app that would be just fine
[15:26:22 CDT(-0500)] <athena> ok
[15:26:26 CDT(-0500)] <athena> i'll play around w/ some stuff
[15:26:40 CDT(-0500)] <EricDalquist> remember in 4 you can autowire cache instances
[15:26:57 CDT(-0500)] <EricDalquist> @Autowired public void setMyCache(@Qualifier("MyCacheName") Ehcache cache) {}
[15:27:11 CDT(-0500)] <EricDalquist> so you can just wire the cache you care about in somewhere and call .clear() on ti
[15:27:25 CDT(-0500)] <athena> oh hmm, that might be good too (smile)
[15:27:38 CDT(-0500)] <athena> will have to keep that a local change
[15:27:41 CDT(-0500)] <athena> but sounds quite reasonable
[15:27:59 CDT(-0500)] <athena> actually if i did that
[15:28:03 CDT(-0500)] <EricDalquist> yup
[15:28:09 CDT(-0500)] <athena> i could probably even just delete the groups i wanted to from the cache?
[15:29:00 CDT(-0500)] <EricDalquist> yup
[15:29:29 CDT(-0500)] <athena> ok, did wind up w/ a portalhttpservletresponsewrapper for this
[15:30:03 CDT(-0500)] <athena> Setting content type to text/html
[15:30:04 CDT(-0500)] <athena> Response type: org.jasig.portal.url.PortalHttpServletResponseWrapper
[15:30:04 CDT(-0500)] <athena> Just set content type to null
[15:30:16 CDT(-0500)] <athena> that's just for the single default guest page
[15:30:48 CDT(-0500)] <EricDalquist> weird
[15:30:55 CDT(-0500)] <EricDalquist> and PortalHttpServletResponseWrapper doesn't do anything with setting the content type
[15:31:36 CDT(-0500)] <athena> yeah
[15:32:01 CDT(-0500)] <athena> whole thing is weird