jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Julian Reschke (Jira)" <j...@apache.org>
Subject [jira] [Updated] (OAK-9015) ElasticSearchIndexWriter#close method implementation doesn't do what the underlying contract expects | BulkProcessor resource is never closed and it always returns false
Date Mon, 08 Jun 2020 11:06:00 GMT

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

Julian Reschke updated OAK-9015:
--------------------------------
    Summary: ElasticSearchIndexWriter#close method implementation doesn't do what the underlying
contract expects | BulkProcessor resource is never closed and it always returns false  (was:
ElasticserachIndexWriter#close method implementation doesn't do what the underlying contract
expects | BulkProcessor resource is never closed and it always returns false)

> ElasticSearchIndexWriter#close method implementation doesn't do what the underlying contract
expects | BulkProcessor resource is never closed and it always returns false
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OAK-9015
>                 URL: https://issues.apache.org/jira/browse/OAK-9015
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>            Reporter: Nitin Gupta
>            Assignee: Nitin Gupta
>            Priority: Major
>             Fix For: 1.30.0
>
>
> A new ElasticserachIndexWriter instance is created everytime the async indexer service
runs and the close() method in the FullTextWriter interface has the following contract
>  
> {code:java}
> /**
>  * Closes the underlying resources.
>  *
>  * @param timestamp timestamp to be used for recording at status in NodeBuilder
>  * @return true if index was updated or any write happened.
>  */
> boolean close(long timestamp) throws IOException;
> {code}
> However the implementation in ElasticserachIndexWriter returns false always and doesn't
closes the BulkProcessor instances created.
>  
> The problem that needs to be handled here is that the bulk processor calls to elastic
server are async in nature and the close method in ElasticserachIndexWriter could be called
before the bulkProcessor completed it work. So we need to find a safe way to close the bulkProcessor
and return true/false from ElasticserachIndexWriter#close() depending upon if the index was
updated or not.
>  
> Looking at [0], both the bulkProcessor.close and awaitClose methods close the bulkPocessor
after flushing all the documents that were loaded to the bulkProcessor till that moment. So
we just need to make sure that, all the needed docs should be loaded in the bulkProcessor
when ElasticserachIndexWriter#close() is called.
>  
> [0]: [https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-bulk-processor.html]



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

Mime
View raw message