Coder Social home page Coder Social logo

condu's People

Contributors

artpdr avatar thebrunolopes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

condu's Issues

#001 - Logic to handle child processes (workers) being killed by the OS (for example, due to Out Of Memory (OOM))

I'm creating an issue for this change in condu because it might change a vast proportion of code.
The problem is:

  • When a worker process (child process that polls tasks from conductor server) is killed by the OS, for example due to OOM, there is no way to update the task being treated by the process that is gone as "FAILED".
  • The process that is killed is set as a Zombie process and the task type that was being handled by this process is never polled again from this worker.

The solution that I will provide is:

  • When child processes are triggered, they will be triggered from different threads that maintain a pipe open to the process that is triggered.
  • Whenever the process receives a task from Conductor server it communicates this task with the thread that triggered the process.
  • If the child process is killed, for example due to OOM, the thread that created the process can observe this and can update the task as FAILED and create a new process to replace the one killed before.

For any doubts or suggestions, comment please.

#002 - ACKnowledge polled tasks

Currently, when condu pulls a task to be processed in a worker, it is not ACKnowledging the task. Thus if the task takes more than responseTimeoutSeconds, it will be scheduled again by conductor-server after responseTimeoutSeconds and can be pulled by another worker even if the first worker that pulled the task is still working on it.

I will fix this issue by ACKnowledging the task after pollForTask if the task is not None.

More information about ACKnowleging tasks here: https://netflix.github.io/conductor/runtime/

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.