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

Timothy Potter updated SOLR-7332:
---------------------------------
    Attachment: SOLR-7332.patch

Ignore that previous - it had a dead-lock condition in it when doing core 
reloads :-(

I think this updated patch is close to commit for trunk. I've added a 
distributed test that uses multiple threads to send docs, reload the 
collection, and commit data - beast passes 20 of 20. However, there are 2 areas 
that need review:

1) How I'm calling {{UpdateLog.onFirstSearcher}} in SolrCore. I was getting a 
multiple on-deck searcher warning during a core reload because the getSearcher 
method gets called twice during a reload and if the max version lookup took a 
little time, then the warning would occur. So I'm calling this as part of the 
main thread vs. in the background executor. This is of course will block the 
reload until it finishes but I think given the importance of getting the 
version buckets seeded correctly, that's OK. Let me know if there's a better 
way.

2) Originally, I was synchronizing the seedBucketVersionHighestFromIndex method 
in UpdateLog, but that led to dead-lock when doing reloads because updates 
continue to flow in while reload occurs (and DistributedUpdateProcessor 
versionAdd gets the lock on versionBuckets and calls synchronized methods on 
UpdateLog). So I've switched to using the versionInfo.blockUpdates while 
looking up the max version from the index, see: {{UpdateLog.onFirstSearcher}}. 
My thinking here is that we actually want to block updates briefly after a 
reload when getting the max from the index so that we don't end up setting the 
version too low.

Also, minor, but I removed the SortedNumericDocValues stuff from the 
{{VersionInfo#seedBucketVersionHighestFromIndex}} method from the previous 
patch since Solr doesn't have support for that yet and it was a 
mis-understanding on my part of how that type of field works. So now the lookup 
of max either uses terms if version is indexed or a range query if not indexed.

> Seed version buckets with max version from index
> ------------------------------------------------
>
>                 Key: SOLR-7332
>                 URL: https://issues.apache.org/jira/browse/SOLR-7332
>             Project: Solr
>          Issue Type: Sub-task
>          Components: SolrCloud
>            Reporter: Timothy Potter
>            Assignee: Timothy Potter
>         Attachments: SOLR-7332.patch, SOLR-7332.patch, SOLR-7332.patch
>
>
> See full discussion with Yonik and I in SOLR-6816.
> The TL;DR of that discussion is that we should initialize highest for each 
> version bucket to the MAX value of the {{__version__}} field in the index as 
> early as possible, such as after the first soft- or hard- commit. This will 
> ensure that bulk adds where the docs don't exist avoid an unnecessary lookup 
> for a non-existent document in the index.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to