You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Vikas Saurabh (JIRA)" <ji...@apache.org> on 2016/08/03 10:34:20 UTC
[jira] [Created] (OAK-4636) PropertyIndexLookup#getIndexNode should
be more tolerant towards property types
Vikas Saurabh created OAK-4636:
----------------------------------
Summary: PropertyIndexLookup#getIndexNode should be more tolerant towards property types
Key: OAK-4636
URL: https://issues.apache.org/jira/browse/OAK-4636
Project: Jackrabbit Oak
Issue Type: Improvement
Components: query
Reporter: Vikas Saurabh
Assignee: Vikas Saurabh
Priority: Minor
Currently, {{PropertyIndexLookup#getIndexNode}} \[0] uses {{NodeState#getNames}} for {{propertyNames}} \[1] and {{declaringNodeTypes}} \[2]. That means that these properties need to be either of {{Name}} or {{Name\[]}} types. While that's ok and probably useful as well - this can potentially be used for validation and javadoc for getNames says that the implementation is free to use an optimized path.
That being said, at least in one case (issue 768 in ensure oak index \[3]) the values get set as {{String/String\[]}} instead which can very easily render useful indices like {{nodetype}} useless for the running system.
I see 2 ways around it:
* PropertyIndexLookup can be more resilient and accept non-Name-type too. For optimal case, we can probably try getNames() first and then fallback to getProperties with potential to cast (and may be log a warning for mistake in property type)
* Proactively validate that properties such as declNodeTypes etc must have {{Name/Name\[]}} during commit
I'm ok with any of the approach... but current scenario is too silent in failing... saving the change doesn't cause any issue... cost calculation while picking index simply ignore such indices.
/cc [~tmueller], [~chetanm]
\[0]: https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java#L159
\[1]: https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java#L171
\[2]: https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java#L179
\[3]: https://github.com/Adobe-Consulting-Services/acs-aem-commons/issues/768
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)