[Building Sakai] Problems starting an upgraded 2.8 to 2.9.x instance

David Adams da1 at vt.edu
Tue Apr 23 11:13:10 PDT 2013


Yeah, I'd prefer there to be a little more thought put into what the
problems really are here instead of just adding a bunch more confusing,
contradictory, and overlapping property settings. At the baseline level,
there's no visibility or control over what jobs are scheduled and what's
going to run when. The drop-in quartz job manager is confusing and
difficult to use, and doesn't actually show most of the scheduled tasks
that are running under the hood. When we had a need to control what jobs
ran on what system, we punted and wrote a web service to call a quartz job
to run now, and we trigger that via a cron job that calls a program that
calls that service. Honestly, I prefer that method, since I can see what's
scheduled for when and on what server in cron and fit those job schedules
in with other relevant jobs on the machine. If Sakai must duplicate cron
internally, then it should at least provide the same visibility and control
that cron provides. Just my thoughts.

-dave

David Adams
Director, Systems Integration and Support
Virginia Tech Learning Technologies


On Tue, Apr 23, 2013 at 11:07 AM, Maurer, Christopher Wayne <
chmaurer at iupui.edu> wrote:

>  I'm a little biased, but I don't think that this is the solution that we
> should have adopted, especially with no discussion.  I like (obviously)
> what we did in https://jira.sakaiproject.org/browse/SAK-23415 because it
> has better configurability for a cluster.  Let's consider both issues and
> come up with a real solution here.
>
>  Chris
>
>   From: Neal Caidin <nealcaidin at sakaifoundation.org>
> Date: Tuesday, April 23, 2013 12:02 PM
> To: Matthew Jones <matthew at longsight.com>
> Cc: "Kusnetz, Jeremy" <JKusnetz at apus.edu>, sakai-dev <
> sakai-dev at collab.sakaiproject.org>
>
> Subject: Re: [Building Sakai] Problems starting an upgraded 2.8 to 2.9.x
> instance
>
>   This sounds like it belongs in the release notes?
>
>  https://jira.sakaiproject.org/browse/SAK-13776
>
>  Thanks,
> Neal
>
>   On Apr 23, 2013, at 11:07 AM, Matthew Jones <matthew at longsight.com>
> wrote:
>
>  Yea, you'd need to branch jobscheduler 2.9.x, merge this patch from
> trunk and build it custom. The *easiest* way to do that is if your school
> is in msub already, but you have to be a Sakai Foundation/Apereo member or
> supported by a Sakai Commercial Affiliate for that to happen. (Not sure if
> you are or not) It's probably possible to do this locally or through github
> as well
>
>
> On Tue, Apr 23, 2013 at 11:02 AM, Kusnetz, Jeremy <JKusnetz at apus.edu>wrote:
>
>>  That’s the problem, thanks.  This was an rSmart CLE where I guess that
>> was added.****
>>
>> ** **
>>
>> I think the purpose was to designate one node in the cluster to run
>> Quartz jobs, so it could run on a predictable node and I guess not clobber
>> each other running the same job?****
>>
>> ** **
>>
>> Is there a way to do that in the community version?****
>>
>> ** **
>>
>> I guess we can look into https://jira.sakaiproject.org/browse/SAK-13776**
>> **
>>
>> ** **
>>
>> *From:*sakai-dev-bounces at collab.sakaiproject.org [mailto:
>> sakai-dev-bounces at collab.sakaiproject.org] *On Behalf Of *David Adams
>> *Sent:* Tuesday, April 23, 2013 10:55 AM
>> *To:* Kusnetz, Jeremy
>> *Cc:* sakai-dev
>> *Subject:* Re: [Building Sakai] Problems starting an upgraded 2.8 to
>> 2.9.x instance****
>>
>> ** **
>>
>> Looks like the problem is this bit:****
>>
>> NotWritablePropertyException: Invalid property 'startScheduler' of bean
>> class [org.sakaiproject.component.app.scheduler.SchedulerManagerImpl]: Bean
>> property 'startScheduler' is not writable or has an invalid setter method.
>> ****
>>
>> ** **
>>
>> Looks like the file to check out
>> is /SAKAI/apus/tomcat_servers/servers/apache-tomcat-7.0.35-community-2.9.x-200/components/scheduler-component/WEB-INF/components.xml
>> ****
>>
>> ** **
>>
>> I don't see the property startScheduler in that file in our 2.8 or 2.9
>> code, so perhaps that was something your team added to 2.8? There'd have to
>> be a setStartScheduler method in the SchedulerManagerImpl class for that to
>> work.****
>>
>>
>> ****
>>
>> David Adams****
>>
>> Director, Systems Integration and Support****
>>
>> Virginia Tech Learning Technologies****
>>
>> ** **
>>
>> On Tue, Apr 23, 2013 at 9:47 AM, Kusnetz, Jeremy <JKusnetz at apus.edu>
>> wrote:****
>>
>> We have had success bringing up multiple converted 2.8 to 2.9 instances,
>> but one of our is giving us the following errors.****
>>
>>  ****
>>
>> I went ahead blew away all of our QRTZ tables and imported with a working
>> 2.9 instance that didn’t have any jobs defined.  That hasn’t helped get
>> past this error.****
>>
>>  ****
>>
>> 2013-04-23 10:43:45,079  INFO localhost-startStop-1
>> org.sakaiproject.user.impl.PrecachingDbUserService - User precache not
>> scheduled for startup run****
>>
>> 2013-04-23 10:43:45,079  INFO localhost-startStop-1
>> org.sakaiproject.user.impl.PrecachingDbUserService - User precache not
>> scheduled for daily run****
>>
>> 2013-04-23 10:43:45,080  INFO localhost-startStop-1
>> org.sakaiproject.accountvalidator.logic.impl.ValidationLogicImpl - init()
>> ****
>>
>> 2013-04-23 10:43:45,287 ERROR localhost-startStop-1
>> org.sakaiproject.util.NoisierDefaultListableBeanFactory - Failed to
>> preinstantiate the singleton named
>> org.sakaiproject.api.app.scheduler.JobBeanWrapper.validateJob. Destroying
>> all Spring beans.****
>>
>> org.springframework.beans.factory.BeanCreationException: Error creating
>> bean with name
>> 'org.sakaiproject.api.app.scheduler.JobBeanWrapper.validateJob' defined in
>> file
>> [/SAKAI/apus/tomcat_servers/servers/apache-tomcat-7.0.35-community-2.9.x-200/components/accountvalidator-pack/WEB-INF/components.xml]:
>> Cannot resolve reference to bean
>> 'org.sakaiproject.api.app.scheduler.SchedulerManager' while setting bean
>> property 'schedulerManager'; nested exception is
>> org.springframework.beans.factory.BeanCreationException: Error creating
>> bean with name 'org.sakaiproject.api.app.scheduler.SchedulerManager'
>> defined in file
>> [/SAKAI/apus/tomcat_servers/servers/apache-tomcat-7.0.35-community-2.9.x-200/components/scheduler-component/WEB-INF/components.xml]:
>> Error setting property values; nested exception is
>> org.springframework.beans.NotWritablePropertyException: Invalid property
>> 'startScheduler' of bean class
>> [org.sakaiproject.component.app.scheduler.SchedulerManagerImpl]: Bean
>> property 'startScheduler' is not writable or has an invalid setter method.
>> Does the parameter type of the setter match the return type of the getter?
>> ****
>>
>>                 at
>> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
>> ****
>>
>>                 at
>> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
>> ****
>>
>>                 at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
>> ****
>>
>>                 at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
>> ****
>>
>>                 at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
>> ****
>>
>>                 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.component.cover.ServerConfigurationService.getSakaiHomePath(ServerConfigurationService.java:173)
>> ****
>>
>>                 at
>> org.sakaiproject.util.ToolListener.contextInitialized(ToolListener.java:66)
>> ****
>>
>>                 at
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
>> ****
>>
>>                 at
>> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
>> ****
>>
>>                 at
>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)****
>>
>>                 at
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
>> ****
>>
>>                 at
>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)**
>> **
>>
>>                 at
>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)****
>>
>>                 at
>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)****
>>
>>                 at
>> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655)
>> ****
>>
>>                 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:662)****
>>
>> Caused by: org.springframework.beans.factory.BeanCreationException: Error
>> creating bean with name
>> 'org.sakaiproject.api.app.scheduler.SchedulerManager' defined in file
>> [/SAKAI/apus/tomcat_servers/servers/apache-tomcat-7.0.35-community-2.9.x-200/components/scheduler-component/WEB-INF/components.xml]:
>> Error setting property values; nested exception is
>> org.springframework.beans.NotWritablePropertyException: Invalid property
>> 'startScheduler' of bean class
>> [org.sakaiproject.component.app.scheduler.SchedulerManagerImpl]: Bean
>> property 'startScheduler' is not writable or has an invalid setter method.
>> Does the parameter type of the setter match the return type of the getter?
>> ****
>>
>>                 at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1279)
>> ****
>>
>>                 at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
>> ****
>>
>>                 at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
>> ****
>>
>>                 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.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
>> ****
>>
>>                 ... 36 more****
>>
>> Caused by: org.springframework.beans.NotWritablePropertyException:
>> Invalid property 'startScheduler' of bean class
>> [org.sakaiproject.component.app.scheduler.SchedulerManagerImpl]: Bean
>> property 'startScheduler' is not writable or has an invalid setter method.
>> Does the parameter type of the setter match the return type of the getter?
>> ****
>>
>>                 at
>> org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:801)
>> ****
>>
>>                 at
>> org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:651)
>> ****
>>
>>                 at
>> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:78)
>> ****
>>
>>                 at
>> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:59)
>> ****
>>
>>                 at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1276)
>> ****
>>
>>                 ... 48 more****
>>
>> java.lang.Exception: traceback****
>>
>>                 at
>> org.sakaiproject.util.NoisierDefaultListableBeanFactory.destroySingletons(NoisierDefaultListableBeanFactory.java:94)
>> ****
>>
>>                 at
>> org.sakaiproject.util.NoisierDefaultListableBeanFactory.preInstantiateSingletons(NoisierDefaultListableBeanFactory.java:83)
>> ****
>>
>>                 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.component.cover.ServerConfigurationService.getSakaiHomePath(ServerConfigurationService.java:173)
>> ****
>>
>>                 at
>> org.sakaiproject.util.ToolListener.contextInitialized(ToolListener.java:66)
>> ****
>>
>>                 at
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
>> ****
>>
>>                 at
>> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
>> ****
>>
>>                 at
>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)****
>>
>>                 at
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
>> ****
>>
>>                 at
>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)**
>> **
>>
>>                 at
>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)****
>>
>>                 at
>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)****
>>
>>                 at
>> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655)
>> ****
>>
>>                 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:662)****
>>
>> This message is private and confidential. If you have received it in
>> error, please notify the sender and remove it from your system.****
>>
>>
>> _______________________________________________
>> 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"****
>>
>> ** **
>>
>> This message is private and confidential. If you have received it in
>> error, please notify the sender and remove it from your system.
>>
>> _______________________________________________
>> 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"
>>
>
>  _______________________________________________
> 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"
>
>
>
> _______________________________________________
> 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"
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20130423/9156baf6/attachment.html 


More information about the sakai-dev mailing list