It was an 8x but it's more hypothetical if /update were to support
this.  It does where I work :-)

Weird that you got status=0 and fewer results without specifying
shards.tolerant=true

On Sun, Mar 31, 2024 at 4:41 PM Gus Heck <gus.h...@gmail.com> wrote:
>
> Hmm, I took the initial statement about returning 500 at face value when I
> wrote my response above, but with actual testing I'm not seeing that
> behavior in any recent version... (tested 9.1, 9.4, 9.5, main) this cause a
> some confusion since I am working in that code right now and having read
> this I made sure in paths I added I threw 500 and then discovered that it
> wasn't reliably thrown all the time when I was testing... I initially
> assumed I must have broken it until I stashed everything and made this
> discovery :).
>
> David, what version were you observing 500 status for a time limit
> exceedance with timeAllowed? Is it an 8.x? I didn't test any of those...
>
> Searching an index of the ref guide here which I use for testing sometime
> (this index is easily created via
> https://github.com/nsoft/index-solr-ref-guide) in each of those versions I
> got:
> {
>   "responseHeader":{
>     "zkConnected":true,
>     "partialResults":true,
>     "status":0,
>     "QTime":20,
>     "params":{
>       "q":"hdfs",
>       "indent":"true",
>       "q.op":"OR",
>       "timeAllowed":"1",
>       "useParams":"",
>       "_":"1711914604030"}},
>
> "response":{"numFound":2,"start":0,"maxScore":3.6057181,"numFoundExact":true,"docs":[
>
> Or without timeAllowed:
>
> {
>   "responseHeader":{
>     "zkConnected":true,
>     "status":0,
>     "QTime":66,
>     "params":{
>       "q":"hdfs",
>       "indent":"true",
>       "q.op":"OR",
>       "useParams":"",
>       "_":"1711914604030"}},
>
> "response":{"numFound":9,"start":0,"maxScore":4.5576544,"numFoundExact":true,"docs":[
>
> As a side quirk, the numFoundExact seems a bit misleading... alongside
> partialResults:true
>
> On Wed, Mar 20, 2024 at 5:59 PM Gus Heck <gus.h...@gmail.com> wrote:
>
> > I don't like the current 500. That's sharing the same conceptual space as
> > NPE, bugs and other hard failures for which IT should be paged at 2:30 am.
> >
> > 5xx indicates that there is a problem with the server and that there is
> > nothing the client can do, and also would typically be flagged by
> > monitoring tools as a system problem. That's not true, often the query can
> > be modified, or resubmitted of peak hours etc... The server is not
> > compromised.
> >
> > 4xx indicates that "the client should correct their request" which is true
> > if things are taking a long time because the request was dumb in the first
> > place, but since that's entirely relative to the index and the hardware,
> > it's unknowable from our perspective so it also feels wrong to send a 400,
> > because it could be a perfectly fine request sent in the middle of a DOS
> > attack...  Not the client's fault.
> >
> > Stepping back a moment let's think about the request: it says "run this
> > query for up to X milliseconds" ... the server did that successfully so
> > really the response ought to be a success.
> >
> > So 206 Partial Content seems to make the most sense
> >
> > -Gus
> >
> >
> > On Wed, Mar 20, 2024 at 2:06 PM Chris Hostetter <hossman_luc...@fucit.org>
> > wrote:
> >
> >>
> >> : 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
> >
> >
> >
> > --
> > http://www.needhamsoftware.com (work)
> > https://a.co/d/b2sZLD9 (my fantasy fiction book)
> >
>
>
> --
> http://www.needhamsoftware.com (work)
> https://a.co/d/b2sZLD9 (my fantasy fiction book)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
For additional commands, e-mail: dev-h...@solr.apache.org

Reply via email to