Changes look fine however one aspect might cause issue
RestrictionImpl#hashCode -> PropertyValues#hashCode ->
PropertyStateValue#hashCode
====
private String getInternalString() {
StringBuilder sb = new StringBuilder();
Iterator<String> iterator = getValue(Type.STRINGS).iterator();
while (iterator.hasNext()) {
sb.append(iterator.next());
if (iterator.hasNext()) {
sb.append(",");
}
}
return sb.toString();
}
@Override
public int hashCode() {
return getType().tag() ^ getInternalString().hashCode();
}
====
Here it tries to get value as STRINGS which leads to
PropertyState#getValue(Type.STRINGS) which would lead to a Binary
getting coerced to String in Conversions#convert(Blob) which would
lead to load of whole binary. Now I am not sure if PropertyState in
RestrictionImpl is applicable for Binary property also
Probably PropertyStateValue#hashCode should take care of Binary
properties and thats why PropertyState#hashCode does not take into
account the value
Chetan Mehrotra
On Fri, Feb 24, 2017 at 2:34 PM, Angela Schreiber <[email protected]> wrote:
> hi oak-devs
>
> i would like to merge another improvement into the 1.6.1 branch:
> https://issues.apache.org/jira/browse/OAK-5784
>
> in addition to additional tests i run the AceCreationTest benchmark and
> attached the results to the issue.
> however, having some extra pair of eyes would be appreciated in order to
> limit the risk of regressions.
>
> thanks
> angela
>
>