2013-06-27 5 views
2

Я ищу помощь в настройке Hibernate Поиск с использованием Infinispan, хранения индексов на S3Hibernate Search + Infinispan + S3 - Предотвратить буквенно-цифровые имена файлов

В настоящее время, как представляется, в основном работает, но один из индексные файлы, которые он создает имеет буквенно-цифровое имя, которое приходит обратно, чтобы бросить следующее сообщение об ошибке:

Exception in thread "LuceneIndexesMetadata-CloudCacheStore-3" java.lang.IllegalArgumentException: bucketId: A566834176 (expected: integer) 
    at org.infinispan.loaders.bucket.Bucket.setBucketId(Bucket.java:77) 
    at org.infinispan.loaders.cloud.CloudCacheStore.readFromBlob(CloudCacheStore.java:446) 
    at org.infinispan.loaders.cloud.CloudCacheStore.scanBlobForExpiredEntries(CloudCacheStore.java:291) 
    at org.infinispan.loaders.cloud.CloudCacheStore.purge(CloudCacheStore.java:283) 
    at org.infinispan.loaders.cloud.CloudCacheStore.purgeInternal(CloudCacheStore.java:335) 
    at org.infinispan.loaders.AbstractCacheStore$2.run(AbstractCacheStore.java:111) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
    at java.lang.Thread.run(Thread.java:680) 

в качестве примечания, что позволяет сжатия на индексах вызывает расширение».bz2' , который выдает эту ошибку на каждом индексном файле ,

Я не уверен, где проблема. Должен ли он создавать только индексные файлы с целыми именами? Есть ли где-нибудь элемент конфигурации, который будет использовать другой метод чтения, который позволит буквенно-цифровые имена (и, таким образом, разрешить мне использовать сжатие)?

Возможно, это несоответствие версии. Вот список того, что я использую сейчас:

Hibernate (core, entitymanager, search, search-infinispan): 4.2.0.Final Infinispan (core, lucene-directory, cachestore-cloud): 5.1. 8.Final JClouds (ядро, Blobstore, allblobstore, provider.aws-s3): 1.1.1

Вот некоторые из моих файлов конфигурации:

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="###"> 
     <properties> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
      <property name="hibernate.search.default.directory_provider" value="infinispan"/> 
      <property name="hibernate.search.infinispan.configuration_resourcename" value="infinispan.xml"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

infinispan .xml

<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:infinispan:config:5.1 http://www.infinispan.org/schemas/infinispan-config-5.1.xsd" xmlns="urn:infinispan:config:5.1"> 


<!-- *************************** --> 
<!-- System-wide global settings --> 
<!-- *************************** --> 
<global> 
    <globalJmxStatistics enabled="false" cacheManagerName="HibernateSearch" allowDuplicateDomains="true" /> 

    <transport clusterName="HibernateSearch-Infinispan-cluster" distributedSyncTimeout="30000"> 
     <properties> 
      <property name="configurationFile" value="infinispan-s3.xml"/> 
     </properties> 
    </transport> 

    <shutdown hookBehavior="REGISTER" /> 
</global> 


<!-- *************************** --> 
<!-- Default "template" settings --> 
<!-- *************************** --> 
<default> 
    <locking lockAcquisitionTimeout="30000" writeSkewCheck="false" concurrencyLevel="500" useLockStriping="false" /> 

    <!-- Invocation batching is required for use with the Lucene Directory --> 
    <invocationBatching enabled="true" /> 

    <clustering mode="invalidation"> 
     <!-- Prefer loading all data at startup than later --> 
     <stateTransfer timeout="60000" fetchInMemoryState="false" /> 
     <!-- Network calls are synchronous by default --> 
     <sync replTimeout="30000" /> 
    </clustering> 
    <jmxStatistics enabled="false" /> 
    <eviction maxEntries="-1" strategy="NONE" /> 
    <expiration maxIdle="300000" /> 

<loaders passivation="false" shared="false" preload="true"> 
    <loader class="org.infinispan.loaders.cloud.CloudCacheStore" fetchPersistentState="false" ignoreModifications="false" purgeOnStartup="false"> 
     <properties> 
      <property name="identity" value="${AWS_ACCESS_KEY_ID}"/> 
      <property name="password" value="${AWS_SECRET_KEY}"/> 
      <property name="bucketPrefix" value="${PARAM2}"/> 
      <property name="cloudService" value="aws-s3"/> 
      <property name="compress" value="false"/> 
     </properties> 
     <async 
        enabled="true" 
        flushLockTimeout="15000" 
        threadPoolSize="10" 
     /> 
    </loader> 
</loaders> 

</default> 

<!-- *************************************** --> 
<!-- Cache to store Lucene's file metadata --> 
<!-- *************************************** --> 
<namedCache 
    name="LuceneIndexesMetadata"> 
    <clustering 
     mode="invalidation"> 
     <stateTransfer 
      fetchInMemoryState="false" /> 
     <!--<sync 
      replTimeout="30000" /> --> 
    </clustering> 
</namedCache> 

<!-- **************************** --> 
<!-- Cache to store Lucene data --> 
<!-- **************************** --> 
<namedCache 
    name="LuceneIndexesData"> 
    <clustering 
     mode="invalidation"> 
     <stateTransfer 
      fetchInMemoryState="false" /> 
     <!--<sync 
      replTimeout="30000" /> --> 
    </clustering> 
</namedCache> 

<!-- ***************************** --> 
<!-- Cache to store Lucene locks --> 
<!-- ***************************** --> 
<namedCache 
    name="LuceneIndexesLocking"> 
    <clustering 
     mode="invalidation"> 
     <stateTransfer 
      fetchInMemoryState="false" /> 
     <!--<sync 
      replTimeout="30000" /> --> 
    </clustering> 
</namedCache> 

Любая помощь в получении этого настроен правильно было бы весьма признателен!

+0

Я думаю, что я знаю, что происходит, но до сих пор не знаю, как решить эту проблему. Hibernate Search, или Lucene, создает файлы с ведущим «-», например «-566834176». Когда файл попадает на S3, он преобразует «-» в «A», то есть «A566834176». Может ли кто-нибудь пролить свет на то, как предотвратить отрицательное имя файла индекса индекса? –

+0

Привет, ни Lucene, ни Hibernate. Создайте такие файлы: Infinispan использует числовые идентификаторы ведра, и это похоже на проблему с интеграцией JClouds. Пожалуйста, зарегистрируйте проблему здесь: https://issues.jboss.org/browse/ISPN – Sanne

+0

@DaveV Мы когда-нибудь смогли решить эту проблему? Если да, то что вам нужно было сделать, чтобы решить эту проблему? –

ответ

2

Ни Apache Lucene ни Hibernate Search создавать такие файлы: Infinispan использует числовые ковшеобразные идентификаторы, и в зависимости от значения хэширования этих ведер некоторые из них могут быть в отрицательном пространстве: что, как представляется, проблема с интеграция JClouds.

Пожалуйста, подать вопрос здесь: https://issues.jboss.org/browse/ISPN