Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrong expected output when a timeout occurs #3

Open
LucaRUnipi opened this issue Sep 19, 2022 · 1 comment
Open

Wrong expected output when a timeout occurs #3

LucaRUnipi opened this issue Sep 19, 2022 · 1 comment

Comments

@LucaRUnipi
Copy link
Contributor

I found a problem in yRCA output when the invoking service emits as log the template corresponding to the client_timeout proposed in /data/templates/chaos-echo.yml

The problem has been found testing Online Boutique application, where I intentionally put a sleep time in the responding service (adservice). yRCA's output was the following: "Found no failure cascade to the considered event", using the client_timeout template as error to explain.

  • frontend ---> adservice (waits 3 sec)
  • frontend logs "Failing to contact adservice (request_id: ...). Root cause: (Deadline exceeded)"

I think that yRCA should recognize that frontend had an internal error due to the timeout happened in adservice.

@jsoldani
Copy link
Member

jsoldani commented Oct 21, 2022

As for timeouts expiring, the Prolog explainer of yRCA currently handles two situations:

  • explicitly logged failures of invoked services, due to which the timeouts in invokers expired (lines 14-26) or
  • requests sent but never received/handled by invoked services (lines 77-87)

The described situation seem to relate to the first case (lines 14-26), for which yRCA should consider the base case of a service taking "too long" to answer to its invokers (same case, but no failure in the invoked service while interaction is going on), e.g.,

causedBy(log(SI,I,T,E,M,Sev),[X],SI) :-                        
    (E=errorFrom(SJ,Id);E=timeout(SJ,Id)),
    failedInteraction(Id,(SI,I),(SJ,J),Ts,Te),
    \+ (log(SJ,J,U,_,_,SevJ), lte(SevJ,warning), Ts =< U, U =< Te),
    X=log(SI,I,T,E,M,Sev).

(which would cover also the error responses due to processing "bad requests" of invokers)

teto1992 added a commit that referenced this issue Jan 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants