uPortal IRC Logs-2011-10-10
[09:41:05 CDT(-0500)] <Arvids> Finally getting used to fluid and now I can translate portlet definitions... it feels so good
[09:41:56 CDT(-0500)] <Arvids> still feel like someone who's more used to building fancy UI, should later review my code
[09:49:52 CDT(-0500)] <Arvids> EricDalquist: how's going on with migrating to GIT?
[10:58:15 CDT(-0500)] <EricDalquist> hi Arvids
[10:58:33 CDT(-0500)] <EricDalquist> working on the plans right now actually
[10:58:42 CDT(-0500)] <EricDalquist> I'll have a full timeline proposal posted soon
[10:58:47 CDT(-0500)] <EricDalquist> there will be ample notice
[13:22:09 CDT(-0500)] <athena> anyone seen this error before? Caused by: java.lang.IllegalArgumentException: interface org.hibernate.engine.jdbc.ClobImplementer is not visible from class loader
[13:22:24 CDT(-0500)] <EricDalquist> neat ... no
[13:22:28 CDT(-0500)] <EricDalquist> do you have a stack trace?
[13:22:35 CDT(-0500)] <EricDalquist> because I have a sneaking fear ...
[13:22:49 CDT(-0500)] <athena> it's in a portlet, not uportal
[13:23:07 CDT(-0500)] <EricDalquist> could still be a uPortal/portlet classloader issue
[13:23:25 CDT(-0500)] <EricDalquist> uPortal is not as good about classloader demarcation as it should beo
[13:23:58 CDT(-0500)] <athena> http://pastebin.com/wbcieS2F
[13:24:27 CDT(-0500)] * EricDalquist hates that pastebin linewraps stack traces
[13:24:29 CDT(-0500)] <athena> er, think that pasted kinda weird.
[13:24:35 CDT(-0500)] <EricDalquist> https://gist.github.com
[13:24:37 CDT(-0500)] <EricDalquist> try that
[13:24:41 CDT(-0500)] <EricDalquist> login with your github info
[13:24:50 CDT(-0500)] <athena> think part of it was how i copied it in the first place
[13:24:53 CDT(-0500)] <EricDalquist> ah
[13:25:56 CDT(-0500)] <athena> https://gist.github.com/1276097
[13:25:58 CDT(-0500)] <athena> there we go
[13:28:23 CDT(-0500)] <athena> tried updating to the version of hibernate uportal is using, didn't help (was using a really old vesion)
[13:28:32 CDT(-0500)] <athena> hmm!
[13:28:38 CDT(-0500)] <athena> now seeing two versions of cglib
[13:28:41 CDT(-0500)] <athena> that could be a problem
[13:28:44 CDT(-0500)] <EricDalquist> yeah
[13:28:52 CDT(-0500)] <athena> think the version of commons-dbcp matters at all?
[13:28:53 CDT(-0500)] <EricDalquist> my other concern is how pluto and uPortal handle classloaders
[13:28:56 CDT(-0500)] <EricDalquist> probably not
[13:29:04 CDT(-0500)] <EricDalquist> I've always just kinda hoped it all worked
[13:29:19 CDT(-0500)] <EricDalquist> but what we really need to do is go through and audit pluto and uPortal's code
[13:29:38 CDT(-0500)] <EricDalquist> and make sure that we're switching the thread's contextClassloader correctly
[13:34:28 CDT(-0500)] <EricDalquist> so yeah this is a portlet
[13:34:34 CDT(-0500)] <EricDalquist> but it is storing preferences
[13:34:39 CDT(-0500)] <EricDalquist> and the root of the exception is in uPortal
[13:38:06 CDT(-0500)] <EricDalquist> yeah I think this is a classloader issue on uPortal's side
[13:39:33 CDT(-0500)] <EricDalquist> athena: not sure how much work it would be but can you try applying this patch: https://gist.github.com/1276132
[13:39:39 CDT(-0500)] <EricDalquist> to uPortal and then seeing if that fixes the bug?
[13:43:15 CDT(-0500)] <athena> sure, if removing cglib doesnt' fix it i'll try that next
[13:43:21 CDT(-0500)] <athena> it only seems to happen on psql
[13:43:46 CDT(-0500)] <EricDalquist> I'm 99% sure that it is uPortal's fault
[13:43:57 CDT(-0500)] <athena> eh-oh
[13:44:26 CDT(-0500)] <athena> but yeah i'll totally try that out
[13:44:31 CDT(-0500)] <EricDalquist> what we really need to do is figure out a way to automatically set the thread ContextClassLoader back to uPortal's classloader any time a portlet/pluto makes a call back into uPortal
[13:44:44 CDT(-0500)] <EricDalquist> and then reset the loader back to the portlets when the stack unwinds
[13:45:09 CDT(-0500)] <EricDalquist> I think tomcat is taking care of switching to the portlet's classloader for us in the cross-context dispatch
[13:45:39 CDT(-0500)] <athena> gotcha
[13:45:53 CDT(-0500)] <athena> sort of weird that only this one portlet is triggering the error
[13:46:03 CDT(-0500)] <EricDalquist> its likely a race condition as well
[13:46:20 CDT(-0500)] <EricDalquist> since if that class has been loaded correctly before it should all just work
[13:46:27 CDT(-0500)] <EricDalquist>
[13:46:28 CDT(-0500)] <athena> ah
[13:46:48 CDT(-0500)] <EricDalquist> threading + multiple classloaders + reflection
[13:46:51 CDT(-0500)] <athena>
[13:46:51 CDT(-0500)] <EricDalquist> == FUN
[13:46:52 CDT(-0500)] <athena> ick!
[13:47:05 CDT(-0500)] <athena> fun for some super-nerdy and bored individual?
[13:47:10 CDT(-0500)] <EricDalquist> lol
[13:47:25 CDT(-0500)] <athena> i'm taking compilers this quarter
[13:47:35 CDT(-0500)] <athena> spent several hours creating regexes and DFAs from a bar yesterday
[13:47:46 CDT(-0500)] <athena> i think i would have enjoyed watching football more
[13:48:19 CDT(-0500)] <EricDalquist> hah
[13:48:48 CDT(-0500)] <EricDalquist> I kinda regret not taking a compilers course
[13:48:55 CDT(-0500)] <EricDalquist> no interest in actually writing them
[13:49:03 CDT(-0500)] <athena> we'll see if i wind up regretting taking this one
[13:49:04 CDT(-0500)] <EricDalquist> just think it would be a useful bit of background knowledge
[13:49:06 CDT(-0500)] <athena> yeah
[13:49:16 CDT(-0500)] <athena> and relevant for writing small parsers and things
[13:49:47 CDT(-0500)] <EricDalquist> yup
[13:54:42 CDT(-0500)] <b-rock> Greetings uPortal devs. I've got a build of uPortal4.0.1 running after an initdb with the default included data. When I log in as myself, I get an error and see this WARN in the logs: http://pastebin.com/K3xQDE3j
[13:55:10 CDT(-0500)] <EricDalquist> do you have any content when you first log in?
[13:55:30 CDT(-0500)] <b-rock> there is, our default tab has a bunch of stuff in it
[13:55:44 CDT(-0500)] <b-rock> do I just need to import my layout?
[13:56:06 CDT(-0500)] <EricDalquist> huh, the warning is fairly harmless
[13:56:08 CDT(-0500)] <b-rock> I'm trying to figure out the least amount of data I need to import from a previous build to get in
[13:56:52 CDT(-0500)] <EricDalquist> the portal is trying to figure out the default tab for you and can't
[13:57:40 CDT(-0500)] <EricDalquist> it is running the XPath: /layout/folder/folder[@type='regular' and @hidden!='true'][$defaultTab]/@ID
[13:57:44 CDT(-0500)] <EricDalquist> against your layout
[13:57:58 CDT(-0500)] <EricDalquist> and according to the log message $defaultTab is 1
[13:58:07 CDT(-0500)] <EricDalquist> so for some reason it isn't finding that tab
[13:58:09 CDT(-0500)] <b-rock> here is a java trace for it http://pastebin.com/g6KJNw84
[13:58:43 CDT(-0500)] <EricDalquist> oh so you're getting an error?
[13:58:52 CDT(-0500)] <EricDalquist> I missed that bit
[13:59:04 CDT(-0500)] <EricDalquist> can you go into your log4j.properties and add:
[13:59:04 CDT(-0500)] <EricDalquist> log4j.logger.org.jasig.portal.rendering.LoggingStAXComponent.POST_LAYOUT=DEBUG, R
[13:59:04 CDT(-0500)] <EricDalquist> log4j.additivity.org.jasig.portal.rendering.LoggingStAXComponent.POST_LAYOUT=false
[13:59:06 CDT(-0500)] <b-rock> yeah I just get the defautl error page after being logged in. the portal page does not render
[13:59:18 CDT(-0500)] <EricDalquist> that should get you a nice pretty-printed XML document in your output
[13:59:20 CDT(-0500)] <EricDalquist> which is your layout
[13:59:26 CDT(-0500)] <b-rock> oh ok sure...
[13:59:27 CDT(-0500)] <EricDalquist> can you pastebin that
[13:59:36 CDT(-0500)] <b-rock> yep. just a moment...
[13:59:59 CDT(-0500)] <EricDalquist> my bet: you don't actually have any tabs and the url processing code barfs for that case
[14:04:10 CDT(-0500)] <b-rock> shoot. I need to go to meeting. I'll try to post the xml this afternoon. Thanks for your help EricDalquist.
[14:04:17 CDT(-0500)] <EricDalquist> ok
[14:39:04 CDT(-0500)] <athena1> EricDalquist: think that fixed it
[14:39:08 CDT(-0500)] <EricDalquist> yay
[14:39:09 CDT(-0500)] <EricDalquist> ok
[14:39:11 CDT(-0500)] <EricDalquist> I'll commit it
[14:39:15 CDT(-0500)] <athena1> awesome
[14:42:53 CDT(-0500)] <athena1> hmm
[14:43:01 CDT(-0500)] <athena1> this ProxyView class doesn't seem to be behaving anymore
[14:43:03 CDT(-0500)] <athena1> used to work
[14:51:09 CDT(-0500)] <athena1> so EricDalquist - https://source.jasig.org/sandbox/AjaxPortletSupport/trunk/src/main/java/org/jasig/web/view/mvc/ProxyView.java
[14:51:25 CDT(-0500)] <athena1> code seems to work locally, but not on more production servers
[14:51:28 CDT(-0500)] <athena1> any thoughts?
[14:51:47 CDT(-0500)] <athena1> just sends back a blank response
[14:54:29 CDT(-0500)] <EricDalquist> do you get any headers back?
[14:54:53 CDT(-0500)] <EricDalquist> or anything in the logs?
[14:55:07 CDT(-0500)] <EricDalquist> since it catches the exceptions it will always reutrn a 200
[14:55:08 CDT(-0500)] <EricDalquist> which isn't that good
[14:55:17 CDT(-0500)] <EricDalquist> it should really return a 503 if the proxying fails
[14:55:21 CDT(-0500)] <athena1> yeah, it's kind of a crappy class in general
[14:55:23 CDT(-0500)] <EricDalquist> would at least be easier to debug
[14:55:28 CDT(-0500)] <athena1> but no exceptions in the logs
[14:55:31 CDT(-0500)] <EricDalquist> those are my only ideas
[14:55:33 CDT(-0500)] <athena1> and the two debug statements print out ok
[14:55:49 CDT(-0500)] <athena1> and tried dup'ing the code and printing out the resutls of the http request and that does return content
[14:56:01 CDT(-0500)] <athena1> so it seems like it's just failing to actually copy it to the output
[14:56:03 CDT(-0500)] <athena1> which is really weird
[14:56:08 CDT(-0500)] <EricDalquist> yes
[14:56:24 CDT(-0500)] <athena1> and even weirder that it works locally
[14:56:34 CDT(-0500)] <EricDalquist> yes
[14:56:41 CDT(-0500)] <athena1> not sure if adding apache or something is doing something strange
[14:56:50 CDT(-0500)] <athena1> but wanted to make sure there wasn't something really obvious that i missed :/
[14:59:36 CDT(-0500)] <EricDalquist> not that I can see :/
[14:59:47 CDT(-0500)] <athena1> ok, thanks at least
[14:59:56 CDT(-0500)] <athena1> maybe i'll see if cleaning up that code makes any difference
[15:26:12 CDT(-0500)] <b-rock> Hi EricDalquist. I've got some more debug info in the logs for the pastebin above, but no rendering of the layout in xml. http://pastebin.com/BZh81AKk maybe the error happens before the xml can be logged.
[15:26:26 CDT(-0500)] <EricDalquist> hrm you're right
[15:26:46 CDT(-0500)] <EricDalquist> can you create a jira issue with the stack trace from: http://pastebin.com/g6KJNw84
[15:26:52 CDT(-0500)] <EricDalquist> (prefferablly not linewrapped )
[15:27:12 CDT(-0500)] <b-rock> sure.
[15:33:11 CDT(-0500)] <b-rock> ok I created this https://issues.jasig.org/browse/UP-3194. As I workaround, do you think I should just try it import the user layouts from our current 3.2.5-patches?
[15:33:41 CDT(-0500)] <EricDalquist> double check and make sure your user qualifies for at least one DLM managed fragment
[15:33:42 CDT(-0500)] <b-rock> thanks for your help BTW
[15:34:21 CDT(-0500)] <EricDalquist> I really think that the core of the problem is that you're ending up with no tabs
[15:35:34 CDT(-0500)] <b-rock> hmm. ok. I do notice that the unauthenticated guest view does render.
[15:38:09 CDT(-0500)] <EricDalquist> and it has at least one tab right?
[15:41:59 CDT(-0500)] <b-rock> yes it has the Welcome tab but there is no content/portlets displaying
[15:42:06 CDT(-0500)] <EricDalquist> right
[15:42:08 CDT(-0500)] <EricDalquist> but it has a tab
[15:42:12 CDT(-0500)] <b-rock> it does
[15:42:26 CDT(-0500)] <EricDalquist> my guess is that your account does not qualify for any DLM fragments
[15:42:29 CDT(-0500)] <EricDalquist> and so has no tabs
[15:42:52 CDT(-0500)] <EricDalquist> and there is apparently a bug in the new URL syntax handling code when a layout has no tabs
[15:43:10 CDT(-0500)] <b-rock> double checking the logs now...
[15:49:59 CDT(-0500)] <b-rock> so I have this from the FragmentDefinition.isApplicible. http://pastebin.com/UZ20Rceb
[15:50:22 CDT(-0500)] <EricDalquist> yes and we established that your guest user is working
[15:50:28 CDT(-0500)] <EricDalquist> the question is your billbrown user
[15:50:30 CDT(-0500)] <EricDalquist> which isn't working
[15:50:40 CDT(-0500)] <EricDalquist> either that user has no applicable fragments
[15:50:47 CDT(-0500)] <EricDalquist> or the fragments that are applicable have no content
[15:51:09 CDT(-0500)] <b-rock> oh ok. I'll dig that up...
[15:51:22 CDT(-0500)] <EricDalquist> I'm heading home
[15:51:27 CDT(-0500)] <EricDalquist> we can catch up tomorrow
[15:51:49 CDT(-0500)] <b-rock> sure np. thanks for your help. could be that all the portlets on the fragment are broken (incompatible portlet 1.0 version)
[15:52:10 CDT(-0500)] <EricDalquist> that isn't the case
[15:52:21 CDT(-0500)] <EricDalquist> and 1.0 portlets work just fine in 2.0
[15:52:27 CDT(-0500)] <EricDalquist> the spec is 100% backwards compatible
[15:52:40 CDT(-0500)] <EricDalquist> only 1 or 2 portlets that ship with up4 are 2.0 portlets
[15:52:42 CDT(-0500)] <EricDalquist> the rest are still 1.0