From 10b77e2c028a841a2f2341bb632530dafeebb84b Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Wed, 30 Sep 2015 21:37:44 +0530 Subject: [PATCH] added circuit breaker logic for frequent and repeated failures --- .../rootfs/etc/services.d/apache/finish | 22 ++++++++++++++++++- .../apache/rootfs/etc/services.d/apache/run | 2 ++ 2 files changed, 23 insertions(+), 1 deletion(-) mode change 120000 => 100755 bitnami/apache/rootfs/etc/services.d/apache/finish diff --git a/bitnami/apache/rootfs/etc/services.d/apache/finish b/bitnami/apache/rootfs/etc/services.d/apache/finish deleted file mode 120000 index 63b10de42114..000000000000 --- a/bitnami/apache/rootfs/etc/services.d/apache/finish +++ /dev/null @@ -1 +0,0 @@ -/bin/true \ No newline at end of file diff --git a/bitnami/apache/rootfs/etc/services.d/apache/finish b/bitnami/apache/rootfs/etc/services.d/apache/finish new file mode 100755 index 000000000000..9f54f1ccfc16 --- /dev/null +++ b/bitnami/apache/rootfs/etc/services.d/apache/finish @@ -0,0 +1,21 @@ +#!/usr/bin/with-contenv bash + +failcount=0 +if [ -f $BITNAMI_APP_DIR/tmp/failcount ]; then + failcount=$(cat $BITNAMI_APP_DIR/tmp/failcount) +fi + +start=$(cat $BITNAMI_APP_DIR/tmp/start) +stop=`date '+%d%H%M%S'` +interval=`expr $stop - $start` +if test $interval -lt 30 ; then + failcount=`expr $failcount + 1` +else + failcount=0 +fi +echo -n $failcount > $BITNAMI_APP_DIR/tmp/failcount + +# bring down container on frequent failures. something is definitely wrong +if test $failcount -ge 3 ; then + s6-svscanctl -t /var/run/s6/services +fi diff --git a/bitnami/apache/rootfs/etc/services.d/apache/run b/bitnami/apache/rootfs/etc/services.d/apache/run index bd7fbc1a358d..aeb8a3f9bb57 100755 --- a/bitnami/apache/rootfs/etc/services.d/apache/run +++ b/bitnami/apache/rootfs/etc/services.d/apache/run @@ -5,4 +5,6 @@ source $BITNAMI_PREFIX/bitnami-utils.sh # Remove zombie pidfile rm -f $BITNAMI_APP_DIR/logs/httpd.pid +mkdir -p $BITNAMI_APP_DIR/tmp +date '+%d%H%M%S' > $BITNAMI_APP_DIR/tmp/start exec httpd -DFOREGROUND -f $BITNAMI_APP_DIR/conf/httpd.conf ${EXTRA_OPTIONS:+"$EXTRA_OPTIONS"}