3 Replies Latest reply on Mar 25, 2013 1:54 PM by kjordan2001

    Hibernate Search Directory Exception

    kjordan2001

      I'm trying to set up Infinispan as a Hibernate Search Directory, but I'm getting the exception:

      java.lang.IllegalArgumentException: chunksCache must not be null

              at org.infinispan.lucene.readlocks.DistributedSegmentReadLocker.<init>(DistributedSegmentReadLocker.java:63)

              at org.infinispan.lucene.InfinispanDirectory.makeDefaultSegmentReadLocker(InfinispanDirectory.java:337)

              at org.infinispan.lucene.InfinispanDirectory.<init>(InfinispanDirectory.java:139)

              at org.hibernate.search.infinispan.impl.InfinispanDirectoryProvider.start(InfinispanDirectoryProvider.java:102)

              at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:104)

              at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:227)

       

       

      What exactly am I missing here?  Is there some configuration piece I need?  The odd thing is it passes earlier checks for the chunksCache when it's a regular Cache object.  I've looked through the documentation and I'm not sure I see what I need to fix this error.

        • 1. Re: Hibernate Search Directory Exception
          kjordan2001

          In my Spring configuration for Hibernate Search/JPA I have:

           

          <entry key="hibernate.search.default.directory_provider"

                                 value="infinispan"/>

                          <entry key="hibernate.search.infinispan.configuration_resourcename" value="infinispan.xml"/>

                          <!--<entry key="hibernate.search.default.indexBase" value="/opt/lucene_topurl_/indexes"/>-->

                          <entry key="hibernate.search.default.locking_cachename" value="LuceneIndexesLocking"/>

                          <entry key="hibernate.search.default.data_cachename" value="LuceneIndexesData"/>

                          <entry key="hibernate.search.default.metadata_cachename" value="LuceneIndexesMetadata"/>

                          <entry key="hibernate.search.default.chunk_size" value="1024"/>

           

          The cache names were added.  infinispan.xml looks like:

          <infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                      xsi:schemaLocation="urn:infinispan:config:5.2 http://www.infinispan.org/schemas/infinispan-config-5.2.xsd

                                        urn:infinispan:config:cloud:5.2 http://www.infinispan.org/schemas/infinispan-cachestore-jdbc-cloud-5.2.xsd"

                      xmlns="urn:infinispan:config:5.2"

                      xmlns:cloud="urn:infinispan:config:cloud:5.2">

              <global>

                  <!-- Duplicate domains are allowed so that multiple deployments with default configuration

                      of Hibernate Search applications work - if possible it would be better to use JNDI to share

                      the CacheManager across applications -->

                  <globalJmxStatistics

                          enabled="true"

                          cacheManagerName="HibernateSearch"

                          allowDuplicateDomains="true"/>

           

           

                  <!-- Note that the JGroups transport uses sensible defaults if no configuration property

                      is defined. See the Infinispan wiki for more JGroups settings:

                      http://community.jboss.org/wiki/ClusteredConfigurationQuickStart -->

           

           

                  <!-- Used to register JVM shutdown hooks. hookBehavior: DEFAULT, REGISTER, DONT_REGISTER.

                      Hibernate Search takes care to stop the CacheManager so registering is not needed -->

                  <shutdown

                          hookBehavior="DONT_REGISTER"/>

                  <!-- If the transport is omitted, there is no way to create distributed or clustered

                      caches. There is no added cost to defining a transport but not creating a cache that uses one,

                      since the transport is created and initialized lazily. -->

           

           

                  <!-- Note that the JGroups transport uses sensible defaults if no configuration

                      property is defined. See the JGroupsTransport javadocs for more flags -->

                  <transport clusterName="HibernateSearch-Infinispan-cluster">

                      <properties>

                          <property name="configurationFile" value="jgroups.xml"/>

                      </properties>

                  </transport>

              </global>

              <default>

           

           

                  <locking

                          lockAcquisitionTimeout="20000"

                          writeSkewCheck="false"

                          concurrencyLevel="500"

                          useLockStriping="false"/>

           

           

                  <!-- Invocation batching is required for use with the Lucene Directory -->

                  <invocationBatching

                          enabled="true"/>

           

           

                  <!-- This element specifies that the cache is clustered. modes supported: distribution

                      (d), replication (r) or invalidation (i). Don't use invalidation to store Lucene indexes (as

                      with Hibernate Search DirectoryProvider). Replication is recommended for best performance of

                      Lucene indexes, but make sure you have enough memory to store the index in your heap.

                      Also distribution scales much better than replication on high number of nodes in the cluster. -->

                  <clustering

                          mode="replication">

           

           

                      <!-- Prefer loading all data at startup than later -->

                      <stateTransfer

                              timeout="480000"

                              fetchInMemoryState="true"/>

           

           

                      <!-- Network calls are synchronous by default -->

                      <sync

                              replTimeout="20000"/>

                  </clustering>

           

           

                  <jmxStatistics

                          enabled="true"/>

           

           

                  <eviction

                          maxEntries="-1"

                          strategy="NONE"/>

           

           

                  <expiration

                          maxIdle="-1"/>

           

           

              </default>

              <namedCache

                      name="LuceneIndexesMetadata">

                  <clustering mode="repl">

                      <stateTransfer fetchInMemoryState="true"/>

                      <sync replTimeout="25000"/>

                  </clustering>

                  <invocationBatching

                          enabled="true"/>

                  <eviction strategy="NONE"/>

                  <loaders passivation="false" preload="false" shared="false">

                      <cloud:cloudStore cloudService="s3" identity="${AWS_ACCESS_KEY_ID}" password="${AWS_SECRET_KEY}" bucketPrefix="_s3Bucket_" secure="true"

                                        cloudServiceLocation="DEFAULT"/>

                  </loaders>

              </namedCache>

           

           

              <!-- **************************** -->

              <!--  Cache to store Lucene data  -->

              <!-- **************************** -->

              <namedCache

                      name="LuceneIndexesData">

                  <clustering mode="dist">

                      <stateTransfer fetchInMemoryState="true"/>

                      <sync replTimeout="25000"/>

                  </clustering>

                  <invocationBatching

                          enabled="true"/>

                  <eviction strategy="LRU" maxEntries="200"/>

                  <loaders passivation="false" preload="false" shared="false">

                      <cloud:cloudStore cloudService="s3" identity="${AWS_ACCESS_KEY_ID}" password="${AWS_SECRET_KEY}" bucketPrefix="_s3Bucket_" secure="true"

                                        cloudServiceLocation="DEFAULT"/>

                  </loaders>

              </namedCache>

           

           

              <!-- ***************************** -->

              <!--  Cache to store Lucene locks  -->

              <!-- ***************************** -->

              <namedCache

                      name="LuceneIndexesLocking">

                  <clustering mode="repl">

                      <stateTransfer fetchInMemoryState="true"/>

                      <sync replTimeout="25000"/>

                  </clustering>

                  <invocationBatching

                          enabled="true"/>

                  <eviction strategy="NONE"/>

              </namedCache>

          </infinispan>

           

          jgroups.xml looks like:

          <?xml version="1.0" encoding="UTF-8"?>

          <config>

                    <TCP bind_port="7800"/>

                    <S3_PING secret_access_key="${AWS_ACCESS_KEY_ID}" access_key="${AWS_SECRET_KEY}" location="_s3Bucket_"/>

                    <MERGE2 max_interval="30000" min_interval="10000"/>

                    <FD_SOCK/>

                    <FD timeout="10000" max_tries="5"/>

                    <VERIFY_SUSPECT timeout="1500"/>

                    <pbcast.NAKACK use_mcast_xmit="false" gc_lag="0" retransmit_timeout="300,600,1200,2400,4800" discard_delivered_msgs="true"/>

                    <UNICAST timeout="300,600,1200,2400,3600"/>

                    <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" max_bytes="400000"/>

                    <VIEW_SYNC avg_send_interval="60000"/>

                    <pbcast.GMS print_local_addr="true" join_timeout="60000" view_bundling="true"/>

                    <FC max_credits="20000000" min_threshold="0.10"/>

                    <FRAG2 frag_size="60000"/>

                    <pbcast.STATE_TRANSFER/>

                    <pbcast.FLUSH timeout="0"/>

          </config>

           

           

          and now I get:

          java.lang.IllegalArgumentException: cache must not be null

                  at org.infinispan.lucene.InfinispanDirectory.checkNotNull(InfinispanDirectory.java:342)

                  at org.infinispan.lucene.InfinispanDirectory.makeDefaultLockFactory(InfinispanDirectory.java:329)

                  at org.infinispan.lucene.InfinispanDirectory.<init>(InfinispanDirectory.java:139)

                  at org.hibernate.search.infinispan.impl.InfinispanDirectoryProvider.start(InfinispanDirectoryProvider.java:102)

                  at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:104)

                  at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:227)

           

           

          _s3Bucket_ is replaced during a maven build with the actual s3 bucket.  My access key and secret key are defined as system properties.  What am I missing on this? 

           

          If I leave the custom jgroups.xml out, I end up getting:

          Caused by: java.lang.NullPointerException

                  at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:170)

                  at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeededAndUpdateStats(CacheLoaderInterceptor.java:231)

                  at org.infinispan.interceptors.CacheLoaderInterceptor.visitGetKeyValueCommand(CacheLoaderInterceptor.java:112)

                  at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)

                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)

                  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:118)

                  at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)

                  at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:104)

                  at org.infinispan.interceptors.locking.AbstractTxLockingInterceptor.visitGetKeyValueCommand(AbstractTxLockingInterceptor.java:90)

                  at org.infinispan.interceptors.locking.OptimisticLockingInterceptor.visitGetKeyValueCommand(OptimisticLockingInterceptor.java:151)

                  at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)

                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)

                  at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)

                  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:118)

                  at org.infinispan.interceptors.TxInterceptor.enlistReadAndInvokeNext(TxInterceptor.java:231)

                  at org.infinispan.interceptors.TxInterceptor.visitGetKeyValueCommand(TxInterceptor.java:226)

                  at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)

                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)

                  at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)

                  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:118)

                  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:118)

                  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:118)

                  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.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)

                  at org.infinispan.interceptors.BatchingInterceptor.handleDefault(BatchingInterceptor.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.lucene.FileListOperations.getFileList(FileListOperations.java:63)

                  at org.infinispan.lucene.InfinispanDirectory.list(InfinispanDirectory.java:160)

                  at org.infinispan.lucene.InfinispanDirectory.listAll(InfinispanDirectory.java:318)

                  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:104)

                  at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:227)

           

           

          Is there something wrong with how I'm using s3 in my configuration?  Are my system properties not going to be picked up?

          • 2. Re: Hibernate Search Directory Exception
            kjordan2001

            I'm still getting a NullPointerException and I can't find any way around it.  It works when I have a fileStore but not a cloudStore.  I've tried doing it as a <store> declaration too instead of a <cloudStore> but same result:

             

            <namedCache name="LuceneIndexesData">

                    <clustering mode="dist">

                        <stateTransfer fetchInMemoryState="true"/>

                        <sync replTimeout="25000"/>

                    </clustering>

                    <invocationBatching

                            enabled="true"/>

                    <eviction strategy="LRU" maxEntries="100"/>

                    <loaders passivation="false" preload="false" shared="false">

                        <!--<fileStore location="/tmp"/>-->

                        <store class="org.infinispan.loaders.cloud.CloudCacheStore" fetchPersistentState="true" ignoreModifications="false" purgeOnStartup="false">

                            <properties>

                                <property name="cloudService" value="s3"/>

                                <property name="identity" value="${AWS_ACCESS_KEY_ID}"/>

                                <property name="password" value="${AWS_SECRET_KEY}"/>

                                <property name="bucketPrefix" value="_s3Bucket_"/>

                                <property name="secure" value="true"/>

                                <property name="cloudServiceLocation" value="DEFAULT"/>

                            </properties>

                        </store>

                        <!--<cloud:cloudStore cloudService="s3" identity="${AWS_ACCESS_KEY_ID}" password="${AWS_SECRET_KEY}" bucketPrefix="_s3Bucket_"

                         secure="true"

                                          cloudServiceLocation="DEFAULT"/>-->

                    </loaders>

                </namedCache>

             

            I've set up logging for jclouds but I'm not seeing anything from it.

             

            I know Infinispan is parsing it though since I had that as <loader> before and it said to replace it as <store>.  I've also made sure that the bucket for it exists (bucketPrefix-LuceneIndexesData).  I also get the same result with a stringKeyedJdbcStore configured as:

            <stringKeyedJdbcStore xmlns="urn:infinispan:config:jdbc:5.2" fetchPersistentState="true" ignoreModifications="false" purgeOnStartup="false">

                            <connectionPool connectionUrl="jdbc:mysql://${RDS_HOSTNAME}:${RDS_PORT}/${RDS_DB_NAME}" username="${RDS_USERNAME}" password="${RDS_PASSWORD}"

                                            driverClass="com.mysql.jdbc.Driver"/>

                            <stringKeyedTable dropOnExit="false" createOnStart="true" prefix="Infinispan">

                                <idColumn name="ID_COLUMN" type="VARCHAR(255)"/>

                                <dataColumn name="DATA_COLUMN" type="LONGBLOB"/>

                                <timestampColumn name="TIMESTAMP_COLUMN" type="BIGINT"/>

                            </stringKeyedTable>

                        </stringKeyedJdbcStore>

             

            I haven't tried that yet with the table created, but as far as I can tell createOnStart is supposed to take care of that (although it didn't appear to, but it may not have gotten to that point).

             

             

            Completed Infinispan logging is:

             

            2013-03-25 01:27:41,143 [org.infinispan.util.ModuleProperties] DEBUG: Loading lifecycle SPI class: org.infinispan.lucene.LifecycleCallbacks@2bce15e4

            2013-03-25 01:27:41,263 [org.infinispan.util.ModuleProperties] DEBUG: Loading module command extension SPI class: org.hibernate.cache.infinispan.util.CacheCommandExtensions@67dcbaf3

            2013-03-25 01:27:41,278 [org.infinispan.marshall.jboss.AbstractJBossMarshaller] DEBUG: Using JBoss Marshalling

            2013-03-25 01:27:41,325 [org.infinispan.manager.DefaultCacheManager] DEBUG: Started cache manager HibernateSearch-Infinispan-cluster on null

            2013-03-25 01:27:41,985 [org.infinispan.util.ModuleProperties] DEBUG: Loading lifecycle SPI class: org.infinispan.lucene.LifecycleCallbacks@1142bdd

            2013-03-25 01:27:42,017 [org.infinispan.util.ModuleProperties] DEBUG: Loading module command extension SPI class: org.hibernate.cache.infinispan.util.CacheCommandExtensions@63416c5

            2013-03-25 01:27:42,017 [org.infinispan.marshall.jboss.AbstractJBossMarshaller] DEBUG: Using JBoss Marshalling

            2013-03-25 01:27:42,018 [org.infinispan.manager.DefaultCacheManager] DEBUG: Started cache manager HibernateSearch-Infinispan-cluster on null

            2013-03-25 01:27:42,019 [org.infinispan.jmx.JmxUtil] DEBUG: Object name org.infinispan2:type=CacheManager,name="HibernateSearch",component=CacheManager already registered

            2013-03-25 01:27:42,019 [org.infinispan.manager.DefaultCacheManager] DEBUG: Started cache manager HibernateSearch-Infinispan-cluster on null

            2013-03-25 01:27:42,283 [org.infinispan.remoting.transport.jgroups.JGroupsTransport] INFO: ISPN000078: Starting JGroups Channel

            2013-03-25 01:27:42,284 [org.infinispan.remoting.transport.jgroups.JGroupsTransport] INFO: ISPN000088: Unable to use any JGroups configuration mechanisms provided in properties {}. Using default JGroups configuration!

            2013-03-25 01:27:45,748 [org.infinispan.remoting.transport.jgroups.JGroupsTransport] DEBUG: New view accepted: [odyssey-154|0] [odyssey-154]

            2013-03-25 01:27:45,748 [org.infinispan.remoting.transport.jgroups.JGroupsTransport] INFO: ISPN000094: Received new cluster view: [odyssey-154|0] [odyssey-154]

            2013-03-25 01:27:45,789 [org.infinispan.remoting.transport.jgroups.JGroupsTransport] INFO: ISPN000079: Cache local address is odyssey-154, physical addresses are [fe80:0:0:0:4a5b:39ff:fe08:e672%2:47792]

            2013-03-25 01:27:45,789 [org.infinispan.remoting.transport.jgroups.JGroupsTransport] DEBUG: Waiting on view being accepted

            2013-03-25 01:27:45,793 [org.infinispan.factories.GlobalComponentRegistry] INFO: ISPN000128: Infinispan version: Infinispan 'Delirium' 5.2.4.Final

            2013-03-25 01:27:45,880 [org.infinispan.factories.TransactionManagerFactory] INFO: ISPN000161: Using a batchMode transaction manager

            2013-03-25 01:27:45,880 [org.infinispan.factories.TransactionManagerFactory] INFO: ISPN000161: Using a batchMode transaction manager

            2013-03-25 01:27:45,888 [org.infinispan.factories.TransactionManagerFactory] INFO: ISPN000161: Using a batchMode transaction manager

            2013-03-25 01:27:46,104 [org.infinispan.marshall.jboss.AbstractJBossMarshaller] DEBUG: Using JBoss Marshalling

            2013-03-25 01:27:46,104 [org.infinispan.marshall.jboss.AbstractJBossMarshaller] DEBUG: Using JBoss Marshalling

            2013-03-25 01:27:46,104 [org.infinispan.marshall.jboss.AbstractJBossMarshaller] DEBUG: Using JBoss Marshalling

            2013-03-25 01:27:46,261 [org.infinispan.interceptors.InvocationContextInterceptor] ERROR: ISPN000136: Execution error

            java.lang.NullPointerException

                    at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:170)

                    at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeededAndUpdateStats(CacheLoaderInterceptor.java:231)

                    at org.infinispan.interceptors.CacheLoaderInterceptor.visitGetKeyValueCommand(CacheLoaderInterceptor.java:112)

                    at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)

                    at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)

                    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:118)

                    at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)

                    at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:104)

                    at org.infinispan.interceptors.locking.AbstractTxLockingInterceptor.visitGetKeyValueCommand(AbstractTxLockingInterceptor.java:90)

                    at org.infinispan.interceptors.locking.OptimisticLockingInterceptor.visitGetKeyValueCommand(OptimisticLockingInterceptor.java:151)

                    at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)

                    at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)

                    at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)

                    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:118)

                    at org.infinispan.interceptors.TxInterceptor.enlistReadAndInvokeNext(TxInterceptor.java:231)

                    at org.infinispan.interceptors.TxInterceptor.visitGetKeyValueCommand(TxInterceptor.java:226)

                    at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:58)

                    at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)

                    at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)

                    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:118)

                    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:118)

                    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:118)

                    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.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)

                    at org.infinispan.interceptors.BatchingInterceptor.handleDefault(BatchingInterceptor.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.lucene.FileListOperations.getFileList(FileListOperations.java:63)

                    at org.infinispan.lucene.InfinispanDirectory.list(InfinispanDirectory.java:160)

                    at org.infinispan.lucene.InfinispanDirectory.listAll(InfinispanDirectory.java:318)

                    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:104)

                    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:227)

                    at org.hibernate.search.indexes.impl.IndexManagerHolder.buildEntityIndexBinding(IndexManagerHolder.java:102)

                    at org.hibernate.search.spi.SearchFactoryBuilder.initDocumentBuilders(SearchFactoryBuilder.java:414)

                    at org.hibernate.search.spi.SearchFactoryBuilder.buildNewSearchFactory(SearchFactoryBuilder.java:222)

                    at org.hibernate.search.spi.SearchFactoryBuilder.buildSearchFactory(SearchFactoryBuilder.java:146)

                    at org.hibernate.search.event.impl.FullTextIndexEventListener.initialize(FullTextIndexEventListener.java:130)

            • 3. Re: Hibernate Search Directory Exception
              kjordan2001

              Okay...this is just getting odd and stupid...I explicitly set a JdbcStringBasedCacheStore using:

               

              <loader class="org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore"

                                                                fetchPersistentState="false" ignoreModifications="false"

                                                                purgeOnStartup="false">

                                                      <properties>

                                                                <property name="stringsTableNamePrefix" value="ISPN_LuceneIndexesMetadata"/>

                                                                <property name="key2StringMapperClass" value="org.infinispan.lucene.LuceneKey2StringMapper"/>

                                                                <property name="idColumnName" value="ID_COLUMN"/>

                                                                <property name="dataColumnName" value="DATA_COLUMN"/>

                                                                <property name="timestampColumnName" value="TIMESTAMP_COLUMN"/>

                                                                <property name="timestampColumnType" value="BIGINT"/>

                                                                <property name="connectionFactoryClass" value="org.infinispan.loaders.jdbc.connectionfactory.PooledConnectionFactory"/>

                                                                <property name="connectionUrl" value="jdbc:mysql://${RDS_HOSTNAME}:${RDS_PORT}/${RDS_DB_NAME}"/>

                                                                <property name="userName" value="${RDS_USERNAME}"/>

                                                                <property name="password" value="${RDS_PASSWORD}"/>

                                                                <property name="driverClass" value="com.mysql.jdbc.Driver"/>

                                                                <property name="idColumnType" value="VARCHAR(255)"/>

                                                                <property name="dataColumnType" value="LONGBLOB"/>

                                                                <property name="dropTableOnExit" value="false"/>

                                                                <property name="createTableOnStart" value="true"/>

                                                      </properties>

                                                      <async enabled="true" flushLockTimeout="15000" threadPoolSize="10"/>

                                            </loader>

               

               

              To me that looks pretty much exactly the same as far as settings (also tried adding the <async> tag to the stringKeyedJdbcStore in my post above, but same result as before).

               

              Also finally got JDBC_Ping to work for JGroups although I'm not sure how or what made it finally work.  I don't think there was any major changes between the files.  I never saw any errors stating what was wrong.  This makes it really hard to track down where things broke.  The configuration stage of Infinispan definitely needs to be hardened a little more so we can get feedback on what's wrong.