: I still think 503 is appropriate when timeAllowed is exceeded. The 
: service requested is a reponse within the set time. That service is not 
: available. Here are the RFC definitions of 500 and 503. Exceeding 
: timeAllowed isn’t an “unexpected condition”, it is part of the normal 
: operation of that limit.

Devils avocate argument: it is an "unexpected condition" -- it's unepected 
that the request wasn't able to be processed w/in the configured limits. If you 
expected that the request could *NOT* be processed, why send it w/those 
limits?

I'm -0 to using 503 because it's worded to very explicitly be a temporal 
situation: failue "due temporary overload or scheduled maintenance" -- 
those aren't *examples* of why a server MAY return 503, those are the 
explict circumstances indicated by a 503 -- and neither one is directly 
applicable for a query limit being exceeded.  An otherwise idle server 
might still fail a request with a query limit configured -- regardless of 
wther the server is "overloaded" or down for "scheduled maintenance" -- 
and there is no reason for a client to assume retrying a request with the 
same query limits will succeed again in the future.


Bottom line for me: I'm fine w/changing the default response code to 
anything -- as long as we make it configure.  But i *strongly* urge us 
not to use a non-standard error code that already has very specific, well 
established, meaning with well known proxy software.


: 6.6.1.  500 Internal Server Error
: 
:    The 500 (Internal Server Error) status code indicates that the server
:    encountered an unexpected condition that prevented it from fulfilling
:    the request.
: https://datatracker.ietf.org/doc/html/rfc7231#section-6.6.1
: 
:  6.6.4 503 Service Unavailable
: 
:    The 503 (Service Unavailable) status code indicates that the server
:    is currently unable to handle the request due to a temporary overload
:    or scheduled maintenance, which will likely be alleviated after some
:    delay.  The server MAY send a Retry-After header field
:    (Section 7.1.3) to suggest an appropriate amount of time for the
:    client to wait before retrying the request
: https://datatracker.ietf.org/doc/html/rfc7231#section-6.6.4
: 
: Solr could even return 503 with a message of “timeAllowed exceeded”.
: 
: I spent about a decade working on a search engine with an integrated web 
spider. Accurate HTTP response codes are really useful.
: 
: wunder
: Walter Underwood
: wun...@wunderwood.org
: http://observer.wunderwood.org/  (my blog)
: 
: > On Mar 19, 2024, at 3:12 PM, Chris Hostetter <hossman_luc...@fucit.org> 
wrote:
: > 
: > 
: > Agree on all of Uwe's points below
: > 
: > I think 500 is the most appropriate for exceeding QueryLimits -- 
: > unless/until we decie we want Solr to start using custom response codes in 
: > some cases, but in that case i would suggest we explicitly *avoid* using 
: > 504, 524, & 529 precisely because they already have specific meanings in 
: > well known HTTP proxies/services that don't match what we're talking about 
: > here.
: > 
: > As far as one of David's specific observations...
: > 
: > : > ideal IMO because Solr's health could reasonably be judged by looking
: > : > for 500's specifically as a sign of a general error that service
: > : > operators should pay attention to.
: > 
: > Any client that is interpreting a '500' error as a *general* indication of 
: > a problem with Solr, and not specific to that request, would not be 
: > respecting the spec on what '500' means.  *Some* '5xx' are documented 
: > to indicate that there may be a general problem afflicting the 
: > server/service as a whole (notably '503') but most do not.
: > 
: > But i also think that if we really want to cover our basis -- we can 
: > always make it configurable.  Let people configure Solr to return 
: > 500, 400, 418, 666, 999, ... wtf they want ... but 500 is probably the 
: > best sane default that doesn't carry around implicit baggage.
: > 
: > : 524 or 504 both refer to timeouts, but both are meant for proxies (so 
reverse
: > : proxy can't reach the backend server in time). So both of them do not 
match.
: > : 
: > : 408 is "request timeout", but that's client's fault (4xx code). In that 
case
: > : its a more technical code because it also requires to close the 
connection and
: > : not keep it alive, so we can't trigger that from Servlet API in a correct 
way.
: > : 
: > : 503 does not fit well as Solr is not overloaded, but would be the only
: > : alternative I see. Maybe add a new Solr-specific one? Anyways, I think 500
: > : seems the best response unless you find another one not proxy-related.
: > : 
: > : Uwe
: > 
: > 
: > -Hoss
: > http://www.lucidworks.com/
: > 
: > ---------------------------------------------------------------------
: > To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
: > For additional commands, e-mail: dev-h...@solr.apache.org
: > 
: 
: 

-Hoss
http://www.lucidworks.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
For additional commands, e-mail: dev-h...@solr.apache.org

Reply via email to