Я ищу помощь в настройке 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>
Любая помощь в получении этого настроен правильно было бы весьма признателен!
Я думаю, что я знаю, что происходит, но до сих пор не знаю, как решить эту проблему. Hibernate Search, или Lucene, создает файлы с ведущим «-», например «-566834176». Когда файл попадает на S3, он преобразует «-» в «A», то есть «A566834176». Может ли кто-нибудь пролить свет на то, как предотвратить отрицательное имя файла индекса индекса? –
Привет, ни Lucene, ни Hibernate. Создайте такие файлы: Infinispan использует числовые идентификаторы ведра, и это похоже на проблему с интеграцией JClouds. Пожалуйста, зарегистрируйте проблему здесь: https://issues.jboss.org/browse/ISPN – Sanne
@DaveV Мы когда-нибудь смогли решить эту проблему? Если да, то что вам нужно было сделать, чтобы решить эту проблему? –