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

Reply via email to