[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16354476#comment-16354476 ] ASF subversion and git services commented on SOLR-11459: Commit 359ae6fe6efa06feaefa67ea2465589e92dd52bb in lucene-solr's branch refs/heads/branch_7x from [~mkhludnev] [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=359ae6f ] SOLR-11459: Fix in-place nonexistent doc update following existing doc update Applying again. No changes. > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Mikhail Khludnev >Priority: Minor > Attachments: SOLR-11459.patch > > Time Spent: 0.5h > Remaining Estimate: 0h > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16354426#comment-16354426 ] ASF subversion and git services commented on SOLR-11459: Commit 2c2a03f01d9a2fbbd7031d3f15a971b5aeb0c598 in lucene-solr's branch refs/heads/branch_7x from [~mkhludnev] [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=2c2a03f ] Revert "SOLR-11459: Fix in-place nonexistent doc update following existing doc update" This reverts commit 76d94c19bb8f6480ec0119ad77d6601432b7099b. > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Mikhail Khludnev >Priority: Minor > Attachments: SOLR-11459.patch > > Time Spent: 0.5h > Remaining Estimate: 0h > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16354302#comment-16354302 ] ASF subversion and git services commented on SOLR-11459: Commit 76d94c19bb8f6480ec0119ad77d6601432b7099b in lucene-solr's branch refs/heads/branch_7x from [~mkhludnev] [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=76d94c1 ] SOLR-11459: Fix in-place nonexistent doc update following existing doc update > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Mikhail Khludnev >Priority: Minor > Attachments: SOLR-11459.patch > > Time Spent: 20m > Remaining Estimate: 0h > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16354268#comment-16354268 ] ASF subversion and git services commented on SOLR-11459: Commit c50806824005b979a7e4854af38b2d8071bc52c0 in lucene-solr's branch refs/heads/master from [~mkhludnev] [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=c508068 ] SOLR-11459: Fix in-place nonexistent doc update following existing doc update > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Mikhail Khludnev >Priority: Minor > Attachments: SOLR-11459.patch > > Time Spent: 20m > Remaining Estimate: 0h > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16353172#comment-16353172 ] Ishan Chattopadhyaya commented on SOLR-11459: - +1 to the patch. The failures seem unrelated. > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Mikhail Khludnev >Priority: Minor > Attachments: SOLR-11459.patch > > Time Spent: 20m > Remaining Estimate: 0h > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16352888#comment-16352888 ] Mikhail Khludnev commented on SOLR-11459: - This patch gives some unrelated failures. But from what I see these tests often or even (always) blink now. Like: {code} [junit4] Tests with failures [seed: 7506124B2E5AC21A]: [junit4] - org.apache.solr.handler.admin.AutoscalingHistoryHandlerTest.testHistory [junit4] - org.apache.solr.cloud.autoscaling.TriggerIntegrationTest.testMetricTrigger {code} Any objections or concerns for committing this patch? > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Mikhail Khludnev >Priority: Minor > Attachments: SOLR-11459.patch > > Time Spent: 20m > Remaining Estimate: 0h > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16351869#comment-16351869 ] Mikhail Khludnev commented on SOLR-11459: - Great investigation and the test, [~werder]. I'm going to commit [^SOLR-11459.patch] next week. Note: rolling back one-liner fix fails well with {{ant test -Dtestcase=TestInPlaceUpdatesDistrib -Dtests.seed=693C5C2078500204:553EDF06E26EA4D0 -Dtests.slow=true -Dtests.locale=ga -Dtests.timezone=US/Arizona -Dtests.asserts=true -Dtests.file.encoding=UTF-8}} > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Mikhail Khludnev >Priority: Minor > Attachments: SOLR-11459.patch > > Time Spent: 20m > Remaining Estimate: 0h > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16332599#comment-16332599 ] Andrey Kudryavtsev commented on SOLR-11459: --- {quote} The author, somehow tell us that the update should create this doc. It's not clear whether it's described as an expected behavior. But even it is, can we have clearer assertNotNull()? {quote} No problem. {quote} Also, can't we don't -copy-paste- introduce {{indexDocs()}} but rather loop through docs? {quote} Not sure about this one. I need a batch of updates on a same Solr node to see problems when same instance of {{AddUpdateCommand}} is reused for different updates. So it's like \{{add(Collection docs)}} is must have here. > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Ishan Chattopadhyaya >Priority: Minor > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16331948#comment-16331948 ] Mikhail Khludnev commented on SOLR-11459: - Got it. It fails. It's fine. {code:java} [junit4] Tests with failures [seed: B15B19F853ACE2C4]: [junit4] - org.apache.solr.update.TestInPlaceUpdatesDistrib.test {code} However, it's NPE fail from the test method {code:java} [23:00:39.841] ERROR 50.7s | TestInPlaceUpdatesDistrib.test <<< > Throwable #1: java.lang.NullPointerException > at __randomizedtesting.SeedInfo.seed([B15B19F853ACE2C4:390F2622FD508F3C]:0) > at > org.apache.solr.update.TestInPlaceUpdatesDistrib.updateExistedAndNonExistedDocs(TestInPlaceUpdatesDistrib.java:433) > at > org.apache.solr.update.TestInPlaceUpdatesDistrib.test(TestInPlaceUpdatesDistrib.java:147) TestInPlaceUpdatesDistrib.java:433 assertEquals(50.0f, client.getById("2").get("inplace_updatable_float")); {code} The author, somehow tell us that the update should create this doc. It's not clear whether it's described as an expected behavior. But even it is, can we have clearer assertNotNull()? Also, can't we don't -copy-paste- introduce {{indexDocs()}} but rather loop through docs? > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Ishan Chattopadhyaya >Priority: Minor > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16331393#comment-16331393 ] Andrey Kudryavtsev commented on SOLR-11459: --- Try {code:java} ant test -Dtestcase=TestInPlaceUpdatesDistrib -Dtests.seed=B15B19F853ACE2C4{code} Don't be sad. > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Ishan Chattopadhyaya >Priority: Minor > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16331113#comment-16331113 ] Mikhail Khludnev commented on SOLR-11459: - I'd like to pull it in, but here is the issue. I rolled back the code change {code:java} $ git diff -- src/java/org/apache/solr/update/AddUpdateCommand.java diff --git a/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java b/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java index cb1af9a..af39726 100644 --- a/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java +++ b/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java @@ -78,6 +78,7 @@ public class AddUpdateCommand extends UpdateCommand implements Iterable AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Ishan Chattopadhyaya >Priority: Minor > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16328190#comment-16328190 ] Andrey Kudryavtsev commented on SOLR-11459: --- Hope to fix this one. The test is not ideal, it will fail without prevVersion = -1; cause of there doc with id = 2 will not present on every replica after in-place update. But as there is TestInPlaceUpdatesStandalone#testDVUpdatesWithDelete to check that in-place update for non existed docs will result in a doc creation, I think it's ok to have it's distributed analog. > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Ishan Chattopadhyaya >Priority: Minor > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16328178#comment-16328178 ] ASF GitHub Bot commented on SOLR-11459: --- GitHub user werder06 opened a pull request: https://github.com/apache/lucene-solr/pull/307 SOLR-11459 Clear AddUpdateCommand#prevVersion to fix in-place updates… … for non existed documents You can merge this pull request into a Git repository by running: $ git pull https://github.com/werder06/lucene-solr master Alternatively you can review and apply these changes as the patch at: https://github.com/apache/lucene-solr/pull/307.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #307 commit 38a689190e80860e9efcfc6bc121f86656801044 Author: Andrey Date: 2018-01-17T02:17:54Z SOLR-11459 Clear AddUpdateCommand#prevVersion to fix in-place updates for non existed documents > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Ishan Chattopadhyaya >Priority: Minor > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16209598#comment-16209598 ] Ishan Chattopadhyaya commented on SOLR-11459: - Hi Andrey, I'm currently on a vacation and shall take a look at this on Friday. On a cursory glance, it seems what you're recommending makes sense. I'll have to be more thorough in order to be sure. There are TestInPlaceUpdatesStandalone and TestInPlaceUpdatesDistrib tests. > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Assignee: Ishan Chattopadhyaya >Priority: Minor > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-11459) AddUpdateCommand#prevVersion is not cleared which may lead to problem for in-place updates of non existed documents
[ https://issues.apache.org/jira/browse/SOLR-11459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16209491#comment-16209491 ] Andrey Kudryavtsev commented on SOLR-11459: --- [~ichattopadhyaya], any thoughts about this? > AddUpdateCommand#prevVersion is not cleared which may lead to problem for > in-place updates of non existed documents > --- > > Key: SOLR-11459 > URL: https://issues.apache.org/jira/browse/SOLR-11459 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud >Affects Versions: 7.0 >Reporter: Andrey Kudryavtsev >Priority: Minor > > I have a 1_shard / *m*_replicas SolrCloud cluster with Solr 6.6.0 and run > batches of 5 - 10k in-place updates from time to time. > Once I noticed that job "hangs" - it started and couldn't finish for a a > while. > Logs were full of messages like: > {code} Missing update, on which current in-place update depends on, hasn't > arrived. id=__, looking for version=___, last found version=0" {code} > {code} > Tried to fetch document ___ from the leader, but the leader says document has > been deleted. Deleting the document here and skipping this update: Last found > version: 0, was looking for: ___",24,0,"but the leader says document has been > deleted. Deleting the document here and skipping this update: Last found > version: 0 > {code} > Further analysis shows that: > * There are 100-500 updates for non-existed documents among other updates > (something that I have to deal with) > * Leader receives bunch of updates and executes this updates one by one. > {{JavabinLoader}} which is used by processing documents reuses same instance > of {{AddUpdateCommand}} for every update and just [clearing its state at the > end|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99]. > Field [AddUpdateCommand#prevVersion| > https://github.com/apache/lucene-solr/blob/6396cb759f8c799f381b0730636fa412761030ce/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java#L76] > is not cleared. > * In case of update is in-place update, but specified document does not > exist, this update is processed as a regular atomic update (i.e. new doc is > created), but {{prevVersion}} is used as a {{distrib.inplace.prevversion}} > parameter in sequential calls to every slave in DistributedUpdateProcessor. > {{prevVersion}} wasn't cleared, so it may contain version from previous > processed update. > * Slaves checks it's own version of documents which is 0 (cause doc does not > exist), slave thinks that some updates were missed and spends 5 seconds in > [DistributedUpdateProcessor#waitForDependentUpdates|https://github.com/apache/lucene-solr/blob/e2521b2a8baabdaf43b92192588f51e042d21e97/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java#L99] > waiting for missed updates (no luck) and also tries to get "correct" version > from leader (no luck as well) > * So update for non existed document costs *m* * 5 sec each > I workarounded this by explicit check of doc existence, but it probably > should be fixed. > Obviously first guess is that prevVersion should be cleared in > {{AddUpdateCommand#clear}}, but have no clue how to test it. > {code} > +++ solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java > (revision ) > @@ -78,6 +78,7 @@ > updateTerm = null; > isLastDocInBatch = false; > version = 0; > + prevVersion = -1; > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org