On 7/22/2016 12:41 AM, Shyam R wrote: > I see that SOLR returns status value as 0 for successful searches > org.apache.solr.core.SolrCore; [users_shadow_shard1_replica1] > webapp=/solr path=/user/ping params={} status=0 QTime=0 I do see that > the status come's back as 400 whenever the search is invalid ( > invoking query with parameters that are not available in the target > collection ) What are the legitimate values of status and reason for > choosing 0?
Solr (Jetty, really) sends back "200" for the HTTP status code when the request status is zero. The reason Solr uses a status of zero internally has its origins in the way most operating systems deal with program exit codes. Almost universally, when a program exits with an exit code of 0, it tells the operating system that the exit was normal, no errors. Any positive number indicates some kind of error. The reason this is not reversed is simple -- unlike HTTP, which has multiple codes meaning success, operating systems must handle many different error codes, but only one success code. So the success code is assigned to the number that's inherently different from the rest -- zero. Internally, Solr doesn't necessarily know that the response is going to use HTTP, although that is the most common method. In the mind of a typical open source developer, an exit status of ANY positive number means there was an error, including 200. Once control is handed off to Jetty, then the zero success status is translated to the most-used success code for HTTP. Any number could *potentially* be valid for the status in Solr logs, but I've only ever seen zero, 40x, and 50x. The 40x series means there was a problem detected in the request, 50x means an error happened inside Solr itself after the request was determined to be good. The ping handler will return a 503 statusif the health check is put into a disabledstate. Thanks, Shawn