[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