[jira] [Updated] (OAK-9091) oak-search-elastic: review query code

2020-08-28 Thread Fabrizio Fortino (Jira)


 [ 
https://issues.apache.org/jira/browse/OAK-9091?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fabrizio Fortino updated OAK-9091:
--
Fix Version/s: 1.32.0

> oak-search-elastic: review query code
> -
>
> Key: OAK-9091
> URL: https://issues.apache.org/jira/browse/OAK-9091
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: elastic-search, indexing
>Reporter: Fabrizio Fortino
>Assignee: Fabrizio Fortino
>Priority: Major
> Fix For: 1.32.0
>
>
> The code to execute queries in the elastic module needs to be improved.
> It has been inherited from the first prototype but has never been 
> reviewed/refactored.
> Here is what needs to be done:
>  * ElasticsearchRowIterator [0] is the central point. We need to break it up 
> and separate the query building phase from the interpretation of the response
>  * Centralize how we resolve property names. This affects also mapping and 
> indexing phases
>  * We need to review how the queries are composed to increase performance. As 
> a rule of thumb, we should always create a BoolQuery and leverage as much as 
> possible the use of filters over matching queries. This allows us to use ES 
> caching efficiently
>  * Increase test coverage. Most of the testing in this area requires ES 
> integration. We should add more unit tests checking that input query plans 
> generate the expected ES requests.
> [0] 
> [https://github.com/oak-indexing/jackrabbit-oak/blob/8cc86c4d142004bf2550cf2ac66400b54093209d/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/query/ElasticsearchResultRowIterator.java]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (OAK-9111) Default Analyzer for remote index / elastic search

2020-08-28 Thread Fabrizio Fortino (Jira)


 [ 
https://issues.apache.org/jira/browse/OAK-9111?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fabrizio Fortino updated OAK-9111:
--
Fix Version/s: 1.32.0

> Default Analyzer for remote index / elastic search
> --
>
> Key: OAK-9111
> URL: https://issues.apache.org/jira/browse/OAK-9111
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: indexing, search, search-elastic
>Reporter: Fabrizio Fortino
>Assignee: Fabrizio Fortino
>Priority: Major
> Fix For: 1.32.0
>
>
> Need to find out what needs to be done / if this is possible / how to do it / 
> what are our options.
> The current default OakAnalyzer uses the following configuration:
> {noformat}
> TokenStreamComponents(
>   WordDelimiterFilter(
> LowerCaseFilter(
>   StandardTokenizer(
>     Reader
>   )
> ),
> GENERATE_WORD_PARTS 
> | STEM_ENGLISH_POSSESSIVE 
> | (indexOriginalTerm ? PRESERVE_ORIGINAL : 0) 
> | GENERATE_NUMBER_PARTS
>   )
> ){noformat}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (OAK-9109) Upgrade to Elasticsearch 7.7.1

2020-08-28 Thread Fabrizio Fortino (Jira)


 [ 
https://issues.apache.org/jira/browse/OAK-9109?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fabrizio Fortino updated OAK-9109:
--
Fix Version/s: 1.32.0

> Upgrade to Elasticsearch 7.7.1
> --
>
> Key: OAK-9109
> URL: https://issues.apache.org/jira/browse/OAK-9109
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: elastic-search, indexing, oak-search
>Reporter: Fabrizio Fortino
>Assignee: Fabrizio Fortino
>Priority: Major
> Fix For: 1.32.0
>
>
>  
> Release Notes
> [https://www.elastic.co/guide/en/elasticsearch/reference/7.7/release-notes-7.7.1.html|https://www.elastic.co/guide/en/elasticsearch/reference/7.7/release-notes-7.7.0.html]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (OAK-9119) oak-search-elastic: support order by clause

2020-08-28 Thread Fabrizio Fortino (Jira)


 [ 
https://issues.apache.org/jira/browse/OAK-9119?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fabrizio Fortino updated OAK-9119:
--
Fix Version/s: 1.32.0

> oak-search-elastic: support order by clause
> ---
>
> Key: OAK-9119
> URL: https://issues.apache.org/jira/browse/OAK-9119
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: elastic-search, indexing, search
>Reporter: Fabrizio Fortino
>Assignee: Fabrizio Fortino
>Priority: Major
> Fix For: 1.32.0
>
>
> Support `order by` clause with the same lucene behaviour 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (OAK-9123) Error: Document contains at least one immense term

2020-08-28 Thread Fabrizio Fortino (Jira)


 [ 
https://issues.apache.org/jira/browse/OAK-9123?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fabrizio Fortino updated OAK-9123:
--
Fix Version/s: 1.32.0

> Error: Document contains at least one immense term
> --
>
> Key: OAK-9123
> URL: https://issues.apache.org/jira/browse/OAK-9123
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: elastic-search, indexing, search
>Reporter: Fabrizio Fortino
>Assignee: Fabrizio Fortino
>Priority: Major
> Fix For: 1.32.0
>
>
> {code:java}
> 11:35:09.400 [I/O dispatcher 1] ERROR o.a.j.o.p.i.e.i.ElasticIndexWriter - 
> Bulk item with id /wikipedia/76/84/National Palace (Mexico) failed
> org.elasticsearch.ElasticsearchException: Elasticsearch exception 
> [type=illegal_argument_exception, reason=Document contains at least one 
> immense term in field="text.keyword" (whose UTF8 encoding is longer than the 
> max length 32766), all of which were skipped. Please correct the analyzer to 
> not produce such terms. The prefix of the first immense term is: '[123, 123, 
> 73, 110, 102, 111, 98, 111, 120, 32, 104, 105, 115, 116, 111, 114, 105, 99, 
> 32, 98, 117, 105, 108, 100, 105, 110, 103, 10, 124, 110]...', original 
> message: bytes can be at most 32766 in length; got 33409]
> at 
> org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:496)
> at 
> org.elasticsearch.ElasticsearchException.fromXContent(ElasticsearchException.java:407)
> at 
> org.elasticsearch.action.bulk.BulkItemResponse.fromXContent(BulkItemResponse.java:138)
> at 
> org.elasticsearch.action.bulk.BulkResponse.fromXContent(BulkResponse.java:196)
> at 
> org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:1888)
> at 
> org.elasticsearch.client.RestHighLevelClient.lambda$performRequestAsyncAndParseEntity$10(RestHighLevelClient.java:1676)
> at 
> org.elasticsearch.client.RestHighLevelClient$1.onSuccess(RestHighLevelClient.java:1758)
> at 
> org.elasticsearch.client.RestClient$FailureTrackingResponseListener.onSuccess(RestClient.java:590)
> at org.elasticsearch.client.RestClient$1.completed(RestClient.java:333)
> at org.elasticsearch.client.RestClient$1.completed(RestClient.java:327)
> at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:122)
> at 
> org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:181)
> at 
> org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:448)
> at 
> org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:338)
> at 
> org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265)
> at 
> org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81)
> at 
> org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39)
> at 
> org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114)
> at 
> org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
> at 
> org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
> at 
> org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
> at 
> org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
> at 
> org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
> at 
> org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: org.elasticsearch.ElasticsearchException: Elasticsearch exception 
> [type=max_bytes_length_exceeded_exception, reason=bytes can be at most 32766 
> in length; got 33409]
> at 
> org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:496)
> at 
> org.elasticsearch.ElasticsearchException.fromXContent(ElasticsearchException.java:407)
> at 
> org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:437)
> ... 24 common frames omitted{code}
> This happens with huge keyword fields since Lucene doesn't allow terms with 
> more than 32k bytes.
> See 
> [https://discuss.elastic.co/t/error-document-contains-at-least-one-immense-term-in-field/66486]
> We have decided to always create keyword fields to remove the need to specify 
> properties like ordered or facet. In this way every field can be sorted or 
> used as facet.
> In this specific case the keyword field won't be needed at all but it would 
> be hard to decide when include it or not. To solve this we are going to use 
> `ignore_above=256` so huge keyword fields will be 

[jira] [Updated] (OAK-9120) oak-search-elastic: integrate spellcheck with async iterator

2020-08-28 Thread Fabrizio Fortino (Jira)


 [ 
https://issues.apache.org/jira/browse/OAK-9120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fabrizio Fortino updated OAK-9120:
--
Fix Version/s: 1.32.0

> oak-search-elastic: integrate spellcheck with async iterator
> 
>
> Key: OAK-9120
> URL: https://issues.apache.org/jira/browse/OAK-9120
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: indexing, search, search-elastic
>Reporter: Fabrizio Fortino
>Assignee: Fabrizio Fortino
>Priority: Major
> Fix For: 1.32.0
>
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Assigned] (OAK-9185) AbstractAccessControlManager: improve refresh strategy of PermissionProvider

2020-08-28 Thread Angela Schreiber (Jira)


 [ 
https://issues.apache.org/jira/browse/OAK-9185?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Angela Schreiber reassigned OAK-9185:
-

Assignee: Angela Schreiber

> AbstractAccessControlManager: improve refresh strategy of PermissionProvider
> 
>
> Key: OAK-9185
> URL: https://issues.apache.org/jira/browse/OAK-9185
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, jcr, security
>Reporter: Angela Schreiber
>Assignee: Angela Schreiber
>Priority: Major
>  Labels: performance
>
> since {{AbstractAccessControlManager}} does not have access to the 
> {{RefreshStrategy}} present in _oak-jcr_, it currently eagerly refresh the 
> {{PermissionProvider}} used internally. [~asanso] reported that this may lead 
> to performance issues, when item read operations are combined with frequent 
> calls to {{AccessControlManager.hasPrivileges}} or 
> {{AccessControlManager.getPrivileges}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (OAK-9189) Benchmark Results - Status Quo

2020-08-28 Thread Angela Schreiber (Jira)
Angela Schreiber created OAK-9189:
-

 Summary: Benchmark Results - Status Quo
 Key: OAK-9189
 URL: https://issues.apache.org/jira/browse/OAK-9189
 Project: Jackrabbit Oak
  Issue Type: Technical task
Reporter: Angela Schreiber






--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Assigned] (OAK-9186) Create Benchmark(s)

2020-08-28 Thread Angela Schreiber (Jira)


 [ 
https://issues.apache.org/jira/browse/OAK-9186?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Angela Schreiber reassigned OAK-9186:
-

Assignee: Angela Schreiber

> Create Benchmark(s)
> ---
>
> Key: OAK-9186
> URL: https://issues.apache.org/jira/browse/OAK-9186
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: benchmarks
>Reporter: Angela Schreiber
>Assignee: Angela Schreiber
>Priority: Major
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (OAK-9184) Very slow, potential endless loop in LucenePropertyIndex.loadDocs()

2020-08-28 Thread Thomas Mueller (Jira)


 [ 
https://issues.apache.org/jira/browse/OAK-9184?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thomas Mueller updated OAK-9184:

Fix Version/s: 1.34.0

> Very slow, potential endless loop in LucenePropertyIndex.loadDocs()
> ---
>
> Key: OAK-9184
> URL: https://issues.apache.org/jira/browse/OAK-9184
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: lucene
>Affects Versions: 1.22.4, 1.32.0, 1.8.23
>Reporter: Thomas Mueller
>Assignee: Thomas Mueller
>Priority: Major
> Fix For: 1.34.0
>
>
> We found one case of a very slow, possibly endless loop in this method. 
> {noformat}
> java.lang.Thread.State: RUNNABLE at 
> org.apache.lucene.search.TopScoreDocCollector$InOrderPagingScoreDocCollector.collect(TopScoreDocCollector.java:85)
>  at org.apache.lucene.search.Scorer.score(Scorer.java:65) at 
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:621) at 
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:491) at 
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:448) at 
> org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:243) at 
> org.apache.jackrabbit.oak.plugins.index.lucene.LucenePropertyIndex$1.loadDocs(LucenePropertyIndex.java:434)
>  at 
> org.apache.jackrabbit.oak.plugins.index.lucene.LucenePropertyIndex$1.computeNext(LucenePropertyIndex.java:353)
> {noformat}
> Background: Many threads are waiting to lock here:
> {noformat}
>   - waiting to lock <0x7fbd804a9448> (a 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.acquireIndexNode(IndexTracker.java:202)
> public IndexNode acquireIndexNode(String path) {
> IndexNodeManager index = indices.get(path);
> IndexNode indexNode = index != null ? index.acquire() : null;
> if (indexNode != null) {
> return indexNode;
> } else {
> return findIndexNode(path); <<= synchronized method
> }
> }
> {noformat}
> And the thread that is holding that (synchronized) lock on IndexTracker is 
> also waiting to get a write lock here:
> {noformat}
> "oak-lucene-992" #21559 daemon prio=1 os_prio=0 tid=0x7ed0280ad000 
> nid=0x1be8 waiting on condition [0x7fb96c352000]
>java.lang.Thread.State: WAITING (parking)
>   at sun.misc.Unsafe.park(Native Method)
>   - parking to wait for  <0x7fbedad77210> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
>   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
>   at 
> java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:943)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNodeManager.close(IndexNodeManager.java:174)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.close(IndexTracker.java:104)
>   - locked <0x7fbd804a9448> (a 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.update(IndexTracker.java:114)
>   - locked <0x7fbd804a9448> (a 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker)
>   void close() throws IOException {
> lock.writeLock().lock(); <<== waiting here
> try {
> checkState(!closed);
> closed = true;
> } finally {
> lock.writeLock().unlock();
> }
> {noformat}
> It looks like a read lock is not released. The places where a read lock is 
> acquired:
> {noformat}
> IndexNode acquire() {
> lock.readLock().lock();
>   (released if the method returns null or throws an exception)
> private void release() {
> lock.readLock().unlock();
> }
> {noformat}
> acquire() is called in acquireIndexNode:
> {noformat}
> public IndexNode acquireIndexNode(String path) {
> IndexNodeManager index = indices.get(path);
> IndexNode indexNode = index != null ? index.acquire() : null; <<== 
> here
> if (indexNode != null) {
> return indexNode;
> } else {
> return findIndexNode(path);
> }
> }
> private synchronized IndexNode findIndexNode(String path) {
> // Retry the lookup from acquireIndexNode now that we're
> // synchronized. The acquire() call is guaranteed to 

[jira] [Commented] (OAK-9184) Very slow, potential endless loop in LucenePropertyIndex.loadDocs()

2020-08-28 Thread Thomas Mueller (Jira)


[ 
https://issues.apache.org/jira/browse/OAK-9184?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17186321#comment-17186321
 ] 

Thomas Mueller commented on OAK-9184:
-

http://svn.apache.org/r1881271 (trunk)

Now need to backport to Oak 1.8

> Very slow, potential endless loop in LucenePropertyIndex.loadDocs()
> ---
>
> Key: OAK-9184
> URL: https://issues.apache.org/jira/browse/OAK-9184
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: lucene
>Affects Versions: 1.22.4, 1.32.0, 1.8.23
>Reporter: Thomas Mueller
>Assignee: Thomas Mueller
>Priority: Major
>
> We found one case of a very slow, possibly endless loop in this method. 
> {noformat}
> java.lang.Thread.State: RUNNABLE at 
> org.apache.lucene.search.TopScoreDocCollector$InOrderPagingScoreDocCollector.collect(TopScoreDocCollector.java:85)
>  at org.apache.lucene.search.Scorer.score(Scorer.java:65) at 
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:621) at 
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:491) at 
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:448) at 
> org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:243) at 
> org.apache.jackrabbit.oak.plugins.index.lucene.LucenePropertyIndex$1.loadDocs(LucenePropertyIndex.java:434)
>  at 
> org.apache.jackrabbit.oak.plugins.index.lucene.LucenePropertyIndex$1.computeNext(LucenePropertyIndex.java:353)
> {noformat}
> Background: Many threads are waiting to lock here:
> {noformat}
>   - waiting to lock <0x7fbd804a9448> (a 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.acquireIndexNode(IndexTracker.java:202)
> public IndexNode acquireIndexNode(String path) {
> IndexNodeManager index = indices.get(path);
> IndexNode indexNode = index != null ? index.acquire() : null;
> if (indexNode != null) {
> return indexNode;
> } else {
> return findIndexNode(path); <<= synchronized method
> }
> }
> {noformat}
> And the thread that is holding that (synchronized) lock on IndexTracker is 
> also waiting to get a write lock here:
> {noformat}
> "oak-lucene-992" #21559 daemon prio=1 os_prio=0 tid=0x7ed0280ad000 
> nid=0x1be8 waiting on condition [0x7fb96c352000]
>java.lang.Thread.State: WAITING (parking)
>   at sun.misc.Unsafe.park(Native Method)
>   - parking to wait for  <0x7fbedad77210> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
>   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
>   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
>   at 
> java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:943)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNodeManager.close(IndexNodeManager.java:174)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.close(IndexTracker.java:104)
>   - locked <0x7fbd804a9448> (a 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.update(IndexTracker.java:114)
>   - locked <0x7fbd804a9448> (a 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker)
>   void close() throws IOException {
> lock.writeLock().lock(); <<== waiting here
> try {
> checkState(!closed);
> closed = true;
> } finally {
> lock.writeLock().unlock();
> }
> {noformat}
> It looks like a read lock is not released. The places where a read lock is 
> acquired:
> {noformat}
> IndexNode acquire() {
> lock.readLock().lock();
>   (released if the method returns null or throws an exception)
> private void release() {
> lock.readLock().unlock();
> }
> {noformat}
> acquire() is called in acquireIndexNode:
> {noformat}
> public IndexNode acquireIndexNode(String path) {
> IndexNodeManager index = indices.get(path);
> IndexNode indexNode = index != null ? index.acquire() : null; <<== 
> here
> if (indexNode != null) {
> return indexNode;
> } else {
> return findIndexNode(path);
> }
> }
> private synchronized IndexNode findIndexNode(String path) {
> // Retry the lookup from acquireIndexNode now that we're
> 

[jira] [Resolved] (OAK-9173) Oak-run indexing fails with "This map is closed"

2020-08-28 Thread Thomas Mueller (Jira)


 [ 
https://issues.apache.org/jira/browse/OAK-9173?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thomas Mueller resolved OAK-9173.
-
Resolution: Fixed

> Oak-run indexing fails with "This map is closed"
> 
>
> Key: OAK-9173
> URL: https://issues.apache.org/jira/browse/OAK-9173
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: indexing, oak-run
>Reporter: Thomas Mueller
>Assignee: Thomas Mueller
>Priority: Major
> Fix For: 1.34.0
>
>
> Near the very end of the indexing, the log file contains the following error 
> message
> {noformat}
> 06:21:13.704 [main] INFO  o.a.j.oak.plugins.index.IndexUpdate - Reindexing 
> Traversed #1337 /content/... [9179.83 nodes/s, 33047386.33 nodes/hr] 
> (Elapsed 19.05 min, Expected 0.000 ns, Completed 99.95%)
> 06:21:14.524 [main] INFO  o.a.j.o.i.i.d.f.l.PersistedLinkedList - Entries: 1 
> map size: 1 file size: 9838592 bytes
> 06:21:17.463 [main] INFO  o.a.j.o.i.i.d.f.l.PersistedLinkedList - Cache hits 
> 467781832 misses 836251
> 06:21:17.463 [main] INFO  o.a.j.o.i.i.d.f.l.PersistedLinkedList - Cache hits 
> 467781980 misses 836251
> 06:21:24.400 [main] ERROR com.adobe.granite.indexing.tool.Main - Can't 
> perform operation
> java.lang.IllegalStateException: This map is closed [1.4.194/4]
>   at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765)
>   at org.h2.mvstore.MVMap.beforeWrite(MVMap.java:1044)
>   at org.h2.mvstore.MVMap.remove(MVMap.java:542)
>   at 
> org.apache.jackrabbit.oak.index.indexer.document.flatfile.linkedList.PersistedLinkedList.remove(PersistedLinkedList.java:140)
>   at 
> org.apache.jackrabbit.oak.index.indexer.document.flatfile.FlatFileStoreIterator.computeNextEntry(FlatFileStoreIterator.java:102)
>   at 
> org.apache.jackrabbit.oak.index.indexer.document.flatfile.FlatFileStoreIterator.computeNext(FlatFileStoreIterator.java:85)
>   at 
> org.apache.jackrabbit.oak.index.indexer.document.flatfile.FlatFileStoreIterator.computeNext(FlatFileStoreIterator.java:39)
>   at 
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
>   at 
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
>   at 
> org.apache.jackrabbit.oak.index.indexer.document.DocumentStoreIndexer.reindex(DocumentStoreIndexer.java:123)
> {noformat}
> The root cause seems to be:
>  * The "main" iterator reaches the end, so that the map, and the file, is 
> closed.
>  * But then, a "clone of the iterator" (not sure if that's the right word) is 
> still open and tries to continue.
>  * This fails because the map is marked closed.
> We need to keep the map + file open for a longer time.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (OAK-9173) Oak-run indexing fails with "This map is closed"

2020-08-28 Thread Thomas Mueller (Jira)


[ 
https://issues.apache.org/jira/browse/OAK-9173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17186314#comment-17186314
 ] 

Thomas Mueller commented on OAK-9173:
-

Thanks [~reschke]! The test case should now be fixed in 
http://svn.apache.org/r1881270

> Oak-run indexing fails with "This map is closed"
> 
>
> Key: OAK-9173
> URL: https://issues.apache.org/jira/browse/OAK-9173
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: indexing, oak-run
>Reporter: Thomas Mueller
>Assignee: Thomas Mueller
>Priority: Major
> Fix For: 1.34.0
>
>
> Near the very end of the indexing, the log file contains the following error 
> message
> {noformat}
> 06:21:13.704 [main] INFO  o.a.j.oak.plugins.index.IndexUpdate - Reindexing 
> Traversed #1337 /content/... [9179.83 nodes/s, 33047386.33 nodes/hr] 
> (Elapsed 19.05 min, Expected 0.000 ns, Completed 99.95%)
> 06:21:14.524 [main] INFO  o.a.j.o.i.i.d.f.l.PersistedLinkedList - Entries: 1 
> map size: 1 file size: 9838592 bytes
> 06:21:17.463 [main] INFO  o.a.j.o.i.i.d.f.l.PersistedLinkedList - Cache hits 
> 467781832 misses 836251
> 06:21:17.463 [main] INFO  o.a.j.o.i.i.d.f.l.PersistedLinkedList - Cache hits 
> 467781980 misses 836251
> 06:21:24.400 [main] ERROR com.adobe.granite.indexing.tool.Main - Can't 
> perform operation
> java.lang.IllegalStateException: This map is closed [1.4.194/4]
>   at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765)
>   at org.h2.mvstore.MVMap.beforeWrite(MVMap.java:1044)
>   at org.h2.mvstore.MVMap.remove(MVMap.java:542)
>   at 
> org.apache.jackrabbit.oak.index.indexer.document.flatfile.linkedList.PersistedLinkedList.remove(PersistedLinkedList.java:140)
>   at 
> org.apache.jackrabbit.oak.index.indexer.document.flatfile.FlatFileStoreIterator.computeNextEntry(FlatFileStoreIterator.java:102)
>   at 
> org.apache.jackrabbit.oak.index.indexer.document.flatfile.FlatFileStoreIterator.computeNext(FlatFileStoreIterator.java:85)
>   at 
> org.apache.jackrabbit.oak.index.indexer.document.flatfile.FlatFileStoreIterator.computeNext(FlatFileStoreIterator.java:39)
>   at 
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
>   at 
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
>   at 
> org.apache.jackrabbit.oak.index.indexer.document.DocumentStoreIndexer.reindex(DocumentStoreIndexer.java:123)
> {noformat}
> The root cause seems to be:
>  * The "main" iterator reaches the end, so that the map, and the file, is 
> closed.
>  * But then, a "clone of the iterator" (not sure if that's the right word) is 
> still open and tries to continue.
>  * This fails because the map is marked closed.
> We need to keep the map + file open for a longer time.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)