Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove terms filter lookup cache. #9056

Closed

Conversation

jpountz
Copy link
Contributor

@jpountz jpountz commented Dec 24, 2014

This is our only cache which is not 'exact' and might allow for stalled results.
Additionally, a similar cache that we have and needs to perform lookups in other
indices in order to run queries is the script index, and for this index we rely
on the filesystem cache, so we should probably do the same with terms filters
lookups.

This is our only cache which is not 'exact' and might allow for stalled results.
Additionally, a similar cache that we have and needs to perform lookups in other
indices in order to run queries is the script index, and for this index we rely
on the filesystem cache, so we should probably do the same with terms filters
lookups.
final GetResponse getResponse = client.get(new GetRequest(lookup.getIndex(), lookup.getType(), lookup.getId()).preference("_local").routing(lookup.getRouting())).actionGet();
if (getResponse.isExists()) {
List<Object> values = XContentMapValues.extractRawValues(lookup.getPath(), getResponse.getSourceAsMap());
terms.addAll(values);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm what do we do if isExists() returns false?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know it might be a preexisting issue but if we execute this on a network thread we might deadlock?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what do we do if isExists() returns false?

If there is no such entry in the index, then we will call the terms filter parser on an empty list, and this generates a MatchNoDocsFilter (see AbstractFieldMapper.termsFilter).

I know it might be a preexisting issue but if we execute this on a network thread we might deadlock?

I did not change the way that the request is performed, so if there is an issue, it is pre-existing indeed. Any suggestion on how to fix the issue (I don't know much about how we deal with thread pools and network threads)? If it's not easy to fix, I'd lean towards opening another issue for it if you don't mind?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah it might be ok to do this since we are only parsing it on a search thread. I wonder if we can add an assertion for the threadpool that it is not a nework thread ever? but opening a diff issue is good

@s1monw
Copy link
Contributor

s1monw commented Jan 5, 2015

left two comments - LGTM otherwise

@jpountz
Copy link
Contributor Author

jpountz commented Jan 6, 2015

@s1monw I opened #9164

@jpountz jpountz removed the review label Jan 6, 2015
@jpountz jpountz closed this in bc86796 Jan 6, 2015
@jpountz jpountz changed the title Core: Remove terms filter cache. Core: Remove terms filter lookup cache. Jan 20, 2015
@clintongormley clintongormley changed the title Core: Remove terms filter lookup cache. Remove terms filter lookup cache. Jun 6, 2015
@clintongormley clintongormley added the :Search/Search Search-related issues that do not fall into other categories label Jun 6, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
>breaking :Search/Search Search-related issues that do not fall into other categories v2.0.0-beta1
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants