Giter Club home page Giter Club logo

signal-wrapper's Introduction

CircleCI

Signal Wrapper

Signal wrapper is a very simple tool. It wraps programs to help them deal with signals.

Usage: ./bin/signal-wrapper-darwin-amd64 [shutdown command] [cmd] [args]

Let's say you have a program in a container. Let's say that this container is in a load balancing system, and it relies on that container's health to decide whether to route traffic to it.

For now, we can say the healthcheck is test ! -f /tmp/unhealthy, and it runs every 15 seconds. Now, service discovery systems can be slow, so we might want to cause our healthcheck to fail, and wait another little bit to ensure that everyone has caught up with our state.

You might have a script: shutdown.sh:

#/bin/bash
# Let's make ourselves unhealthy
touch /tmp/unhealthy
# And wait for everyone to catch up.
sleep 60

You'd invoke it something like this: ./signal-wrapper-darwin-amd64 ./shutdown.sh my_real_program -f -p 80

It will call shutdown.sh, and wait until it exits before sending the signal to the "real" program.

Known issue

This program only catches SIGTERM, or SIGINT. All other signals are handled as if they were delivered directly to the signal-wrapper. We may want to whitelist a set of signals which are forwarded.

signal-wrapper's People

Contributors

sargun avatar

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.