[Deploying Sakai] Possible site member list issue in 2.9.1

Anand Mehta anand.mehta at yahoo.com
Mon Mar 11 13:00:00 PDT 2013


Hello,

We did a test upgrade of Sakai 2.8.2 to 2.9.1 and are seeing a problem related to site member list affecting tools like Site Info, Roster, Gradebook, etc. After the upgrade, if we go to the Site Info tool in a site, the member list does not load and there is an error in the log as shown below. Refreshing the tool lists all members of the site, but some LDAP users are listed as jsmith (jsmith) instead of Smith, John (jsmith). In the Roster tool, their eid is listed under the name column and their email is blank. All LDAP users are able to log in to Sakai without any problem.

Another thing I noticed is that sometimes Sakai tries to search for a user in LDAP by their internal Sakai ID (user_id). Our DB has some users records in the sakai_site_user table, but for some reason their record is missing from the sakai_user_id_map table. It also looks like Sakai inserts a record for these users in the sakai_user_id_map table with their internal user_id as the eid and assigns a new user_id, so the record ends up looking like 5231018f-8025-4b1f-ba25-056f4f2b09f1,65a9e4b4-7737-4180-8323-7685d170e36b.

We ran all DB upgrade scripts (2.8.2-2.8.3, 2.9.0, and 2.9.0-2.9.1) without any problem. We have also tried enabling and disabling user pre-caching, but that does not seem to have any effect on this issue. Our setup includes Windows Server 2003, Oracle 10g, Tomcat 7.0.37, Java 1.6.0_43, and Apache 2.2.22.

I searched JIRA but did not come across any bug report that looks similar to this issue. Please let me know if there is a fix, setting, or workaround that I can try.


2013-03-07 15:05:49,711 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - getUsers(): [Collection size = 13]
2013-03-07 15:05:49,711 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - getCachedUserEntry(): [eid = jsmith]
2013-03-07 15:05:49,711 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - getCachedUserEntry(): cache access [found entry = false][entry expired = false]
2013-03-07 15:05:49,727 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - searchDirectory(): [filter = (|(sAMAccountName=jsmith))][reusing conn = false]
2013-03-07 15:05:49,743 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - searchDirectory(): [baseDN = OU=People,DC=school,DC=edu][filter = (|(sAMAccountName=jsmith))][return attribs = [sAMAccountName, distinguishedName, givenName, sn, mail]][max results = 0]][search scope = 2]
2013-03-07 15:05:49,743 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - mapLdapEntryOntoUserData() [dn = CN=jsmith,OU=Institution,OU=People,DC=school,DC=edu]
2013-03-07 15:05:49,743 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - cacheUserData(): [user record = edu.amc.sakai.user.LdapUserData at 560cb988[
  eid=jsmith
  firstName=John
  preferredFirstName=<null>
  lastName=Smith
  email=jsmith at school.org
  type=
  properties={distinguishedName=CN=jsmith,OU=Institution,OU=People,DC=school,DC=edu, udp.dn=CN=jsmith,OU=Institution,OU=People,DC=school,DC=edu}
]]
2013-03-07 15:05:49,743 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - searchDirectory(): returning connection to connection manager
2013-03-07 15:05:49,743 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - mapUserDataOntoUserEdit() [cache record = edu.amc.sakai.user.LdapUserData at 560cb988[
  eid=jsmith
  firstName=John
  preferredFirstName=<null>
  lastName=Smith
  email=jsmith at school.org
  type=
  properties={distinguishedName=CN=jsmith,OU=Institution,OU=People,DC=school,DC=edu, udp.dn=CN=jsmith,OU=Institution,OU=People,DC=school,DC=edu}
]]
2013-03-07 15:05:49,743 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - getUsers(): returning connection to connection manager
2013-03-07 15:05:49,743 DEBUG ajp-apr-8009-exec-13 edu.amc.sakai.user.JLDAPDirectoryProvider - getUsers(): abortive search, clearing received users collection
2013-03-07 15:05:49,743  WARN ajp-apr-8009-exec-13 org.sakaiproject.site.tool.SiteAction - org.sakaiproject.site.tool.SiteAction at 5d68bbda buildContextForTemplate chef_site-siteInfo-list.vm 
java.lang.RuntimeException: getUsers(): RuntimeException during search eid = jsmith]
    at edu.amc.sakai.user.JLDAPDirectoryProvider.getUsers(JLDAPDirectoryProvider.java:697)
    at org.sakaiproject.user.impl.DbUserService$DbStorage.getUsersByEids(DbUserService.java:768)
    at org.sakaiproject.user.impl.BaseUserDirectoryService.getUsersByEids(BaseUserDirectoryService.java:874)
    at org.sakaiproject.user.cover.UserDirectoryService.getUsersByEids(UserDirectoryService.java:106)
    at org.sakaiproject.site.util.SiteParticipantHelper.getEidUserMapFromCollection(SiteParticipantHelper.java:183)
    at org.sakaiproject.site.util.SiteParticipantHelper.addParticipantsFromMembers(SiteParticipantHelper.java:277)
    at org.sakaiproject.site.util.SiteParticipantHelper.prepareParticipants(SiteParticipantHelper.java:457)
    at org.sakaiproject.site.tool.SiteAction.getParticipantList(SiteAction.java:8644)
    at org.sakaiproject.site.tool.SiteAction.buildContextForTemplate(SiteAction.java:1990)
    at org.sakaiproject.site.tool.SiteAction.buildMainPanelContext(SiteAction.java:1174)
    at org.sakaiproject.site.tool.SiteAction.buildMainPanelContext(SiteAction.java:1112)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.sakaiproject.cheftool.VelocityPortletPaneledAction.toolModeDispatch(VelocityPortletPaneledAction.java:429)
    at org.sakaiproject.site.tool.SiteAction.toolModeDispatch(SiteAction.java:12339)
    at org.sakaiproject.cheftool.ToolServlet.doGet(ToolServlet.java:236)
    at org.sakaiproject.cheftool.VelocityPortletPaneledAction.doGet(VelocityPortletPaneledAction.java:1156)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at org.sakaiproject.vm.ComponentServlet.service(ComponentServlet.java:56)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:634)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
    at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:511)
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1470)
    at org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:213)
    at org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:96)
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:881)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:695)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:197)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
    at edu.amc.sakai.user.SimpleLdapAttributeMapper.mapUserDataOntoUserEdit(SimpleLdapAttributeMapper.java:335)
    at edu.amc.sakai.user.JLDAPDirectoryProvider.mapUserDataOntoUserEdit(JLDAPDirectoryProvider.java:1118)
    at edu.amc.sakai.user.JLDAPDirectoryProvider.getUsers(JLDAPDirectoryProvider.java:666)
    ... 56 more


 
Thanks,
Anand
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/production/attachments/20130311/aedabef4/attachment.html 


More information about the production mailing list