[Building Sakai] "No Placement" error for 'resources' tool in COURSE worksites => CM_ACADEMIC_SESSION_T.is_current had NULLs

will trillich will at serensoft.com
Wed Apr 15 15:07:44 PDT 2009


For *course* worksites on our sandbox instance (Sakai 2.6.x with Mysql
5.0.51a-24/Debian) we couldn't bring up any resources tools without a
stack trace (see below). Project and portfolio worksites could browse
resources without any troubles at all.

SOLUTION/SOLVED:

Field "CM_ACADEMIC_SESSION_T"."is_current" had some NULLs. It's a
"bit" field and wound up containing some stray NULL values. Turns out
it was an easy fix:

update CM_ACADEMIC_SESSION_T
set is_current=
    case when
        current_date() between START_DATE and END_DATE
    then b'1'
    else b'0'
 end;

Not sure if that's the intent of the is_current field, but that got
rid of all the NULL values, and fixed the stack trace -- course
worksites can now browse resources again! (Perhaps the table should be
ALTERed to prohibit null values with a default of b'0'?)

[Thanks, Noah!]

=====

The error-stack trace is below -- and here is additional info in the
catalina.out log file:

Tool Placement:
No Placement

Request:
:    AuthType:null
:    CharEncoding:UTF-8
:    ContentLength:-1
:    ContentType:null
:    ContextPath:/portal
:    LocalAddress:192.168.9.90
:    LocalName:darth
:    LocalPort:8080
:    Method:GET
:    PathInfo:/tool/c98f38d4-7426-462d-00f7-33e2445b9f61
:    Protocol:HTTP/1.1
:    QueryString:panel=Main
:    RemoteAddress:65.218.63.174
:    RemoteHost:65.218.63.174
:    RemotePort:3337
[snip]

And the original stack-trace error started out with:

2009-04-15 14:37:43,200  WARN http-8080-Processor24
org.sakaiproject.portal.util.ErrorReporter - Bug Report bug-id:
c592b903-7295-4cba-82ba-06f2ab721a
7f user: f8ddaeff-9ce6-4440-0021-6692aa328f86 usage-session:
3cc361e4-6a16-4450-a3a0-c7f61dff38c9 time: Apr 15, 2009 14:37:43 user
comment: null stack trace
org.sakaiproject.portal.api.PortalHandlerException:
org.springframework.orm.hibernate3.HibernateSystemException: Null
value was assigned to a property
 of primitive type setter of
org.sakaiproject.coursemanagement.impl.AcademicSessionCmImpl.current;
nested exception is org.hibernate.PropertyAccessException: Null value
was assigned to a property of primitive type setter of
org.sakaiproject.coursemanagement.impl.AcademicSessionCmImpl.current
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:768)
caused by: org.springframework.orm.hibernate3.HibernateSystemException:
Null value was assigned to a property of primitive type setter of
org.sakaipro
ject.coursemanagement.impl.AcademicSessionCmImpl.current; nested
exception is org.hibernate.PropertyAccessException: Null value was
assigned to a property of primitive type setter of
org.sakaiproject.coursemanagement.impl.AcademicSessionCmImpl.current
    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
caused by: org.hibernate.PropertyAccessException: Null value was
assigned to a property of primitive type setter of
org.sakaiproject.coursemanagement.impl.AcademicSessionCmImpl.current
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337)
caused by: java.lang.IllegalArgumentException
    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:585)
    at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:200)


On Wed, Apr 8, 2009 at 1:08 PM, will trillich <will at serensoft.com> wrote:
> Any idea why the 'resources' tool would start bombing out in class
> worksites? (2.6.x)
>
> Here's the in-browser error message:
>
> org.sakaiproject.portal.api.PortalHandlerException:
> org.springframework.orm.hibernate3.HibernateSystemException: Null value was
> assigned to a property of primitive type setter of
> org.sakaiproject.coursemanagement.impl.AcademicSessionCmImpl.current; nested
> exception is org.hibernate.PropertyAccessException: Null value was assigned
> to a property of primitive type setter of
> org.sakaiproject.coursemanagement.impl.AcademicSessionCmImpl.current
>    at
> org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:768)
> caused by: org.springframework.orm.hibernate3.HibernateSystemException: Null
> value was assigned to a property of primitive type setter of
> org.sakaiproject.coursemanagement.impl.AcademicSessionCmImpl.current; nested
> exception is org.hibernate.PropertyAccessException: Null value was assigned
> to a property of primitive type setter of
> org.sakaiproject.coursemanagement.impl.AcademicSessionCmImpl.current
>    at
> org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
> caused by: org.hibernate.PropertyAccessException: Null value was assigned to
> a property of primitive type setter of
> org.sakaiproject.coursemanagement.impl.AcademicSessionCmImpl.current
>    at
> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337)
> caused by: java.lang.IllegalArgumentException
>    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:585)
>    at
> org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
>    at
> org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337)
>    at
> org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:200)
>    at
> org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3566)
>    at
> org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:129)
>    at
> org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:854)
>    at org.hibernate.loader.Loader.doQuery(Loader.java:729)
>    at
> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
>    at org.hibernate.loader.Loader.doList(Loader.java:2220)
>    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
>    at org.hibernate.loader.Loader.list(Loader.java:2099)
>    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
>    at
> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
>    at
> org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
>    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
>    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
>    at
> org.springframework.orm.hibernate3.HibernateTemplate$32.doInHibernate(HibernateTemplate.java:916)
>    at
> org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
>    at
> org.springframework.orm.hibernate3.HibernateTemplate.findByNamedQuery(HibernateTemplate.java:907)
>    at
> org.springframework.orm.hibernate3.HibernateTemplate.findByNamedQuery(HibernateTemplate.java:899)
>    at
> org.sakaiproject.coursemanagement.impl.CourseManagementServiceHibernateImpl.getAcademicSessions(CourseManagementServiceHibernateImpl.java:138)
>    at
> org.sakaiproject.coursemanagement.impl.CourseManagementServiceFederatedImpl.getAcademicSessions(CourseManagementServiceFederatedImpl.java:221)
>    at sun.reflect.GeneratedMethodAccessor1356.invoke(null:-1)
> <snip/>
>
> select title,start_date,end_date,is_current from CM_ACADEMIC_SESSION_T;
> +------------+------------+------------+------------+
> | title      | start_date | end_date   | is_current |
> +------------+------------+------------+------------+
> | Spring2007 | 2007-01-01 | 2007-05-30 | NULL       |
> | Summer2007 | 2007-06-01 | 2007-08-31 | NULL       |
> | Fall2007   | 2007-09-01 | 2007-12-31 | NULL       |
> | Spring2008 | 2008-01-01 | 2008-05-30 | NULL       |
> | Summer2008 | 2008-02-08 | 2008-08-31 | NULL       |
> | Fall2008   | 2008-02-08 | 2008-12-31 | NULL       |
> | Spring2009 | 2008-02-08 | 2010-06-30 |           |
> | Summer2009 | 2008-02-08 | 2010-06-30 |           |
> | Fall2009   | 2008-02-08 | 2010-06-30 |           |
> | Spring2010 | 2009-01-01 | 2010-06-30 | NULL       |
> | Summer2010 | 2009-01-01 | 2010-06-30 | NULL       |
> | Fall2010   | 2009-01-01 | 2010-06-30 | NULL       |
> +------------+------------+------------+------------+
>
> Hypothesis: the is_current field (a 'bit') may be the problem...? Setting
> the non-null fields to "b'1'" produces the skewed columns as shown above;
> settnig them to "b'0'" at least has the columns lining up...


-- 
will trillich
"If you do not change direction, you may end up where you are
heading." -- Lao Tzu


More information about the sakai-dev mailing list