Thank you Uwe, this is great! I am rebuilding the cluster using MMapDirectory 
and no enable-preview, as you suggested. Let’s see what happens.

Cheers,

Seb

> On 2 Jan 2023, at 17:51, Uwe Schindler <u...@thetaphi.de> wrote:
> 
> Hi,
> 
> in recent versions it works like that:
> 
> https://www.elastic.co/guide/en/elasticsearch/reference/current/advanced-configuration.html#set-jvm-options
> 
> So in folder jvm.options.d/ add a new file (like "preview.conf") and put 
> "19:--enable-preview" into it. It is basically the same like modifying heap 
> size.
> 
> But in general, you can simply use MMapDirectory, the max-map-count setting 
> is only relevant in *huge* (huge means hundreds of huge indexes per node). In 
> that case Java 19's preview features would be recommended.
> 
> Uwe
> 
> Am 02.01.2023 um 17:41 schrieb S S:
>> Hi Uwe,
>> 
>> Sorry for the late reply but upgrading the docker image to use OpenJDK was 
>> easier said that done.
>> 
>> I am not a Java developer/expert so, sorry for the stupid question but, how 
>> do I specify the --enable-preview flag? ES has got a quite complex way to 
>> start so I cannot specify the flag on the command line. You suggested to use 
>> a jvm.properties file but I cannot find anything useful about it when 
>> google-ing. Where should it be placed? And what should I write in it?
>> 
>> I can see ES recognising OpenJDK 19 while bootstrapping and suggesting to 
>> enable preview, but it does not suggest how, and I cannot find anything on 
>> the ES website.
>> 
>> Many thanks.
>> 
>> Seb
>> 
>>> On 2 Jan 2023, at 11:48, Uwe Schindler <u...@thetaphi.de> wrote:
>>> 
>>> Hi,
>>> 
>>> in general you can still use MMapDirectory. There is no requirement to set 
>>> vm.max_map_count for smaller clusters. The information in Elastics 
>>> documentation is not mandatory and misleading.
>>> 
>>> If you use newest version of Elasticsearch with Java 19 and you use 
>>> `--enable-preview` in you jvm.properties file, you don't even need to 
>>> change that setting even with larger clusters.
>>> 
>>> Uwe
>>> 
>>> Am 02.01.2023 um 11:18 schrieb S S:
>>>> We are experimenting with Elastic Search deployed in Azure Container 
>>>> Instances (Debian + OpenJDK). The ES indexes are stored into an Azure file 
>>>> share mounted via SMB (3.0). The Elastic Search cluster is made up of 4 
>>>> nodes, each one have a separate file share to store the indices.
>>>> 
>>>> This configuration has been influenced by some ACIs limitations, 
>>>> specifically:
>>>> 
>>>> we cannot set the max_map_count value as we do not have access to the 
>>>> underlying host 
>>>> (https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html).
>>>>  Unfortunately, this is required to run an ES cluster, therefore we were 
>>>> forced to use NIOF
>>>> ACI’s storage is ephemera, therefore we had to map volumes to persist the 
>>>> indexes. ACIs only allow volume mappings using Azure File Shares, which 
>>>> only works with NFS or SMB.
>>>> 
>>>> We are experiencing recurring index corruption, specifically a "read past 
>>>> EOF" exception. I asked on the Elastic Search forum but the answer I got 
>>>> was a bit generic and not really helpful other than confirming that, from 
>>>> ES point of view, ES should work on an SMB share as long as it behaves as 
>>>> a local drive. As the underlying exception relates to an issue with a 
>>>> Lucene index, I was wondering if you could help out? Specifically, can 
>>>> Lucene work on SMB? I can only find sparse information on this 
>>>> configuration and, while NFS seems a no-no, for SMB is not that clear. 
>>>> Below is the exception we are getting.
>>>> 
>>>> java.io.IOException: read past EOF: 
>>>> NIOFSIndexInput(path="/bitnami/elasticsearch/data/indices/mS2bUbLtSeG0FSAMuKX7JQ/0/index/_ldsn_1.fnm")
>>>>  buffer: java.nio.HeapByteBuffer[pos=0 lim=1024 cap=1024] chunkLen: 1024 
>>>> end: 2331: 
>>>> NIOFSIndexInput(path="/bitnami/elasticsearch/data/indices/mS2bUbLtSeG0FSAMuKX7JQ/0/index/_ldsn_1.fnm")
>>>>               at 
>>>> org.apache.lucene.store.NIOFSDirectory$NIOFSIndexInput.readInternal(NIOFSDirectory.java:200)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.store.BufferedIndexInput.refill(BufferedIndexInput.java:291)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.store.BufferedIndexInput.readByte(BufferedIndexInput.java:55)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.store.BufferedChecksumIndexInput.readByte(BufferedChecksumIndexInput.java:39)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.codecs.CodecUtil.readBEInt(CodecUtil.java:667) 
>>>> ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.codecs.CodecUtil.checkHeader(CodecUtil.java:184) 
>>>> ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.codecs.CodecUtil.checkIndexHeader(CodecUtil.java:253) 
>>>> ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.codecs.lucene90.Lucene90FieldInfosFormat.read(Lucene90FieldInfosFormat.java:128)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.SegmentReader.initFieldInfos(SegmentReader.java:205)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:156) 
>>>> ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.ReadersAndUpdates.createNewReaderWithLatestLiveDocs(ReadersAndUpdates.java:738)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.ReadersAndUpdates.swapNewReaderWithLatestLiveDocs(ReadersAndUpdates.java:754)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.ReadersAndUpdates.writeFieldUpdates(ReadersAndUpdates.java:678)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.ReaderPool.writeAllDocValuesUpdates(ReaderPool.java:251)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.IndexWriter.writeReaderPool(IndexWriter.java:3743) 
>>>> ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:591) 
>>>> ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.StandardDirectoryReader.doOpenFromWriter(StandardDirectoryReader.java:381)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:355)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:345)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.FilterDirectoryReader.doOpenIfChanged(FilterDirectoryReader.java:112)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:170)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.elasticsearch.index.engine.ElasticsearchReaderManager.refreshIfNeeded(ElasticsearchReaderManager.java:48)
>>>>  ~[elasticsearch-8.4.1.jar:?]
>>>>               at 
>>>> org.elasticsearch.index.engine.ElasticsearchReaderManager.refreshIfNeeded(ElasticsearchReaderManager.java:27)
>>>>  ~[elasticsearch-8.4.1.jar:?]
>>>>               at 
>>>> org.apache.lucene.search.ReferenceManager.doMaybeRefresh(ReferenceManager.java:167)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.apache.lucene.search.ReferenceManager.maybeRefreshBlocking(ReferenceManager.java:240)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>>               at 
>>>> org.elasticsearch.index.engine.InternalEngine$ExternalReaderManager.refreshIfNeeded(InternalEngine.java:355)
>>>>  ~[elasticsearch-8.4.1.jar:?]
>>>>               at 
>>>> org.elasticsearch.index.engine.InternalEngine$ExternalReaderManager.refreshIfNeeded(InternalEngine.java:335)
>>>>  ~[elasticsearch-8.4.1.jar:?]
>>>>               at 
>>>> org.apache.lucene.search.ReferenceManager.doMaybeRefresh(ReferenceManager.java:167)
>>>>  ~[lucene-core-9.3.0.jar:?]
>>>> Many thanks.
>>>> 
>>>> Seb
>>> -- 
>>> Uwe Schindler
>>> Achterdiek 19, D-28357 Bremen
>>> https://www.thetaphi.de
>>> eMail: u...@thetaphi.de
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
>>> For additional commands, e-mail: java-user-h...@lucene.apache.org
>>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
>> For additional commands, e-mail: java-user-h...@lucene.apache.org
>> 
> -- 
> Uwe Schindler
> Achterdiek 19, D-28357 Bremen
> https://www.thetaphi.de
> eMail: u...@thetaphi.de
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-user-h...@lucene.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to