[hibernate-issues] [Hibernate-JIRA] Commented: (HSEARCH-640) MassIndexer/JBoss 6: Could not register synchronization for container transaction

Mario Winterer (JIRA) noreply at atlassian.com
Thu Dec 9 07:18:13 EST 2010


    [ http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=39320#action_39320 ] 

Mario Winterer commented on HSEARCH-640:
----------------------------------------

Thanks for your comment on this issue. After inspecting relevant code of hibernate core and search, I think you pinpointed it exactly.
That's why it works perfectly when hibernate is configured to use the JTATransactionFactory, in which case session.beginTransaction() delegates to a JTA UserTransaction instead of just joining an existing transaction (which is not available because the indexing threads run 'outside' the container). So I think it is not necessarily required to omit session.beginTransaction() in an EE container as long as there is an active UserTransaction that can be joined.
If this is true, it might be sufficient to wrap the Runnables that are executed by BatchIndexingWorkspace.run() into 'JTA aware Runnables' that start a UserTransaction before delegating to the original Runnable.

> MassIndexer/JBoss 6: Could not register synchronization for container transaction
> ---------------------------------------------------------------------------------
>
>                 Key: HSEARCH-640
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-640
>             Project: Hibernate Search
>          Issue Type: Bug
>          Components: massindexer
>    Affects Versions: 3.3.0.CR1
>         Environment: Hibernate 3.6.0.Final, JBoss 6.0.0.CR1, HSQL 1.8.0 (shipped with JBoss 6.0.0.CR1)
> Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
>            Reporter: Mario Winterer
>            Assignee: Sanne Grinovero
>            Priority: Critical
>             Fix For: 3.3.0.Final
>
>         Attachments: contacts.ear
>
>
> If a mass indexer is used inside a CMP bean in JBoss 6 to rebuild the search index, an org.hibernate.TransactionException is thrown:
> {noformat}
> 2010-12-06 14:01:30,720 ERROR [org.hibernate.search.batchindexing.EntityConsumerLuceneworkProducer]
> (Hibernate Search: collectionsloader-1) error during batch indexing:
>  : org.hibernate.TransactionException: Could not register synchronization for container transaction
> 	at org.hibernate.transaction.CMTTransaction.begin(CMTTransaction.java:76) [:3.6.0.Final]
> 	at org.hibernate.ejb.transaction.JoinableCMTTransaction.begin(JoinableCMTTransaction.java:89) [:3.6.0.Final]
> 	at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473) [:3.6.0.Final]
> 	at org.hibernate.search.batchindexing.EntityConsumerLuceneworkProducer.run(EntityConsumerLuceneworkProducer.java:90) [:3.3.0.CR1]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_20]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_20]
> 	at java.lang.Thread.run(Thread.java:619) [:1.6.0_20]
> {noformat}
> I've included an example EAR (see attachment) that can be deployed to JBoss 6.0.0.CR1 without any modifications.
> It contains the required hibernate search libraries and defines one single indexed entity bean {{Contact}} as well as a JBoss service EJB named {{at.mw.contacts:ContactsService}} that can be accessed via JMX console.
> Use this service to do one of the following things:
> * add new contacts by specifying firstName/lastName
> * list all contacts
> * search for contacts using the search index
> * rebuild the entire search index (using a MassIndexer)
> Rebuilding the index fails with the exception listed above.
> Sources included.
> (the example uses an in-memory HSQL-DB and the ram directory provider for the lucene index).
> (see also forum discussion: [Could not register synchronization for container transaction|https://forum.hibernate.org/viewtopic.php?f=9&t=1004515&start=0])

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list