mirror of
https://github.com/paulscherrerinstitute/sf_daq_buffer.git
synced 2026-04-22 18:44:35 +02:00
Improve service points for entry
This commit is contained in:
@@ -11,13 +11,14 @@ if [[ -z "${SERVICE_NAME}" ]]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
REDIS_HOST="${REDIS_HOST:-127.0.0.1}"
|
||||
REDIS_SKIP="${REDIS_SKIP:-false}"
|
||||
REDIS_CONFIG_KEY=config."${PIPELINE_NAME}"
|
||||
REDIS_STATUS_KEY=status."${PIPELINE_NAME}.${SERVICE_NAME}"
|
||||
|
||||
# Download config from Redis to redis_config.json and start status reporting.
|
||||
if [ "${REDIS_SKIP}" = false ]; then
|
||||
REDIS_HOST="${REDIS_HOST:-127.0.0.1}"
|
||||
REDIS_CONFIG_KEY=config."${PIPELINE_NAME}"
|
||||
REDIS_STATUS_KEY=status."${PIPELINE_NAME}.${SERVICE_NAME}"
|
||||
|
||||
redis-cli -h "${REDIS_HOST}" get "${REDIS_CONFIG_KEY}" > redis_config.json
|
||||
|
||||
CONFIG_BYTES="$(stat -c %s redis_config.json)"
|
||||
@@ -30,6 +31,5 @@ if [ "${REDIS_SKIP}" = false ]; then
|
||||
redis_status.sh &
|
||||
fi
|
||||
|
||||
|
||||
EXECUTABLE="${@:1}"
|
||||
exec "$EXECUTABLE"
|
||||
+21
-4
@@ -1,26 +1,43 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# How long the status record should be kept in the database.
|
||||
EXPIRE_SECONDS=15
|
||||
# At which interval should records be refreshed in the database.
|
||||
STATUS_INTERVAL_SECONDS=10
|
||||
|
||||
if [[ -z "${REDIS_STATUS_KEY}" ]]; then
|
||||
echo "Environment variable REDIS_STATUS_KEY not defined."
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
STATUS="$(redis-cli -x set "${REDIS_STATUS_KEY}:config" < redis_config.json)"
|
||||
if [ ! "${STATUS}" = "OK" ]; then
|
||||
STATUS="$(redis-cli -x hset "${REDIS_STATUS_KEY} config" < redis_config.json)"
|
||||
if [ "${STATUS}" != 0 ] && [ "${STATUS}" != 1 ]; then
|
||||
echo "Cound not set service status in Redis: ${STATUS}"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
STATUS="$(redis-cli expire "${REDIS_STATUS_KEY}" ${EXPIRE_SECONDS})"
|
||||
if [ "${STATUS}" != 1 ]; then
|
||||
echo "Could not set status expire: ${STATUS}"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
while true; do
|
||||
TIMESTAMP="$(date +%s%N)"
|
||||
|
||||
STATUS="$(redis-cli set "${REDIS_STATUS_KEY}:heartbeat" ${TIMESTAMP} )"
|
||||
STATUS="$(redis-cli hset "${REDIS_STATUS_KEY} heartbeat" "${TIMESTAMP}" )"
|
||||
if [ ! "${STATUS}" = "OK" ]; then
|
||||
echo "Cound not set service hearbeat in Redis: ${STATUS}"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
STATUS="$(redis-cli expire "${REDIS_STATUS_KEY}" ${EXPIRE_SECONDS})"
|
||||
if [ "${STATUS}" != 1 ]; then
|
||||
echo "Could not set status expire: ${STATUS}"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
# Update heartbeat every 10 seconds.
|
||||
sleep 10
|
||||
sleep "${STATUS_INTERVAL_SECONDS}"
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user