[Building Sakai] SAK-23733: Nightly mysql trunk is down... circular spring reference?

Kevin Takacs ktakacs at anisakai.com
Fri Jul 12 09:49:17 PDT 2013


I also ran into this when testing r126908 in SAK-23733 against a local
2.9.x instance.  The following stack trace occurs in catalina.out and then
all the beans are destroyed:

Cannot resolve reference to bean
'org_sakaiproject_service_gradebook_GradebookService' while setting bean
property 'gradebookService'; nested exception is
org.springframework.beans.factory.BeanCurrentlyInCreationException: Error
creating bean with name
'org_sakaiproject_service_gradebook_GradebookService':
org.springframework.beans.factory.FactoryBeanNotInitializedException:
FactoryBean is not fully initialized yet
    at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
    at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at
org.sakaiproject.util.NoisierDefaultListableBeanFactory.getBean(NoisierDefaultListableBeanFactory.java:112)
    at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at
org.sakaiproject.util.NoisierDefaultListableBeanFactory.preInstantiateSingletons(NoisierDefaultListableBeanFactory.java:73)
    at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at
org.sakaiproject.component.impl.SpringCompMgr.init(SpringCompMgr.java:160)
    at
org.sakaiproject.component.cover.ComponentManager.getInstance(ComponentManager.java:98)
    at
org.sakaiproject.component.cover.ComponentManager.get(ComponentManager.java:107)
    at
org.sakaiproject.component.cover.ServerConfigurationService.getInstance(ServerConfigurationService.java:52)
    at org.sakaiproject.util.RequestFilter.init(RequestFilter.java:811)
    at
org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
    at
org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
    at
org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
    at
org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
    at
org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4638)
    at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5294)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
    at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:962)
    at
org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1603)
    at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)

I was able to fix this locally by removing the gradebookService injection
in
edu-services/gradebook-service/sakai-pack/src/webapp/WEB-INF/components.xml
and adding a ComponentManager call to
GradebookExternalAssessmentServiceImpl.  It's probably not the most elegant
solution but now I can get tomcat to start up again.  I will add this to a
comment in SAK-23733 for future reference but here is my diff:

Index:
gradebook-service/impl/src/java/org/sakaiproject/component/gradebook/GradebookExternalAssessmentServiceImpl.java
===================================================================
---
gradebook-service/impl/src/java/org/sakaiproject/component/gradebook/GradebookExternalAssessmentServiceImpl.java
(revision 126981)
+++
gradebook-service/impl/src/java/org/sakaiproject/component/gradebook/GradebookExternalAssessmentServiceImpl.java
(working copy)
@@ -42,6 +42,7 @@
 import org.hibernate.HibernateException;
 import org.hibernate.Query;
 import org.hibernate.Session;
+import org.sakaiproject.component.cover.ComponentManager;
 import org.sakaiproject.component.cover.ServerConfigurationService;
 import
org.sakaiproject.service.gradebook.shared.AssessmentNotFoundException;
 import
org.sakaiproject.service.gradebook.shared.AssignmentHasIllegalPointsException;
@@ -78,6 +79,10 @@
         this.gradebookService = gradebookService;
     }

+    public GradebookService getGradebookService(){
+        return (GradebookService)
ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService");
+    }
+
     private ConcurrentHashMap<String, ExternalAssignmentProvider>
externalProviders =
             new ConcurrentHashMap<String, ExternalAssignmentProvider>();

@@ -543,7 +548,7 @@
         // identified as items under its authority. This maintains the
behavior prior to the grouping support
         // introduced for the 2.9 release (SAK-11485 and SAK-19688), where
a tool that does not have a provider
         // implemented does not have its items filtered for student views
and grading.
-        List<org.sakaiproject.service.gradebook.shared.Assignment>
gbAssignments =
gradebookService.getViewableAssignmentsForCurrentUser(gradebookUid);
+        List<org.sakaiproject.service.gradebook.shared.Assignment>
gbAssignments =
getGradebookService().getViewableAssignmentsForCurrentUser(gradebookUid);
         for (org.sakaiproject.service.gradebook.shared.Assignment
assignment : gbAssignments) {
             String id = assignment.getExternalId();
             if (assignment.isExternallyMaintained() &&
!providedAssignments.contains(id) && !visibleAssignments.containsKey(id)) {
@@ -603,7 +608,7 @@
         //             but are not reported by any provider should be
included for everyone. This is
         //             to accommodate tools that use the external
assessment mechanisms but have not
         //             implemented an ExternalAssignmentProvider.
-        List<org.sakaiproject.service.gradebook.shared.Assignment>
allAssignments = gradebookService.getAssignments(gradebookUid);
+        List<org.sakaiproject.service.gradebook.shared.Assignment>
allAssignments = getGradebookService().getAssignments(gradebookUid);
         for (org.sakaiproject.service.gradebook.shared.Assignment
assignment : allAssignments) {
             String id = assignment.getExternalId();
             if (assignment.isExternallyMaintained() &&
!providedAssignments.contains(id)) {
Index: gradebook-service/sakai-pack/src/webapp/WEB-INF/components.xml
===================================================================
--- gradebook-service/sakai-pack/src/webapp/WEB-INF/components.xml
(revision 126981)
+++ gradebook-service/sakai-pack/src/webapp/WEB-INF/components.xml
(working copy)
@@ -63,7 +63,6 @@
             <ref bean="org_sakaiproject_tool_gradebook_facades_Authn" />
         </property>
         <property name="eventTrackingService"
ref="org_sakaiproject_tool_gradebook_facades_EventTrackingService" />
-        <property name="gradebookService"
ref="org_sakaiproject_service_gradebook_GradebookService" />
     </bean>

     <bean id="org_sakaiproject_service_gradebook_GradebookServiceTarget"




On Thu, Jul 11, 2013 at 11:45 PM, JUAN JOSé MEROñO SáNCHEZ
<jjmerono at um.es>wrote:

> Nightly mysql trunk is down [1] !! You could see error details in log
> file [2].
>
> It seems that the problem could be a circular spring reference in
> gradebook's components.xml.
> org_sakaiproject_service_gradebook_GradebookService >>
> org_sakaiproject_service_gradebook_GradebookServiceTarget >>
> org_sakaiproject_service_gradebook_GradebookExternalAssessmentService >>
> org_sakaiproject_service_gradebook_GradebookExternalAssessmentServiceTarget
>  >> org_sakaiproject_service_gradebook_GradebookService
>
> The circular reference was introduced in rev. 126908 related to
> SAK-23733 [3]
> But, in the other hand, nightly oracle trunk is working right [4] !!!
>
> Any idea why?
>
> [1] http://nightly2.sakaiproject.org:8085/portal
> [2] http://nightly2.sakaiproject.org/logs/tomcat-contrib/catalina.out
> [3]
>
> https://source.sakaiproject.org/viewsvn/edu-services/trunk/gradebook-service/sakai-pack/src/webapp/WEB-INF/components.xml?r1=100087&r2=126908
> [4] http://nightly2.sakaiproject.org:8082/portal
>
> Thanks !!
>
> _______________________________________________
> sakai-dev mailing list
> sakai-dev at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>
> TO UNSUBSCRIBE: send email to
> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
> "unsubscribe"
>



-- 
Kevin Takacs
Software Engineer
*O **602-337-8408*
*M **480-544-1972*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20130712/4a3f0466/attachment.html 


More information about the sakai-dev mailing list