lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lucene/Solr QA (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SOLR-13017) SolrInputField.setValue method should not use supplied collection as backing value.
Date Thu, 31 Jan 2019 23:30:00 GMT

    [ https://issues.apache.org/jira/browse/SOLR-13017?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16757802#comment-16757802
] 

Lucene/Solr QA commented on SOLR-13017:
---------------------------------------

| (/) *{color:green}+1 overall{color}* |
\\
\\
|| Vote || Subsystem || Runtime || Comment ||
|| || || || {color:brown} Prechecks {color} ||
| {color:green}+1{color} | {color:green} test4tests {color} | {color:green}  0m  0s{color}
| {color:green} The patch appears to include 1 new or modified test files. {color} |
|| || || || {color:brown} master Compile Tests {color} ||
| {color:green}+1{color} | {color:green} compile {color} | {color:green}  1m 27s{color} |
{color:green} master passed {color} |
|| || || || {color:brown} Patch Compile Tests {color} ||
| {color:green}+1{color} | {color:green} compile {color} | {color:green}  1m 14s{color} |
{color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} javac {color} | {color:green}  1m 14s{color} | {color:green}
the patch passed {color} |
| {color:green}+1{color} | {color:green} Release audit (RAT) {color} | {color:green}  1m 14s{color}
| {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} Check forbidden APIs {color} | {color:green}  1m
14s{color} | {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} Validate source patterns {color} | {color:green}
 1m 14s{color} | {color:green} the patch passed {color} |
|| || || || {color:brown} Other Tests {color} ||
| {color:green}+1{color} | {color:green} unit {color} | {color:green}  5m 55s{color} | {color:green}
solrj in the patch passed. {color} |
| {color:black}{color} | {color:black} {color} | {color:black} 11m 31s{color} | {color:black}
{color} |
\\
\\
|| Subsystem || Report/Notes ||
| JIRA Issue | SOLR-13017 |
| JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12949713/SOLR-13017.patch
|
| Optional Tests |  compile  javac  unit  ratsources  checkforbiddenapis  validatesourcepatterns
 |
| uname | Linux lucene1-us-west 4.4.0-137-generic #163~14.04.1-Ubuntu SMP Mon Sep 24 17:14:57
UTC 2018 x86_64 x86_64 x86_64 GNU/Linux |
| Build tool | ant |
| Personality | /home/jenkins/jenkins-slave/workspace/PreCommit-SOLR-Build/sourcedir/dev-tools/test-patch/lucene-solr-yetus-personality.sh
|
| git revision | master / edb0531 |
| ant | version: Apache Ant(TM) version 1.9.3 compiled on July 24 2018 |
| Default Java | 1.8.0_191 |
|  Test Results | https://builds.apache.org/job/PreCommit-SOLR-Build/283/testReport/ |
| modules | C: solr solr/solrj U: solr |
| Console output | https://builds.apache.org/job/PreCommit-SOLR-Build/283/console |
| Powered by | Apache Yetus 0.7.0   http://yetus.apache.org |


This message was automatically generated.



> SolrInputField.setValue method should not use supplied collection as backing value.
> -----------------------------------------------------------------------------------
>
>                 Key: SOLR-13017
>                 URL: https://issues.apache.org/jira/browse/SOLR-13017
>             Project: Solr
>          Issue Type: Improvement
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: SolrJ
>            Reporter: Charles Sanders
>            Priority: Minor
>         Attachments: SOLR-13017.patch
>
>
> The setValue method in SolrInputField takes an argument of Object.  If the supplied object
is a collection, then the collection is used as the backing value for the field.  This can
cause unexpected results when the collection is used to initialize two or more different fields.
> Consider the example where a list of values 'a', 'b', 'c' is used to initialize two fields
in a SolrInputDocument.
> {noformat}
> List<String> lst = new ArrayList<>();
> lst.add("a");
> lst.add("b");
> lst.add("c");
>         
> SolrInputDocument sid = new SolrInputDocument();
> sid.addField("alpha", lst);
> sid.addField("beta", lst);
> .
> .  {add more fields to doc}
> .
> sid.addField("beta", "blah");  // add another value to field 'beta'
> {noformat}
> Because the same list is used to initialize both fields 'alpha' and 'beta', they not
only contain the same values, but point to the same instance of the list.  Therefore, if an
additional value is added to one of the fields, both will contain the value.
> In the example provided, the user would expect field 'alpha' to contain values 'a', 'b',
'c'.  While field 'beta' should contain fields 'a', 'b', 'c' and 'blah'.  But that is not
the case.  Both fields point to the same instance of the list, so if a new value is added
to either field, the list is updated and both fields will contain the same values ('a', 'b',
'c', 'blah').
> This is not a bug, but the intended logic of the method based on the method comment.
> {noformat}
> /**
>    * Set the value for a field.  Arrays will be converted to a collection. If
>    * a collection is given, then that collection will be used as the backing
>    * collection for the values.
>    */
> {noformat}
> This jira is a request to improve the logic of the method by not using the supplied collection
as the backing value for the field.  But rather, create a new collection and add the values
from the supplied collection to the new collection.  This way the field is not backed by the
actual instance of the supplied collection, but its values only.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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


Mime
View raw message