spring - Hibernate Search..Access a Sealed WorkQueue which has not been sealed -
i trying use hibernate search new project. have hibernate , spring without jpa. m getting following exception when hibernate search tries update index file thru event listeners. have read around on issue nothing seems work me. appreciate help.
environment: spring 3.0.5 hibernate 3.5.4 hibernate search 3.2.1
exception:
transactionsy e org.springframework.transaction.support.transactionsynchronizationutils invokeaftercompletion transactionsynchronization.aftercompletion threw exception org.hibernate.assertionfailure: exception releasing cache locks @ org.hibernate.engine.actionqueue$aftertransactioncompletionprocessqueue.aftertransactioncompletion(actionqueue.java:584) @ org.hibernate.engine.actionqueue.aftertransactioncompletion(actionqueue.java:204) @ org.hibernate.impl.sessionimpl.aftertransactioncompletion(sessionimpl.java:594) @ org.springframework.orm.hibernate3.springsessionsynchronization.aftercompletion(springsessionsynchronization.java:229) @ org.springframework.transaction.support.transactionsynchronizationutils.invokeaftercompletion(transactionsynchronizationutils.java:168) @ org.springframework.transaction.jta.jtaaftercompletionsynchronization.aftercompletion(jtaaftercompletionsynchronization.java:62) @ com.ibm.ws.uow.componentcontextsynchronizationwrapper.aftercompletion(componentcontextsynchronizationwrapper.java:83) @ com.ibm.tx.jta.registeredsyncs.coredistributeafter(registeredsyncs.java:357) @ com.ibm.ws.tx.jta.registeredsyncs.distributeafter(registeredsyncs.java:317) @ com.ibm.tx.jta.transactionimpl.distributeafter(transactionimpl.java:2933) @ com.ibm.tx.jta.transactionimpl.postcompletion(transactionimpl.java:2892) @ com.ibm.tx.jta.transactionimpl.postcompletion(transactionimpl.java:2805) @ com.ibm.tx.jta.transactionimpl.commitxaresources(transactionimpl.java:1775) @ com.ibm.ws.tx.jta.transactionimpl.stage1commitprocessing(transactionimpl.java:497) @ com.ibm.tx.jta.transactionimpl.processcommit(transactionimpl.java:978) @ com.ibm.tx.jta.transactionimpl.commit(transactionimpl.java:913) @ com.ibm.ws.tx.jta.tranmanagerimpl.commit(tranmanagerimpl.java:369) @ com.ibm.tx.jta.tranmanagerset.commit(tranmanagerset.java:161) @ com.ibm.ws.uow.uowmanagerimpl.uowcommit(uowmanagerimpl.java:1172) @ com.ibm.ws.uow.uowmanagerimpl.uowend(uowmanagerimpl.java:1142) @ com.ibm.ws.uow.uowmanagerimpl.runundernewuow(uowmanagerimpl.java:1092) @ com.ibm.ws.uow.uowmanagerimpl.rununderuow(uowmanagerimpl.java:626) @ org.springframework.transaction.jta.websphereuowtransactionmanager.execute(websphereuowtransactionmanager.java:281) @ org.springframework.transaction.interceptor.transactioninterceptor.invoke(transactioninterceptor.java:127) @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:172) @ org.springframework.aop.framework.cglib2aopproxy$dynamicadvisedinterceptor.intercept(cglib2aopproxy.java:621) @ com.test.service.inventory.inventoryserviceimpl$$enhancerbycglib$$847cc0d8.updateinventoy(<generated>) @ com.test.web.servlet.searchservlet.dopost(searchservlet.java:51) @ com.test.web.servlet.searchservlet.doget(searchservlet.java:75) @ javax.servlet.http.httpservlet.service(httpservlet.java:718) @ javax.servlet.http.httpservlet.service(httpservlet.java:831) @ com.ibm.ws.webcontainer.servlet.servletwrapper.service(servletwrapper.java:1449) @ com.ibm.ws.webcontainer.servlet.servletwrapper.handlerequest(servletwrapper.java:790) @ com.ibm.ws.webcontainer.servlet.servletwrapper.handlerequest(servletwrapper.java:443) @ com.ibm.ws.webcontainer.servlet.servletwrapperimpl.handlerequest(servletwrapperimpl.java:175) @ com.ibm.ws.webcontainer.servlet.cacheservletwrapper.handlerequest(cacheservletwrapper.java:91) @ com.ibm.ws.webcontainer.webcontainer.handlerequest(webcontainer.java:859) @ com.ibm.ws.webcontainer.wswebcontainer.handlerequest(wswebcontainer.java:1557) @ com.ibm.ws.webcontainer.channel.wcchannellink.ready(wcchannellink.java:173) @ com.ibm.ws.http.channel.inbound.impl.httpinboundlink.handlediscrimination(httpinboundlink.java:455) @ com.ibm.ws.http.channel.inbound.impl.httpinboundlink.handlenewinformation(httpinboundlink.java:384) @ com.ibm.ws.http.channel.inbound.impl.httpinboundlink.ready(httpinboundlink.java:272) @ com.ibm.ws.tcp.channel.impl.newconnectioninitialreadcallback.sendtodiscriminators(newconnectioninitialreadcallback.java:214) @ com.ibm.ws.tcp.channel.impl.newconnectioninitialreadcallback.complete(newconnectioninitialreadcallback.java:113) @ com.ibm.ws.tcp.channel.impl.aioreadcompletionlistener.futurecompleted(aioreadcompletionlistener.java:165) @ com.ibm.io.async.abstractasyncfuture.invokecallback(abstractasyncfuture.java:217) @ com.ibm.io.async.asyncchannelfuture.firecompletionactions(asyncchannelfuture.java:161) @ com.ibm.io.async.asyncfuture.completed(asyncfuture.java:138) @ com.ibm.io.async.resulthandler.complete(resulthandler.java:202) @ com.ibm.io.async.resulthandler.runeventprocessingloop(resulthandler.java:766) @ com.ibm.io.async.resulthandler$2.run(resulthandler.java:896) @ com.ibm.ws.util.threadpool$worker.run(threadpool.java:1527) caused by: org.hibernate.hibernateexception: error while indexing in hibernate search (ater transaction completion) @ org.hibernate.search.backend.impl.eventsourcetransactioncontext$delegatetosynchronizationonaftertx.doaftertransactioncompletion(eventsourcetransactioncontext.java:179) @ org.hibernate.engine.actionqueue$aftertransactioncompletionprocessqueue.aftertransactioncompletion(actionqueue.java:577) ... 51 more caused by: org.hibernate.annotations.common.assertionfailure: access sealed workqueue has not been sealed @ org.hibernate.search.backend.workqueue.getsealedqueue(workqueue.java:87) @ org.hibernate.search.backend.impl.batchedqueueingprocessor.performworks(batchedqueueingprocessor.java:280) @ org.hibernate.search.backend.impl.posttransactionworkqueuesynchronization.aftercompletion(posttransactionworkqueuesynchronization.java:96) @ org.hibernate.search.backend.impl.eventsourcetransactioncontext$delegatetosynchronizationonaftertx.doaftertransactioncompletion(eventsourcetransactioncontext.java:176) ... 52 more i know there fix similar problem [#hsearch-540] not seem working me.
here spring context:
<bean id="sessionfactory" class="org.springframework.orm.hibernate3.annotation.annotationsessionfactorybean"> <property name="datasource" ref="datasource" /> <property name="packagestoscan" value="com.test.entity.inventory" /> <property name="hibernateproperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.oracle10gdialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.jdbc.batch_size">40</prop> <!-- hibernate search properties --> <prop key="hibernate.search.default.indexbase">/poc/index</prop> <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.fsdirectoryprovider</prop> </props> </property> </bean> <bean id="transactionmanager" class="org.springframework.transaction.jta.websphereuowtransactionmanager" /> <tx:annotation-driven /> <bean id="inventorydao" class="com.test.dao.inventory.inventorydao"> <property name="sessionfactory" ref="sessionfactory" /> </bean> here inventorydao method throwing exception.
@transactional public inventory updateinventoy(long id) { inventory inv = null; session session = sessionfactory.getcurrentsession(); inv = (inventory) session.load(inventory.class, id); inv.setprice(100000); inv.setmodel("testing123"); return inv; } the database updated fine index not getting updated.
please help. in advance..
to keep index in sync database have wrap hibernate session in full-text session, so:
fulltextsession session = search.getfulltextsession(sessionfactory.getcurrentsession()); then use full-text session in place of wrapped session.
Comments
Post a Comment