You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2012/08/20 06:24:10 UTC

svn commit: r1374913 - in /lucene/dev/branches/branch_4x: ./ dev-tools/ lucene/ lucene/analysis/ lucene/analysis/icu/src/java/org/apache/lucene/collation/ lucene/backwards/ lucene/benchmark/ lucene/core/ lucene/demo/ lucene/facet/ lucene/grouping/ luce...

Author: yonik
Date: Mon Aug 20 04:24:08 2012
New Revision: 1374913

URL: http://svn.apache.org/viewvc?rev=1374913&view=rev
Log:
SOLR-3743: real-time get should not return copyField targets

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/dev-tools/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/BUILD.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/CHANGES.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/JRE_VERSION_MIGRATION.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/MIGRATE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/README.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilterFactory.java   (props changed)
    lucene/dev/branches/branch_4x/lucene/backwards/   (props changed)
    lucene/dev/branches/branch_4x/lucene/benchmark/   (props changed)
    lucene/dev/branches/branch_4x/lucene/build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/   (props changed)
    lucene/dev/branches/branch_4x/lucene/demo/   (props changed)
    lucene/dev/branches/branch_4x/lucene/facet/   (props changed)
    lucene/dev/branches/branch_4x/lucene/grouping/   (props changed)
    lucene/dev/branches/branch_4x/lucene/highlighter/   (props changed)
    lucene/dev/branches/branch_4x/lucene/ivy-settings.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/join/   (props changed)
    lucene/dev/branches/branch_4x/lucene/licenses/   (props changed)
    lucene/dev/branches/branch_4x/lucene/memory/   (props changed)
    lucene/dev/branches/branch_4x/lucene/misc/   (props changed)
    lucene/dev/branches/branch_4x/lucene/module-build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/queries/   (props changed)
    lucene/dev/branches/branch_4x/lucene/queryparser/   (props changed)
    lucene/dev/branches/branch_4x/lucene/sandbox/   (props changed)
    lucene/dev/branches/branch_4x/lucene/site/   (props changed)
    lucene/dev/branches/branch_4x/lucene/spatial/   (props changed)
    lucene/dev/branches/branch_4x/lucene/suggest/   (props changed)
    lucene/dev/branches/branch_4x/lucene/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/lucene/tools/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_4x/solr/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/README.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/cloud-dev/   (props changed)
    lucene/dev/branches/branch_4x/solr/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/contrib/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
    lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema15.xml
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/update/TestUpdate.java
    lucene/dev/branches/branch_4x/solr/dev-tools/   (props changed)
    lucene/dev/branches/branch_4x/solr/example/   (props changed)
    lucene/dev/branches/branch_4x/solr/lib/   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/scripts/   (props changed)
    lucene/dev/branches/branch_4x/solr/solrj/   (props changed)
    lucene/dev/branches/branch_4x/solr/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/solr/testlogging.properties   (props changed)
    lucene/dev/branches/branch_4x/solr/webapp/   (props changed)

Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1374913&r1=1374912&r2=1374913&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Mon Aug 20 04:24:08 2012
@@ -66,6 +66,11 @@ Bug Fixes
   when requesting multiple stats.facet fields.
   (Roman Kliewer via hossman)
 
+* SOLR-3743: Fixed issues with atomic updates and optimistic concurrency in
+  conjunction with stored copyField targets by making real-time get never
+  return copyField targets. (yonik)
+
+
 Other Changes
 ----------------------
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java?rev=1374913&r1=1374912&r2=1374913&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java Mon Aug 20 04:24:08 2012
@@ -255,6 +255,7 @@ public class RealTimeGetComponent extend
       SchemaField sf = schema.getFieldOrNull(f.name());
       Object val = null;
       if (sf != null) {
+        if (!sf.stored() || schema.isCopyFieldTarget(sf)) continue;
         val = sf.getType().toObject(f);   // object or external string?
       } else {
         val = f.stringValue();
@@ -277,6 +278,10 @@ public class RealTimeGetComponent extend
       Object existing = out.get(f.name());
       if (existing == null) {
         SchemaField sf = schema.getFieldOrNull(f.name());
+
+        // don't return copyField targets
+        if (sf != null && schema.isCopyFieldTarget(sf)) continue;
+
         if (sf != null && sf.multiValued()) {
           List<Object> vals = new ArrayList<Object>();
           vals.add( f );
@@ -301,7 +306,7 @@ public class RealTimeGetComponent extend
     // copy the stored fields only
     Document out = new Document();
     for (IndexableField f : doc.getFields()) {
-      if (f.fieldType().stored()) {
+      if (f.fieldType().stored() ) {
         out.add(f);
       }
     }

Modified: lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema15.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema15.xml?rev=1374913&r1=1374912&r2=1374913&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema15.xml (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema15.xml Mon Aug 20 04:24:08 2012
@@ -425,7 +425,7 @@
    <field name="signatureField" type="string" indexed="true" stored="false"/>
    <field name="uuid" type="uuid" stored="true" />
    <field name="name" type="nametext" indexed="true" stored="true"/>
-   <field name="text" type="text" indexed="true" stored="false"/>
+   <field name="text" type="text" indexed="true" stored="false" multiValued="true" />
    <field name="subject" type="text" indexed="true" stored="true"/>
    <field name="title" type="nametext" indexed="true" stored="true"/>
    <field name="weight" type="float" indexed="true" stored="true"/>
@@ -522,6 +522,9 @@
    <!-- for versioning -->
    <field name="_version_" type="long" indexed="true" stored="true"/>
 
+    
+   <field name="copyfield_source" type="string" indexed="true" stored="true" multiValued="true"/>
+
 
 
    <dynamicField name="*_coordinate"  type="tdouble" indexed="true"  stored="false"/>
@@ -587,5 +590,8 @@
 
    <copyField source="title" dest="text"/>
    <copyField source="subject" dest="text"/>
+
+   <copyField source="copyfield_source" dest="text"/>
+   <copyField source="copyfield_source" dest="copyfield_dest_ss"/>  <!-- copyField into another stored copyField - not best practice --> 
  
 </schema>

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/update/TestUpdate.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/update/TestUpdate.java?rev=1374913&r1=1374912&r2=1374913&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/update/TestUpdate.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/update/TestUpdate.java Mon Aug 20 04:24:08 2012
@@ -68,7 +68,7 @@ public class TestUpdate extends SolrTest
     doUpdateTest(new Callable() {
       @Override
       public Object call() throws Exception {
-        commit("softCommit","false");
+        assertU(commit("softCommit","false"));
         return null;
       }
     });
@@ -82,15 +82,15 @@ public class TestUpdate extends SolrTest
 
     long version;
 
-    version = addAndGetVersion(sdoc("id","1", "val_i",5), null);
+    version = addAndGetVersion(sdoc("id","1", "val_i",5, "copyfield_source","a"), null);
     afterUpdate.call();
-    version = addAndGetVersion(sdoc("id","1", "val_is",map("add",10)), null);
+    version = addAndGetVersion(sdoc("id","1", "val_is",map("add",10), "copyfield_source",map("add","b")), null);
     afterUpdate.call();
     version = addAndGetVersion(sdoc("id","1", "val_is",map("add",5)), null);
     afterUpdate.call();
 
-    assertJQ(req("qt","/get", "id","1", "fl","id,*_i,*_is")
-        ,"=={'doc':{'id':'1', 'val_i':5, 'val_is':[10,5]}}"
+    assertJQ(req("qt","/get", "id","1", "fl","id,*_i,*_is,copyfield_*")
+        ,"=={'doc':{'id':'1', 'val_i':5, 'val_is':[10,5], 'copyfield_source':['a','b']}}"     // real-time get should not return stored copyfield targets
     );
 
     version = addAndGetVersion(sdoc("id","1", "val_is",map("add",-1), "val_i",map("set",100)), null);
@@ -101,6 +101,14 @@ public class TestUpdate extends SolrTest
     );
 
 
+    // Do a search to get all stored fields back and make sure that the stored copyfield target only
+    // has one copy of the source.  This may not be supported forever!
+    assertU(commit("softCommit","true"));
+    assertJQ(req("q","*:*", "fl","id,*_i,*_is,copyfield_*")
+        ,"/response/docs/[0]=={'id':'1', 'val_i':100, 'val_is':[10,5,-1], 'copyfield_source':['a','b'], 'copyfield_dest_ss':['a','b']}"
+    );
+
+
     long version2;
     try {
       // try bad version added as a field in the doc