You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@metron.apache.org by "Ryan Merriman (JIRA)" <ji...@apache.org> on 2018/04/22 19:44:00 UTC
[jira] [Created] (METRON-1535) IndexDao patch function is not
atomic
Ryan Merriman created METRON-1535:
-------------------------------------
Summary: IndexDao patch function is not atomic
Key: METRON-1535
URL: https://issues.apache.org/jira/browse/METRON-1535
Project: Metron
Issue Type: Bug
Reporter: Ryan Merriman
Our Index and Elasticsearch DAO patch operations are not atomic. Currently a [patch|https://github.com/apache/metron/blob/master/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/IndexDao.java#L125] involves looking up the current version of a document, patching it, then reindexing the whole document in separate steps. This could lead to a race condition that causes incorrect or corrupt data.
This pattern also exists in a couple different places in the ElasticsearchMetaAlertDao including [here|https://github.com/apache/metron/blob/master/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/IndexDao.java#L125].
Elasticsearch offers an [Update API|https://www.elastic.co/guide/en/elasticsearch/reference/5.6/docs-update.html#docs-update] that may be more appropriate in these cases. I don't know if it works on nested documents so that would need to be tested.
Looking up the whole doc as part of an update is also causing this [bug|https://github.com/apache/metron/pull/995] in the SolrMetaAlertDao feature because Solr returns extra fields that can't be directly reindexed. There is also an [Atomic Update|https://lucene.apache.org/solr/guide/6_6/updating-parts-of-documents.html#UpdatingPartsofDocuments-AtomicUpdates] in Solr that is similar to the Elasticsearch Update API.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)