Solr returns "HTTP status code=1" in some case
----------------------------------------------

                 Key: SOLR-220
                 URL: https://issues.apache.org/jira/browse/SOLR-220
             Project: Solr
          Issue Type: Bug
          Components: search
            Reporter: Koji Sekiguchi


If I request the following on solr example:

http://localhost:8080/solr/select?q=ipod%3Bzzz+asc&version=2.2&start=0&rows=10&indent=on

I got an exception as I expected because zzz isn't undefined, but HTTP status 
code is 1. I expected 400 in this case.
The reason of this is because IndexSchema.getField() method throws 
SolrException(1,"") and QueryParsing.parseSort() doesn't catch it:

        // getField could throw an exception if the name isn't found
        SchemaField f = schema.getField(part);  // <=== makes HTTP status code=1
        if (f == null || !f.indexed()){
          throw new SolrException( 400, "can not sort on unindexed field: 
"+part );
        }

There seems to be a couple of ways to solve this problem:

1. IndexSchema.getField() method throws SolrException(400,"")
2. IndexSchema.getField() method doesn't throw the exception but returns null
3. The caller catches the exception and re-throws SolrException(400,"")
4. The caller catches the exception and re-throws SolrException(400,"",cause) 
that wraps the cause exception

I think either #3 or #4 will be acceptable. The attached patch is #3 for sort 
on undefined field.

Other than QueryParsing.parseSort(), IndexSchema.getField() is called by the 
following class/methos:

- CSVLoader.prepareFields()
- JSONWriter.writeDoc()
- SimpleFacets.getTermCounts()
- QueryParsing.parseValSource()

I'm not sure these methods require same patch. Any thoughts?

regards,


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to