Code Monkey home page Code Monkey logo

Comments (3)

palamvmw avatar palamvmw commented on July 21, 2024

When using select we should add a default condition or timeout in the part of the code below
select { case <-ctx.Done(): return ctx.Err() case metaChan <- id: }

from thanos.

mfoldenyi avatar mfoldenyi commented on July 21, 2024

@palamvmw In general that would help getting unstuck at the very least.

I am trying to wrap my head around what happened in the first place, and I believe this is caused by a large number of errors "clogging up" the work queue. Essentially any Exists call that throws an Error takes out one of the worker threads with it, and there is no check for all of them going away, so when we reach the 64th Exists Error all things just stop. No more workers picking up items, and no more items pushed to the channel. Since we are not on a timed Context, we also never get ctx.Done().

I would think that if we error out a worker, we should start a new one in its place. (Or just not stop it in the first place, and send errors to a different channel to be collected.)

I am also not quite sure that this line is correct:
https://github.com/thanos-io/thanos/blame/086a698b2195adb6f3463ebbd032e780f39d2050/pkg/block/fetcher.go#L252
An Exists call can be failing for a bunch of reasons some of which could be retried successfully.

We have had S3 503 Slow Down responses previously, so it is not at all unlikely that the reason we clogged the 64 workers is because all of a sudden all of them started getting 503 Slow Downs from AWS.

from thanos.

ahurtaud avatar ahurtaud commented on July 21, 2024

I think I am facing the same issue but on Azure Object store so I tend to agree with the comment on your draft PR.
we are not using any minio lib for azure :/

from thanos.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.