On Fri, Nov 21, 2014 at 9:54 AM, Stefan Bernsdorf <[email protected]> wrote: > > Am 21.11.2014 09:11, schrieb Thomas Mortagne: >> >> On Fri, Nov 21, 2014 at 8:42 AM, Stefan Bernsdorf >> <[email protected]> wrote: >>> >>> Thomas, >>> it seems it has nothing to do with my context. >>> I tried to initialize my context with the xcontextProvider. It failed >>> again. >>> >>> Instead I checked the source code of >>> AbstractDataMigrationManager.getXWikiContext which is shown in the stack >>> trace and it found this: >>> >>> protected XWikiContext getXWikiContext() >>> { >>> ExecutionContext context = execution.getContext(); >>> return (XWikiContext) context.getProperty("xwikicontext"); >>> } >>> >>> Seems that the Context is not injected properly when it runs in a job? >> >> Again as I told you the ExecutionContext is properly initialized but >> the XWikiContext is something else, the Provider among other things >> create and set a XWikiContext when there is none. Now what is wrong is >> that you end up in AbstractDataMigrationManager in your thread since >> its supposed to be called only the first time a request is done. >> >> When do you start your job exactly ? Are you sure the database is >> ready when you do (it's not before the first access to the wi trough >> the browser) ? You can listen to >> org.xwiki.bridge.event.ApplicationReadyEvent to be notified when it's >> ok to use the database. > > The job is started from a macro class. So the wiki itself should be fully > initialized. >
There is something very weird in your stack trace, you clearly have a XWikiContext in the ExecutionContext as otherwise you would get a nullpointer in your own code before AbstractDataMigrationManager so what you have really does not make any sense to me. Without debugging I don't have much idea. Also the stack trace you have clearly indicate that this thread has been executed with in the XWikiContext a wiki that was not initialized. Does mycon.getDatabase() contains what you expect ? > > > >>> >>> Am 21.11.2014 07:49, schrieb Thomas Mortagne: >>> >>>> On Thu, Nov 20, 2014 at 10:45 PM, Stefan Bernsdorf >>>> <[email protected]> wrote: >>>>> >>>>> Thomas, >>>>> thanks. I managed to build my thread as an XWiki Job and also managed >>>>> to >>>>> add >>>>> it to the JobExecutor. >>>>> However, my initial problem still persists. >>>>> I am not able to add an attachment to a document in this job. >>>>> Find the stack trace below. Looking at the source of >>>>> XWikiHibernateBaseStore >>>>> tells me, it has something to do with the Execution context of the Job, >>>>> but >>>>> this should be managed by the job executor, right? >>>>> This is my code snip to add the attachment: >>>>> XWikiContext mycon = (XWikiContext) >>>>> execution.getContext().getProperty("xwikicontext"); >>>> >>>> The ExecutionContext is initialized automatically but XWikiContext is >>>> something else and you should never try to get it directly from the >>>> ExecutionContext but use the provider instead as in: >>>> >>>> @Inject >>>> private Provider<XWikiContext> xcontextProvider; >>>> >>>>> XWikiDocument doc=mycon.getWiki().getDocument(m_adoc, >>>>> mycon); >>>>> XWikiAttachment att=doc.getAttachment(m_file); >>>>> if (att!=null) { >>>>> doc.deleteAttachment(att,mycon); >>>>> att=null; >>>>> } >>>>> if (att==null) { >>>>> att=doc.addAttachment(m_file,ins ,mycon); >>>>> XWikiAttachmentStoreInterface >>>>> ai=doc.getAttachmentStore(mycon); >>>>> XWikiHibernateAttachmentStore >>>>> hib=(XWikiHibernateAttachmentStore)ai; >>>>> hib.beginTransaction(mycon); >>>>> ai.saveAttachmentContent(att, mycon, true); >>>>> hib.endTransaction(mycon,true); >>>>> att.updateContentArchive(mycon); >>>>> } >>>>> >>>>> >>>>> This is the stack trace: >>>>> com.xpn.xwiki.XWikiException: Error number 3301 in 3: Exception while >>>>> switching to database xwiki >>>>> at >>>>> >>>>> >>>>> com.xpn.xwiki.store.XWikiHibernateBaseStore.setDatabase(XWikiHibernateBaseStore.java:739) >>>>> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na] >>>>> at >>>>> >>>>> >>>>> com.xpn.xwiki.store.XWikiHibernateBaseStore.beginTransaction(XWikiHibernateBaseStore.java:911) >>>>> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na] >>>>> at >>>>> >>>>> >>>>> com.xpn.xwiki.store.XWikiHibernateBaseStore.beginTransaction(XWikiHibernateBaseStore.java:811) >>>>> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na] >>>>> at >>>>> org.centauron.xwiki.help.XWikiUpload.doCommand(XWikiUpload.java:68) >>>>> ~[centauron_xwiki.jar:na] >>>>> at >>>>> org.centauron.ant.TestScript.executeExtraData(TestScript.java:208) >>>>> ~[centauron_xwiki.jar:na] >>>>> at org.centauron.ant.TestProcess.doPost(TestProcess.java:249) >>>>> ~[centauron_xwiki.jar:na] >>>>> at org.centauron.ant.TestProcess.start(TestProcess.java:228) >>>>> ~[centauron_xwiki.jar:na] >>>>> at >>>>> org.centauron.xwiki.job.XWikiAntJob.internalCall(XWikiAntJob.java:112) >>>>> [centauron_xwiki.jar:na] >>>>> at >>>>> org.centauron.xwiki.job.XWikiAntJob.doStart(XWikiAntJob.java:98) >>>>> [centauron_xwiki.jar:na] >>>>> at org.centauron.xwiki.job.XWikiAntJob.run(XWikiAntJob.java:41) >>>>> [centauron_xwiki.jar:na] >>>>> at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown >>>>> Source) >>>>> [na:1.8.0_05] >>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown >>>>> Source) >>>>> [na:1.8.0_05] >>>>> at java.lang.Thread.run(Unknown Source) [na:1.8.0_05] >>>>> Caused by: java.lang.NullPointerException: null >>>>> at >>>>> >>>>> >>>>> com.xpn.xwiki.store.migration.AbstractDataMigrationManager.getXWikiContext(AbstractDataMigrationManager.java:282) >>>>> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na] >>>>> at >>>>> >>>>> >>>>> com.xpn.xwiki.store.migration.AbstractDataMigrationManager.getDataMigrationStatus(AbstractDataMigrationManager.java:406) >>>>> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na] >>>>> at >>>>> >>>>> >>>>> com.xpn.xwiki.store.migration.AbstractDataMigrationManager.getDatabaseStatus(AbstractDataMigrationManager.java:548) >>>>> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na] >>>>> at >>>>> >>>>> >>>>> com.xpn.xwiki.store.migration.AbstractDataMigrationManager.checkDatabase(AbstractDataMigrationManager.java:516) >>>>> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na] >>>>> at >>>>> >>>>> >>>>> com.xpn.xwiki.store.XWikiHibernateBaseStore.setDatabase(XWikiHibernateBaseStore.java:735) >>>>> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na] >>>>> ... 12 common frames omitted >>>>> Am 20.11.2014 10:31, schrieb Thomas Mortagne: >>>>> >>>>>> Everything in XWiki is based on JobExecutor now so I can assure you it >>>>>> does not wait. Maybe your job is doing something slow in initialize. >>>>>> >>>>>> On Thu, Nov 20, 2014 at 10:24 AM, Stefan Bernsdorf >>>>>> <[email protected]> wrote: >>>>>>> >>>>>>> Thomas, >>>>>>> if I start a job using >>>>>>> jobExecutor.execute("antjob", req); >>>>>>> it waits until the job is finished. >>>>>>> >>>>>>> Am 20.11.2014 09:44, schrieb Thomas Mortagne: >>>>>>> >>>>>>>> As indicated in the javadoc of JobExecutor all jobs are executed >>>>>>>> asychronously. You actually need to use Job#join when you want to >>>>>>>> wait. >>>>>>>> >>>>>>>> On Thu, Nov 20, 2014 at 9:38 AM, Stefan Bernsdorf >>>>>>>> <[email protected]> wrote: >>>>>>>>> >>>>>>>>> Hi, >>>>>>>>> I have seen that the jobManager is deprecated since 6.1. >>>>>>>>> But how would I schedule a job and return immediately using the >>>>>>>>> jobExecutor? >>>>>>>>> (Using the jobManager it would be something like : >>>>>>>>> Job job = jobManager.addJob("jobtype", request)) >>>>>>>>> Thanks , Stefan. >>>>>>>>> _______________________________________________ >>>>>>>>> users mailing list >>>>>>>>> [email protected] >>>>>>>>> http://lists.xwiki.org/mailman/listinfo/users >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> _______________________________________________ >>>>>>> users mailing list >>>>>>> [email protected] >>>>>>> http://lists.xwiki.org/mailman/listinfo/users >>>>>> >>>>>> >>>>>> >>>>> _______________________________________________ >>>>> users mailing list >>>>> [email protected] >>>>> http://lists.xwiki.org/mailman/listinfo/users >>>> >>>> >>>> >>> _______________________________________________ >>> users mailing list >>> [email protected] >>> http://lists.xwiki.org/mailman/listinfo/users >> >> >> > > > _______________________________________________ > users mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/users -- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
