#!/bin/bash

set -e
exec 2>&1

ENV=unknown
if [ -f /etc/yandex/environment.type ]; then
    ENV=$(cat /etc/yandex/environment.type)
fi

PATH=/sbin:/usr/sbin:/bin:/usr/bin
LANG=en_US.UTF-8
USER=ppc
GROUP=ppc

NAME=direct-user-action-log-writer
DESC="$NAME"
CWD=/var/www/$NAME
# random
# TODO в силу того, что эта строчка появилась в коммите-хотфиксе, ничего не стал править
# Для devtest, dev7 и ТС не надо указывать эту опцию - там один и тот же mysqld обслуживает разные шарды.
# Можем наткнуться на DIRECT-78909
MYSQL_SERVER_ID=90691

ERROR_LOG=/var/log/yandex/$NAME.error.log
GC_LOG="/var/log/yandex/$NAME.gc.log"

chown ppc /var/log/yandex
# jvm can't append data to previous log, so copy logs to archive
for log in "$GC_LOG"*; do
    test -f "$log" && cat "$log" >>`dirname "$GC_LOG"`/arc.`basename "$GC_LOG"`.`date +%Y%m%d` && rm "$log"
done

if [ -f "$ERROR_LOG" ]; then
  TODAY_ERROR_LOG=$ERROR_LOG.$(date +%Y%m%d)
  if [ -f "$TODAY_ERROR_LOG" ]; then
      cat "$ERROR_LOG" >>"$TODAY_ERROR_LOG"
      rm "$ERROR_LOG"
  else
      mv "$ERROR_LOG" "$TODAY_ERROR_LOG"
  fi
fi

case "$ENV" in
    production) PROG_ARGS=(
        --event-batch-size 5000
        --event-batch-duration PT30s
        --binlog-keep-alive-timeout PT120s
        )
        MEM_FOR_HEAP=16
        ;;
    *) PROG_ARGS=(
        --event-batch-size 1000
        --event-batch-duration PT30s
        --binlog-keep-alive-timeout PT120s
        --skip-erroneous-events
        )
        MEM_FOR_HEAP=4
        ;;
esac

MEM_FOR_MYSQL=2
MEM_LEASE="$(expr $MEM_FOR_HEAP + 1 + $MEM_FOR_MYSQL)"
export MEM_FOR_HEAP
# TODO определять общее количество доступной памяти на контейнере
SWITCHMAN="/usr/bin/switchman --lockname direct-ual-writer --lease FQDN_hj_mem=${MEM_LEASE}:32"

cd "$CWD"
exec chpst -u "$USER:$GROUP" ${SWITCHMAN} -- /usr/local/bin/$NAME --zk-lock-timeout PT10M run --mysql-server-id $MYSQL_SERVER_ID "${PROG_ARGS[@]}" >> "$ERROR_LOG" 2>&1

