Bug 1081556 - java.lang.Class cannot be cast to org.infinispan.loaders.bucket.Bucket using Hibernate Search w/Infinispan
Summary: java.lang.Class cannot be cast to org.infinispan.loaders.bucket.Bucket using ...
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: JBoss Enterprise Application Platform 6
Classification: JBoss
Component: Hibernate
Version: 6.2.0,6.2.1,6.3.0,6.2.2,6.2.3,6.2.4
Hardware: x86_64
OS: All
unspecified
medium
Target Milestone: ---
: ---
Assignee: Brett Meyer
QA Contact: Zbyněk Roubalík
Russell Dickenson
URL:
Whiteboard:
: 1081555 (view as bug list)
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-03-27 14:48 UTC by sdnakhla
Modified: 2015-09-01 04:01 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2014-03-31 15:03:29 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description sdnakhla 2014-03-27 14:48:42 UTC
Description of problem:

When using Infinispan as the Hibernate Search directory provider, the following exception is encountered:

10:42:08,757 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 129) MSC000001: Failed to start service jboss.persistenceunit."MenuProject-ear.ear/MenuProject-dataModel-0.1-SNAPSHOT.jar#MenuProject": org.jboss.msc.service.StartException in service jboss.persistenceunit."MenuProject-ear.ear/MenuProject-dataModel-0.1-SNAPSHOT.jar#MenuProject": org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager net.odyssi.projectx.persistence.model.products.ProductReviewCommentBean
	at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51]
	at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
	at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager net.odyssi.projectx.persistence.model.products.ProductReviewCommentBean
	at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:265)
	at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:528)
	at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManagers(IndexManagerHolder.java:495)
	at org.hibernate.search.indexes.impl.IndexManagerHolder.buildEntityIndexBinding(IndexManagerHolder.java:104)
	at org.hibernate.search.spi.SearchFactoryBuilder.initDocumentBuilders(SearchFactoryBuilder.java:359)
	at org.hibernate.search.spi.SearchFactoryBuilder.buildNewSearchFactory(SearchFactoryBuilder.java:217)
	at org.hibernate.search.spi.SearchFactoryBuilder.buildSearchFactory(SearchFactoryBuilder.java:141)
	at org.hibernate.search.hcore.impl.HibernateSearchSessionFactoryObserver.sessionFactoryCreated(HibernateSearchSessionFactoryObserver.java:74)
	at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:52)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:572)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1794)
	at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899)
	at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:76)
	at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200)
	at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57)
	at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99)
	... 4 more
Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to org.infinispan.loaders.bucket.Bucket
	at org.infinispan.loaders.jdbc.binary.JdbcBinaryCacheStore.loadBucket(JdbcBinaryCacheStore.java:286)
	at org.infinispan.loaders.bucket.BucketBasedCacheStore.loadLockSafe(BucketBasedCacheStore.java:60)
	at org.infinispan.loaders.bucket.BucketBasedCacheStore.loadLockSafe(BucketBasedCacheStore.java:49)
	at org.infinispan.loaders.LockSupportCacheStore.load(LockSupportCacheStore.java:142)
	at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:186)
	at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeededAndUpdateStats(CacheLoaderInterceptor.java:252)
	at org.infinispan.interceptors.CacheLoaderInterceptor.visitGetKeyValueCommand(CacheLoaderInterceptor.java:119)
	at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:120)
	at org.infinispan.interceptors.EntryWrappingInterceptor.visitGetKeyValueCommand(EntryWrappingInterceptor.java:126)
	at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:120)
	at org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor.visitGetKeyValueCommand(NonTransactionalLockingInterceptor.java:60)
	at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:120)
	at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:134)
	at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:104)
	at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:120)
	at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:134)
	at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:104)
	at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:120)
	at org.infinispan.statetransfer.StateTransferInterceptor.handleTopologyAffectedCommand(StateTransferInterceptor.java:216)
	at org.infinispan.statetransfer.StateTransferInterceptor.handleDefault(StateTransferInterceptor.java:200)
	at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:104)
	at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:120)
	at org.infinispan.interceptors.CacheMgmtInterceptor.visitGetKeyValueCommand(CacheMgmtInterceptor.java:92)
	at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)
	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:120)
	at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:128)
	at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:92)
	at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:104)
	at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)
	at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:343)
	at org.infinispan.CacheImpl.get(CacheImpl.java:289)
	at org.infinispan.DecoratedCache.get(DecoratedCache.java:315)
	at org.infinispan.AbstractDelegatingCache.get(AbstractDelegatingCache.java:303)
	at org.infinispan.lucene.impl.FileListOperations.getFileList(FileListOperations.java:66)
	at org.infinispan.lucene.InfinispanDirectory.list(InfinispanDirectory.java:168)
	at org.infinispan.lucene.InfinispanDirectory.listAll(InfinispanDirectory.java:328)
	at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:602)
	at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:554)
	at org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:359)
	at org.apache.lucene.index.IndexReader.indexExists(IndexReader.java:1099)
	at org.hibernate.search.store.impl.DirectoryProviderHelper.initializeIndexIfNeeded(DirectoryProviderHelper.java:155)
	at org.hibernate.search.infinispan.impl.InfinispanDirectoryProvider.start(InfinispanDirectoryProvider.java:103)
	at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:103)
	at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:261)
	... 21 more

Version-Release number of selected component (if applicable):


How reproducible:

The following cache-container configuration is in place in JBoss EAP 6.2.0:

            <cache-container name="hibernateSearch" default-cache="LuceneIndexesData" jndi-name="java:jboss/infinispan/hibernateSearch" start="EAGER">
                <transport lock-timeout="60000"/>
                <replicated-cache name="LuceneIndexesMetadata" mode="SYNC" start="EAGER">
                    <binary-keyed-jdbc-store datasource="java:jboss/datasources/InfinispanDatasource" shared="true" passivation="false" purge="false">
                        <property name="createTableOnStart">
                            true
                        </property>
                        <binary-keyed-table>
                            <id-column name="ID_COLUMN" type="VARCHAR(255)"/>
                            <data-column name="DATUM" type="BYTEA"/>
                        </binary-keyed-table>
                    </binary-keyed-jdbc-store>
                </replicated-cache>
                <replicated-cache name="LuceneIndexesData" mode="SYNC" start="EAGER">
                    <binary-keyed-jdbc-store datasource="java:jboss/datasources/InfinispanDatasource" shared="true" passivation="false" purge="false">
                        <property name="createTableOnStart">
                            true
                        </property>
                        <binary-keyed-table>
                            <id-column name="ID_COLUMN" type="VARCHAR(255)"/>
                            <data-column name="DATUM" type="BYTEA"/>
                        </binary-keyed-table>
                    </binary-keyed-jdbc-store>
                </replicated-cache>
                <replicated-cache name="LuceneIndexesLocking" mode="SYNC" start="EAGER"/>
            </cache-container>


Below is the relevant portion of persistence.xml:

			<!-- Hibernate Search properties - Infinispan -->
			<property name="hibernate.search.infinispan.cachemanager_jndiname"
				value="java:jboss/infinispan/hibernateSearch" />
			<property name="hibernate.search.default.directory_provider"
				value="infinispan" />
			<property name="hibernate.search.infinispan.chunk_size"
				value="300000000" />
			<property name="hibernate.search.reader.strategy" value="shared" />
			<property name="hibernate.search.worker.execution" value="sync" />
			<property name="hibernate.search.jmx_enabled" value="true" />
			<property name="hibernate.search.autoregister_listeners"
				value="true" />


Steps to Reproduce:
1. Configure JBoss EAP as shown
2. Configure persistence.xml as shown
3. Attempt to write an @Indexed entity to the datastore

Actual results:

The exception shown above

Expected results:

The entity is written to the datastore, and is indexed in the Infinispan-backed Hibernate Search index

Additional info:

Comment 1 Brett Meyer 2014-03-31 14:42:05 UTC
*** Bug 1081555 has been marked as a duplicate of this bug. ***

Comment 2 Brett Meyer 2014-03-31 15:03:29 UTC
The combination of Infinispan & Hibernate Search is not officially supported in EAP/WFK.  There are multiple, known issues.

Regardless, I created https://hibernate.atlassian.net/browse/HSEARCH-1576 to track this, as integration between the 2 is certainly desirable.


Note You need to log in before you can comment on or make changes to this bug.