#!/bin/sh # Event script for ctdb-specific setup and other things that don't fit # elsewhere. [ -n "$CTDB_BASE" ] || \ export CTDB_BASE=$(cd -P $(dirname "$0") ; dirname "$PWD") . $CTDB_BASE/functions loadconfig ctdb_setup_service_state_dir "ctdb" ############################################################ select_tdb_checker () { # Find the best TDB consistency check available. use_tdb_tool_check=false type tdbtool >/dev/null 2>&1 && found_tdbtool=true type tdbdump >/dev/null 2>&1 && found_tdbdump=true if $found_tdbtool && echo "help" | tdbtool | grep -q check ; then use_tdb_tool_check=true elif $found_tdbtool && $found_tdbdump ; then cat </dev/null | grep -q "Database integrity is OK" ; then return 0 else return 1 fi else timeout 10 tdbdump "$_db" >/dev/null 2>/dev/null return $? fi } check_persistent_databases () { _dir="${CTDB_DBDIR_PERSISTENT:-${CTDB_DBDIR:-${CTDB_VARDIR}}/persistent}" mkdir -p "$_dir" 2>/dev/null [ "${CTDB_MAX_PERSISTENT_CHECK_ERRORS:-0}" = "0" ] || return 0 for _db in $(ls "$_dir/"*.tdb.*[0-9] 2>/dev/null) ; do check_tdb $_db || { echo "Persistent database $_db is corrupted! CTDB will not start." return 1 } done } check_non_persistent_databases () { _dir="${CTDB_DBDIR:-${CTDB_VARDIR}}" mkdir -p "$_dir" 2>/dev/null for _db in $(ls "${_dir}/"*.tdb.*[0-9] 2>/dev/null) ; do check_tdb $_db || { _backup="${_db}.$(date +'%Y%m%d.%H%M%S.%N').corrupt" cat <