Merge branch 'fix/valgrind' into feature/3.0_liaohj
This commit is contained in:
commit
ea8832baa5
|
@ -18,15 +18,15 @@ target_sources(demoapi
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(tmq
|
target_link_libraries(tmq
|
||||||
taos
|
taos_static
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(tstream
|
target_link_libraries(tstream
|
||||||
taos
|
taos_static
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(demoapi
|
target_link_libraries(demoapi
|
||||||
taos
|
taos_static
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(tmq
|
target_include_directories(tmq
|
||||||
|
|
|
@ -39,7 +39,7 @@ int32_t taosMemorySize(void *ptr);
|
||||||
#define taosMemoryFreeClear(ptr) \
|
#define taosMemoryFreeClear(ptr) \
|
||||||
do { \
|
do { \
|
||||||
if (ptr) { \
|
if (ptr) { \
|
||||||
taosMemoryFree((void*)ptr); \
|
taosMemoryFree((void *)ptr); \
|
||||||
(ptr) = NULL; \
|
(ptr) = NULL; \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# is required to use systemd to manage services at boot
|
# is required to use systemd to manage services at boot
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
# set -x
|
#set -x
|
||||||
|
|
||||||
# -----------------------Variables definition
|
# -----------------------Variables definition
|
||||||
source_dir=$1
|
source_dir=$1
|
||||||
|
@ -19,34 +19,46 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Dynamic directory
|
# Dynamic directory
|
||||||
|
clientName="taos"
|
||||||
|
serverName="taosd"
|
||||||
|
logDir="/var/log/taos"
|
||||||
|
dataDir="/var/lib/taos"
|
||||||
|
configDir="/etc/taos"
|
||||||
|
configFile="taos.cfg"
|
||||||
|
installDir="/usr/local/taos"
|
||||||
|
productName="TDengine"
|
||||||
|
emailName="taosdata.com"
|
||||||
|
uninstallScript="rmtaos"
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if [ "$osType" != "Darwin" ]; then
|
||||||
data_dir="/var/lib/taos"
|
data_dir=${dataDir}
|
||||||
log_dir="/var/log/taos"
|
log_dir=${logDir}
|
||||||
|
|
||||||
cfg_install_dir="/etc/taos"
|
cfg_install_dir=${configDir}
|
||||||
|
|
||||||
bin_link_dir="/usr/bin"
|
bin_link_dir="/usr/bin"
|
||||||
lib_link_dir="/usr/lib"
|
lib_link_dir="/usr/lib"
|
||||||
lib64_link_dir="/usr/lib64"
|
lib64_link_dir="/usr/lib64"
|
||||||
inc_link_dir="/usr/include"
|
inc_link_dir="/usr/include"
|
||||||
|
|
||||||
install_main_dir="/usr/local/taos"
|
install_main_dir=${installDir}
|
||||||
|
|
||||||
bin_dir="/usr/local/taos/bin"
|
bin_dir="${installDir}/bin"
|
||||||
else
|
else
|
||||||
data_dir="/usr/local/var/lib/taos"
|
data_dir="/usr/local${dataDir}"
|
||||||
log_dir="/usr/local/var/log/taos"
|
log_dir="/usr/local${logDir}"
|
||||||
|
|
||||||
cfg_install_dir="/usr/local/etc/taos"
|
cfg_install_dir="/usr/local${configDir}"
|
||||||
|
|
||||||
bin_link_dir="/usr/local/bin"
|
bin_link_dir="/usr/local/bin"
|
||||||
lib_link_dir="/usr/local/lib"
|
lib_link_dir="/usr/local/lib"
|
||||||
inc_link_dir="/usr/local/include"
|
inc_link_dir="/usr/local/include"
|
||||||
|
|
||||||
install_main_dir="/usr/local/Cellar/tdengine/${verNumber}"
|
install_main_dir="/usr/local/Cellar/tdengine/${verNumber}"
|
||||||
|
install_main_2_dir="/usr/local/Cellar/tdengine@${verNumber}/${verNumber}"
|
||||||
|
|
||||||
bin_dir="/usr/local/Cellar/tdengine/${verNumber}/bin"
|
bin_dir="/usr/local/Cellar/tdengine/${verNumber}/bin"
|
||||||
|
bin_2_dir="/usr/local/Cellar/tdengine@${verNumber}/${verNumber}/bin"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
service_config_dir="/etc/systemd/system"
|
service_config_dir="/etc/systemd/system"
|
||||||
|
@ -60,22 +72,24 @@ NC='\033[0m'
|
||||||
|
|
||||||
csudo=""
|
csudo=""
|
||||||
|
|
||||||
|
service_mod=2
|
||||||
|
os_type=0
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if [ "$osType" != "Darwin" ]; then
|
||||||
if command -v sudo > /dev/null; then
|
if command -v sudo >/dev/null; then
|
||||||
csudo="sudo"
|
csudo="sudo "
|
||||||
fi
|
fi
|
||||||
initd_mod=0
|
initd_mod=0
|
||||||
service_mod=2
|
if pidof systemd &>/dev/null; then
|
||||||
if pidof systemd &> /dev/null; then
|
|
||||||
service_mod=0
|
service_mod=0
|
||||||
elif $(which service &> /dev/null); then
|
elif $(which service &>/dev/null); then
|
||||||
service_mod=1
|
service_mod=1
|
||||||
service_config_dir="/etc/init.d"
|
service_config_dir="/etc/init.d"
|
||||||
if $(which chkconfig &> /dev/null); then
|
if $(which chkconfig &>/dev/null); then
|
||||||
initd_mod=1
|
initd_mod=1
|
||||||
elif $(which insserv &> /dev/null); then
|
elif $(which insserv &>/dev/null); then
|
||||||
initd_mod=2
|
initd_mod=2
|
||||||
elif $(which update-rc.d &> /dev/null); then
|
elif $(which update-rc.d &>/dev/null); then
|
||||||
initd_mod=3
|
initd_mod=3
|
||||||
else
|
else
|
||||||
service_mod=2
|
service_mod=2
|
||||||
|
@ -89,89 +103,118 @@ if [ "$osType" != "Darwin" ]; then
|
||||||
#osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
|
#osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
|
||||||
osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2)
|
osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2)
|
||||||
#echo "osinfo: ${osinfo}"
|
#echo "osinfo: ${osinfo}"
|
||||||
os_type=0
|
if echo $osinfo | grep -qwi "ubuntu"; then
|
||||||
if echo $osinfo | grep -qwi "ubuntu" ; then
|
|
||||||
echo "this is ubuntu system"
|
echo "this is ubuntu system"
|
||||||
os_type=1
|
os_type=1
|
||||||
elif echo $osinfo | grep -qwi "debian" ; then
|
elif echo $osinfo | grep -qwi "debian"; then
|
||||||
echo "this is debian system"
|
echo "this is debian system"
|
||||||
os_type=1
|
os_type=1
|
||||||
elif echo $osinfo | grep -qwi "Kylin" ; then
|
elif echo $osinfo | grep -qwi "Kylin"; then
|
||||||
echo "this is Kylin system"
|
echo "this is Kylin system"
|
||||||
os_type=1
|
os_type=1
|
||||||
elif echo $osinfo | grep -qwi "centos" ; then
|
elif echo $osinfo | grep -qwi "centos"; then
|
||||||
echo "this is centos system"
|
echo "this is centos system"
|
||||||
os_type=2
|
os_type=2
|
||||||
elif echo $osinfo | grep -qwi "fedora" ; then
|
elif echo $osinfo | grep -qwi "fedora"; then
|
||||||
echo "this is fedora system"
|
echo "this is fedora system"
|
||||||
os_type=2
|
os_type=2
|
||||||
else
|
else
|
||||||
echo "${osinfo}: This is an officially unverified linux system, If there are any problems with the installation and operation, "
|
echo "${osinfo}: This is an officially unverified linux system, If there are any problems with the installation and operation, "
|
||||||
echo "please feel free to contact taosdata.com for support."
|
echo "please feel free to contact ${emailName} for support."
|
||||||
os_type=1
|
os_type=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function kill_taosd() {
|
function kill_taosadapter() {
|
||||||
pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}')
|
pid=$(ps -ef | grep "taosadapter" | grep -v "grep" | awk '{print $2}')
|
||||||
if [ -n "$pid" ]; then
|
if [ -n "$pid" ]; then
|
||||||
${csudo} kill -9 $pid || :
|
${csudo}kill -9 $pid || :
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function kill_taosd() {
|
||||||
|
ps -ef | grep ${serverName}
|
||||||
|
pid=$(ps -ef | grep -w ${serverName} | grep -v "grep" | awk '{print $2}')
|
||||||
|
if [ -n "$pid" ]; then
|
||||||
|
${csudo}kill -9 $pid || :
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_main_path() {
|
function install_main_path() {
|
||||||
#create install main dir and all sub dir
|
#create install main dir and all sub dir
|
||||||
${csudo} rm -rf ${install_main_dir} || :
|
|
||||||
${csudo} mkdir -p ${install_main_dir}
|
|
||||||
${csudo} mkdir -p ${install_main_dir}/cfg
|
|
||||||
${csudo} mkdir -p ${install_main_dir}/bin
|
|
||||||
${csudo} mkdir -p ${install_main_dir}/connector
|
|
||||||
${csudo} mkdir -p ${install_main_dir}/driver
|
|
||||||
${csudo} mkdir -p ${install_main_dir}/examples
|
|
||||||
${csudo} mkdir -p ${install_main_dir}/include
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if [ "$osType" != "Darwin" ]; then
|
||||||
${csudo} mkdir -p ${install_main_dir}/init.d
|
${csudo}rm -rf ${install_main_dir} || :
|
||||||
|
${csudo}mkdir -p ${install_main_dir}
|
||||||
|
${csudo}mkdir -p ${install_main_dir}/cfg
|
||||||
|
${csudo}mkdir -p ${install_main_dir}/bin
|
||||||
|
# ${csudo}mkdir -p ${install_main_dir}/connector
|
||||||
|
${csudo}mkdir -p ${install_main_dir}/driver
|
||||||
|
${csudo}mkdir -p ${install_main_dir}/examples
|
||||||
|
${csudo}mkdir -p ${install_main_dir}/include
|
||||||
|
# ${csudo}mkdir -p ${install_main_dir}/init.d
|
||||||
|
else
|
||||||
|
${csudo}rm -rf ${install_main_dir} || ${csudo}rm -rf ${install_main_2_dir} || :
|
||||||
|
${csudo}mkdir -p ${install_main_dir} || ${csudo}mkdir -p ${install_main_2_dir}
|
||||||
|
${csudo}mkdir -p ${install_main_dir}/cfg || ${csudo}mkdir -p ${install_main_2_dir}/cfg
|
||||||
|
${csudo}mkdir -p ${install_main_dir}/bin || ${csudo}mkdir -p ${install_main_2_dir}/bin
|
||||||
|
# ${csudo}mkdir -p ${install_main_dir}/connector || ${csudo}mkdir -p ${install_main_2_dir}/connector
|
||||||
|
${csudo}mkdir -p ${install_main_dir}/driver || ${csudo}mkdir -p ${install_main_2_dir}/driver
|
||||||
|
${csudo}mkdir -p ${install_main_dir}/examples || ${csudo}mkdir -p ${install_main_2_dir}/examples
|
||||||
|
${csudo}mkdir -p ${install_main_dir}/include || ${csudo}mkdir -p ${install_main_2_dir}/include
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_bin() {
|
function install_bin() {
|
||||||
# Remove links
|
# Remove links
|
||||||
${csudo} rm -f ${bin_link_dir}/taos || :
|
${csudo}rm -f ${bin_link_dir}/${clientName} || :
|
||||||
${csudo} rm -f ${bin_link_dir}/taosd || :
|
${csudo}rm -f ${bin_link_dir}/${serverName} || :
|
||||||
${csudo} rm -f ${bin_link_dir}/taosdemo || :
|
${csudo}rm -f ${bin_link_dir}/taosadapter || :
|
||||||
${csudo} rm -f ${bin_link_dir}/taosdump || :
|
${csudo}rm -f ${bin_link_dir}/taosdemo || :
|
||||||
|
${csudo}rm -f ${bin_link_dir}/taosdump || :
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if [ "$osType" != "Darwin" ]; then
|
||||||
${csudo} rm -f ${bin_link_dir}/perfMonitor || :
|
${csudo}rm -f ${bin_link_dir}/perfMonitor || :
|
||||||
${csudo} rm -f ${bin_link_dir}/set_core || :
|
${csudo}rm -f ${bin_link_dir}/set_core || :
|
||||||
${csudo} rm -f ${bin_link_dir}/rmtaos || :
|
${csudo}rm -f ${bin_link_dir}/run_taosd_and_taosadapter.sh || :
|
||||||
fi
|
${csudo}rm -f ${bin_link_dir}/${uninstallScript} || :
|
||||||
|
|
||||||
${csudo} cp -r ${binary_dir}/build/bin/* ${install_main_dir}/bin || :
|
${csudo}cp -r ${binary_dir}/build/bin/${clientName} ${install_main_dir}/bin || :
|
||||||
${csudo} cp -r ${script_dir}/taosd-dump-cfg.gdb ${install_main_dir}/bin || :
|
[ -f ${binary_dir}/build/bin/taosBenchmark ] && ${csudo}cp -r ${binary_dir}/build/bin/taosBenchmark ${install_main_dir}/bin || :
|
||||||
|
[ -f ${install_main_dir}/bin/taosBenchmark ] && ${csudo}ln -sf ${install_main_dir}/bin/taosBenchmark ${install_main_dir}/bin/taosdemo || :
|
||||||
|
[ -f ${binary_dir}/build/bin/taosdump ] && ${csudo}cp -r ${binary_dir}/build/bin/taosdump ${install_main_dir}/bin || :
|
||||||
|
[ -f ${binary_dir}/build/bin/taosadapter ] && ${csudo}cp -r ${binary_dir}/build/bin/taosadapter ${install_main_dir}/bin || :
|
||||||
|
${csudo}cp -r ${binary_dir}/build/bin/${serverName} ${install_main_dir}/bin || :
|
||||||
|
${csudo}cp -r ${binary_dir}/build/bin/tarbitrator ${install_main_dir}/bin || :
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
${csudo}cp -r ${script_dir}/taosd-dump-cfg.gdb ${install_main_dir}/bin || :
|
||||||
${csudo} cp -r ${script_dir}/remove.sh ${install_main_dir}/bin || :
|
${csudo}cp -r ${script_dir}/remove.sh ${install_main_dir}/bin || :
|
||||||
${csudo} cp -r ${script_dir}/set_core.sh ${install_main_dir}/bin || :
|
${csudo}cp -r ${script_dir}/set_core.sh ${install_main_dir}/bin || :
|
||||||
${csudo} cp -r ${script_dir}/startPre.sh ${install_main_dir}/bin || :
|
${csudo}cp -r ${script_dir}/run_taosd_and_taosadapter.sh ${install_main_dir}/bin || :
|
||||||
else
|
${csudo}cp -r ${script_dir}/startPre.sh ${install_main_dir}/bin || :
|
||||||
${csudo} cp -r ${script_dir}/remove_client.sh ${install_main_dir}/bin || :
|
|
||||||
fi
|
|
||||||
${csudo} chmod 0555 ${install_main_dir}/bin/* || :
|
|
||||||
|
|
||||||
|
${csudo}chmod 0555 ${install_main_dir}/bin/*
|
||||||
#Make link
|
#Make link
|
||||||
[ -x ${install_main_dir}/bin/taos ] && ${csudo} ln -s ${install_main_dir}/bin/taos ${bin_link_dir}/taos || :
|
[ -x ${install_main_dir}/bin/${clientName} ] && ${csudo}ln -s ${install_main_dir}/bin/${clientName} ${bin_link_dir}/${clientName} || :
|
||||||
[ -x ${install_main_dir}/bin/taosd ] && ${csudo} ln -s ${install_main_dir}/bin/taosd ${bin_link_dir}/taosd || :
|
[ -x ${install_main_dir}/bin/${serverName} ] && ${csudo}ln -s ${install_main_dir}/bin/${serverName} ${bin_link_dir}/${serverName} || :
|
||||||
[ -x ${install_main_dir}/bin/taosdump ] && ${csudo} ln -s ${install_main_dir}/bin/taosdump ${bin_link_dir}/taosdump || :
|
[ -x ${install_main_dir}/bin/taosadapter ] && ${csudo}ln -s ${install_main_dir}/bin/taosadapter ${bin_link_dir}/taosadapter || :
|
||||||
[ -x ${install_main_dir}/bin/taosdemo ] && ${csudo} ln -s ${install_main_dir}/bin/taosdemo ${bin_link_dir}/taosdemo || :
|
[ -x ${install_main_dir}/bin/taosdump ] && ${csudo}ln -s ${install_main_dir}/bin/taosdump ${bin_link_dir}/taosdump || :
|
||||||
|
[ -x ${install_main_dir}/bin/taosdemo ] && ${csudo}ln -s ${install_main_dir}/bin/taosdemo ${bin_link_dir}/taosdemo || :
|
||||||
|
[ -x ${install_main_dir}/bin/perfMonitor ] && ${csudo}ln -s ${install_main_dir}/bin/perfMonitor ${bin_link_dir}/perfMonitor || :
|
||||||
|
[ -x ${install_main_dir}/set_core.sh ] && ${csudo}ln -s ${install_main_dir}/bin/set_core.sh ${bin_link_dir}/set_core || :
|
||||||
|
[ -x ${install_main_dir}/run_taosd_and_taosadapter.sh ] && ${csudo}ln -s ${install_main_dir}/bin/run_taosd_and_taosadapter.sh ${bin_link_dir}/run_taosd_and_taosadapter.sh || :
|
||||||
|
[ -x ${install_main_dir}/bin/remove.sh ] && ${csudo}ln -s ${install_main_dir}/bin/remove.sh ${bin_link_dir}/${uninstallScript} || :
|
||||||
|
else
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
${csudo}cp -r ${binary_dir}/build/bin/* ${install_main_dir}/bin || ${csudo}cp -r ${binary_dir}/build/bin/* ${install_main_2_dir}/bin || :
|
||||||
[ -x ${install_main_dir}/bin/perfMonitor ] && ${csudo} ln -s ${install_main_dir}/bin/perfMonitor ${bin_link_dir}/perfMonitor || :
|
${csudo}cp -r ${script_dir}/taosd-dump-cfg.gdb ${install_main_dir}/bin || ${csudo}cp -r ${script_dir}/taosd-dump-cfg.gdb ${install_main_2_dir} || :
|
||||||
[ -x ${install_main_dir}/set_core.sh ] && ${csudo} ln -s ${install_main_dir}/bin/set_core.sh ${bin_link_dir}/set_core || :
|
${csudo}cp -r ${script_dir}/remove_client.sh ${install_main_dir}/bin || ${csudo}cp -r ${script_dir}/remove_client.sh ${install_main_2_dir}/bin || :
|
||||||
fi
|
${csudo}chmod 0555 ${install_main_dir}/bin/* || ${csudo}chmod 0555 ${install_main_2_dir}/bin/*
|
||||||
|
#Make link
|
||||||
if [ "$osType" != "Darwin" ]; then
|
[ -x ${install_main_dir}/bin/${clientName} ] || [ -x ${install_main_2_dir}/bin/${clientName} ] && ${csudo}ln -s ${install_main_dir}/bin/${clientName} ${bin_link_dir}/${clientName} || ${csudo}ln -s ${install_main_2_dir}/bin/${clientName} || :
|
||||||
[ -x ${install_main_dir}/bin/remove.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove.sh ${bin_link_dir}/rmtaos || :
|
[ -x ${install_main_dir}/bin/${serverName} ] || [ -x ${install_main_2_dir}/bin/${serverName} ] && ${csudo}ln -s ${install_main_dir}/bin/${serverName} ${bin_link_dir}/${serverName} || ${csudo}ln -s ${install_main_2_dir}/bin/${serverName} || :
|
||||||
|
[ -x ${install_main_dir}/bin/taosadapter ] || [ -x ${install_main_2_dir}/bin/taosadapter ] && ${csudo}ln -s ${install_main_dir}/bin/taosadapter ${bin_link_dir}/taosadapter || ${csudo}ln -s ${install_main_2_dir}/bin/taosadapter || :
|
||||||
|
[ -x ${install_main_dir}/bin/taosdump ] || [ -x ${install_main_2_dir}/bin/taosdump ] && ${csudo}ln -s ${install_main_dir}/bin/taosdump ${bin_link_dir}/taosdump || ln -s ${install_main_2_dir}/bin/taosdump ${bin_link_dir}/taosdump || :
|
||||||
|
[ -x ${install_main_dir}/bin/taosdemo ] || [ -x ${install_main_2_dir}/bin/taosdemo ] && ${csudo}ln -s ${install_main_dir}/bin/taosdemo ${bin_link_dir}/taosdemo || ln -s ${install_main_2_dir}/bin/taosdemo ${bin_link_dir}/taosdemo || :
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,161 +222,245 @@ function install_jemalloc() {
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if [ "$osType" != "Darwin" ]; then
|
||||||
/usr/bin/install -c -d /usr/local/bin
|
/usr/bin/install -c -d /usr/local/bin
|
||||||
|
|
||||||
if [ -f ${binary_dir}/build/bin/jemalloc-config ]; then
|
if [ -f "${binary_dir}/build/bin/jemalloc-config" ]; then
|
||||||
/usr/bin/install -c -m 755 ${binary_dir}/build/bin/jemalloc-config /usr/local/bin
|
${csudo}/usr/bin/install -c -m 755 ${binary_dir}/build/bin/jemalloc-config /usr/local/bin
|
||||||
fi
|
fi
|
||||||
if [ -f ${binary_dir}/build/bin/jemalloc.sh ]; then
|
if [ -f "${binary_dir}/build/bin/jemalloc.sh" ]; then
|
||||||
/usr/bin/install -c -m 755 ${binary_dir}/build/bin/jemalloc.sh /usr/local/bin
|
${csudo}/usr/bin/install -c -m 755 ${binary_dir}/build/bin/jemalloc.sh /usr/local/bin
|
||||||
fi
|
fi
|
||||||
if [ -f ${binary_dir}/build/bin/jeprof ]; then
|
if [ -f "${binary_dir}/build/bin/jeprof" ]; then
|
||||||
/usr/bin/install -c -m 755 ${binary_dir}/build/bin/jeprof /usr/local/bin
|
${csudo}/usr/bin/install -c -m 755 ${binary_dir}/build/bin/jeprof /usr/local/bin
|
||||||
fi
|
fi
|
||||||
if [ -f ${binary_dir}/build/include/jemalloc/jemalloc.h ]; then
|
if [ -f "${binary_dir}/build/include/jemalloc/jemalloc.h" ]; then
|
||||||
/usr/bin/install -c -d /usr/local/include/jemalloc
|
${csudo}/usr/bin/install -c -d /usr/local/include/jemalloc
|
||||||
/usr/bin/install -c -m 644 ${binary_dir}/build/include/jemalloc/jemalloc.h /usr/local/include/jemalloc
|
${csudo}/usr/bin/install -c -m 644 ${binary_dir}/build/include/jemalloc/jemalloc.h \
|
||||||
|
/usr/local/include/jemalloc
|
||||||
fi
|
fi
|
||||||
if [ -f ${binary_dir}/build/lib/libjemalloc.so.2 ]; then
|
if [ -f "${binary_dir}/build/lib/libjemalloc.so.2" ]; then
|
||||||
/usr/bin/install -c -d /usr/local/lib
|
${csudo}/usr/bin/install -c -d /usr/local/lib
|
||||||
/usr/bin/install -c -m 755 ${binary_dir}/build/lib/libjemalloc.so.2 /usr/local/lib
|
${csudo}/usr/bin/install -c -m 755 ${binary_dir}/build/lib/libjemalloc.so.2 /usr/local/lib
|
||||||
ln -sf libjemalloc.so.2 /usr/local/lib/libjemalloc.so
|
${csudo}ln -sf libjemalloc.so.2 /usr/local/lib/libjemalloc.so
|
||||||
/usr/bin/install -c -d /usr/local/lib
|
${csudo}/usr/bin/install -c -d /usr/local/lib
|
||||||
if [ -f ${binary_dir}/build/lib/libjemalloc.a ]; then
|
[ -f ${binary_dir}/build/lib/libjemalloc.a ] &&
|
||||||
/usr/bin/install -c -m 755 ${binary_dir}/build/lib/libjemalloc.a /usr/local/lib
|
${csudo}/usr/bin/install -c -m 755 ${binary_dir}/build/lib/libjemalloc.a /usr/local/lib
|
||||||
|
[ -f ${binary_dir}/build/lib/libjemalloc_pic.a ] &&
|
||||||
|
${csudo}/usr/bin/install -c -m 755 ${binary_dir}/build/lib/libjemalloc_pic.a /usr/local/lib
|
||||||
|
if [ -f "${binary_dir}/build/lib/pkgconfig/jemalloc.pc" ]; then
|
||||||
|
${csudo}/usr/bin/install -c -d /usr/local/lib/pkgconfig
|
||||||
|
${csudo}/usr/bin/install -c -m 644 ${binary_dir}/build/lib/pkgconfig/jemalloc.pc \
|
||||||
|
/usr/local/lib/pkgconfig
|
||||||
fi
|
fi
|
||||||
if [ -f ${binary_dir}/build/lib/libjemalloc_pic.a ]; then
|
|
||||||
/usr/bin/install -c -m 755 ${binary_dir}/build/lib/libjemalloc_pic.a /usr/local/lib
|
|
||||||
fi
|
|
||||||
if [ -f ${binary_dir}/build/lib/pkgconfig/jemalloc.pc ]; then
|
|
||||||
/usr/bin/install -c -d /usr/local/lib/pkgconfig
|
|
||||||
/usr/bin/install -c -m 644 ${binary_dir}/build/lib/pkgconfig/jemalloc.pc /usr/local/lib/pkgconfig
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -f ${binary_dir}/build/share/doc/jemalloc/jemalloc.html ]; then
|
|
||||||
/usr/bin/install -c -d /usr/local/share/doc/jemalloc
|
|
||||||
/usr/bin/install -c -m 644 ${binary_dir}/build/share/doc/jemalloc/jemalloc.html /usr/local/share/doc/jemalloc
|
|
||||||
fi
|
|
||||||
if [ -f ${binary_dir}/build/share/man/man3/jemalloc.3 ]; then
|
|
||||||
/usr/bin/install -c -d /usr/local/share/man/man3
|
|
||||||
/usr/bin/install -c -m 644 ${binary_dir}/build/share/man/man3/jemalloc.3 /usr/local/share/man/man3
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d /etc/ld.so.conf.d ]; then
|
if [ -d /etc/ld.so.conf.d ]; then
|
||||||
echo "/usr/local/lib" | ${csudo} tee /etc/ld.so.conf.d/jemalloc.conf
|
echo "/usr/local/lib" | ${csudo}tee /etc/ld.so.conf.d/jemalloc.conf >/dev/null || echo -e "failed to write /etc/ld.so.conf.d/jemalloc.conf"
|
||||||
${csudo} ldconfig
|
${csudo}ldconfig
|
||||||
else
|
else
|
||||||
echo "/etc/ld.so.conf.d not found!"
|
echo "/etc/ld.so.conf.d not found!"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
if [ -f "${binary_dir}/build/share/doc/jemalloc/jemalloc.html" ]; then
|
||||||
|
${csudo}/usr/bin/install -c -d /usr/local/share/doc/jemalloc
|
||||||
|
${csudo}/usr/bin/install -c -m 644 ${binary_dir}/build/share/doc/jemalloc/jemalloc.html \
|
||||||
|
/usr/local/share/doc/jemalloc
|
||||||
|
fi
|
||||||
|
if [ -f "${binary_dir}/build/share/man/man3/jemalloc.3" ]; then
|
||||||
|
${csudo}/usr/bin/install -c -d /usr/local/share/man/man3
|
||||||
|
${csudo}/usr/bin/install -c -m 644 ${binary_dir}/build/share/man/man3/jemalloc.3 \
|
||||||
|
/usr/local/share/man/man3
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_avro() {
|
||||||
|
if [ "$osType" != "Darwin" ]; then
|
||||||
|
if [ -f "${binary_dir}/build/$1/libavro.so.23.0.0" ] && [ -d /usr/local/$1 ]; then
|
||||||
|
${csudo}/usr/bin/install -c -d /usr/local/$1
|
||||||
|
${csudo}/usr/bin/install -c -m 755 ${binary_dir}/build/$1/libavro.so.23.0.0 /usr/local/$1
|
||||||
|
${csudo}ln -sf libavro.so.23.0.0 /usr/local/$1/libavro.so.23
|
||||||
|
${csudo}ln -sf libavro.so.23 /usr/local/$1/libavro.so
|
||||||
|
${csudo}/usr/bin/install -c -d /usr/local/$1
|
||||||
|
[ -f ${binary_dir}/build/$1/libavro.a ] &&
|
||||||
|
${csudo}/usr/bin/install -c -m 755 ${binary_dir}/build/$1/libavro.a /usr/local/$1
|
||||||
|
|
||||||
|
if [ -d /etc/ld.so.conf.d ]; then
|
||||||
|
echo "/usr/local/$1" | ${csudo}tee /etc/ld.so.conf.d/libavro.conf >/dev/null || echo -e "failed to write /etc/ld.so.conf.d/libavro.conf"
|
||||||
|
${csudo}ldconfig
|
||||||
|
else
|
||||||
|
echo "/etc/ld.so.conf.d not found!"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_lib() {
|
function install_lib() {
|
||||||
# Remove links
|
# Remove links
|
||||||
${csudo} rm -f ${lib_link_dir}/libtaos.* || :
|
${csudo}rm -f ${lib_link_dir}/libtaos.* || :
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if [ "$osType" != "Darwin" ]; then
|
||||||
${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
|
${csudo}rm -f ${lib64_link_dir}/libtaos.* || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if [ "$osType" != "Darwin" ]; then
|
||||||
${csudo} cp ${binary_dir}/build/lib/libtaos.so ${install_main_dir}/driver/libtaos.so.${verNumber} && ${csudo} chmod 777 ${install_main_dir}/driver/*
|
${csudo}cp ${binary_dir}/build/lib/libtaos.so.${verNumber} \
|
||||||
${csudo} ln -sf ${install_main_dir}/driver/libtaos.* ${lib_link_dir}/libtaos.so.1
|
${install_main_dir}/driver &&
|
||||||
${csudo} ln -sf ${lib_link_dir}/libtaos.so.1 ${lib_link_dir}/libtaos.so
|
${csudo}chmod 777 ${install_main_dir}/driver/*
|
||||||
|
|
||||||
|
${csudo}ln -sf ${install_main_dir}/driver/libtaos.* ${lib_link_dir}/libtaos.so.1
|
||||||
|
${csudo}ln -sf ${lib_link_dir}/libtaos.so.1 ${lib_link_dir}/libtaos.so
|
||||||
|
|
||||||
if [ -d "${lib64_link_dir}" ]; then
|
if [ -d "${lib64_link_dir}" ]; then
|
||||||
${csudo} ln -sf ${install_main_dir}/driver/libtaos.* ${lib64_link_dir}/libtaos.so.1
|
${csudo}ln -sf ${install_main_dir}/driver/libtaos.* ${lib64_link_dir}/libtaos.so.1
|
||||||
${csudo} ln -sf ${lib64_link_dir}/libtaos.so.1 ${lib64_link_dir}/libtaos.so
|
${csudo}ln -sf ${lib64_link_dir}/libtaos.so.1 ${lib64_link_dir}/libtaos.so
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
${csudo} cp -Rf ${binary_dir}/build/lib/libtaos.${verNumber}.dylib ${install_main_dir}/driver && ${csudo} chmod 777 ${install_main_dir}/driver/*
|
${csudo}cp -Rf ${binary_dir}/build/lib/libtaos.${verNumber}.dylib \
|
||||||
|
${install_main_dir}/driver ||
|
||||||
|
${csudo}cp -Rf ${binary_dir}/build/lib/libtaos.${verNumber}.dylib \
|
||||||
|
${install_main_2_dir}/driver &&
|
||||||
|
${csudo}chmod 777 ${install_main_dir}/driver/* ||
|
||||||
|
${csudo}chmod 777 ${install_main_2_dir}/driver/*
|
||||||
|
|
||||||
${csudo} ln -sf ${install_main_dir}/driver/libtaos.* ${lib_link_dir}/libtaos.1.dylib
|
${csudo}ln -sf ${install_main_dir}/driver/libtaos.* \
|
||||||
${csudo} ln -sf ${lib_link_dir}/libtaos.1.dylib ${lib_link_dir}/libtaos.dylib
|
${install_main_dir}/driver/libtaos.1.dylib ||
|
||||||
|
${csudo}ln -sf ${install_main_2_dir}/driver/libtaos.* \
|
||||||
|
${install_main_2_dir}/driver/libtaos.1.dylib || :
|
||||||
|
|
||||||
|
${csudo}ln -sf ${install_main_dir}/driver/libtaos.1.dylib \
|
||||||
|
${install_main_dir}/driver/libtaos.dylib ||
|
||||||
|
${csudo}ln -sf ${install_main_2_dir}/driver/libtaos.1.dylib \
|
||||||
|
${install_main_2_dir}/driver/libtaos.dylib || :
|
||||||
|
|
||||||
|
${csudo}ln -sf ${install_main_dir}/driver/libtaos.${verNumber}.dylib \
|
||||||
|
${lib_link_dir}/libtaos.1.dylib ||
|
||||||
|
${csudo}ln -sf ${install_main_2_dir}/driver/libtaos.${verNumber}.dylib \
|
||||||
|
${lib_link_dir}/libtaos.1.dylib || :
|
||||||
|
|
||||||
|
${csudo}ln -sf ${lib_link_dir}/libtaos.1.dylib ${lib_link_dir}/libtaos.dylib || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
install_jemalloc
|
install_jemalloc
|
||||||
|
install_avro lib
|
||||||
|
install_avro lib64
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if [ "$osType" != "Darwin" ]; then
|
||||||
${csudo} ldconfig
|
${csudo}ldconfig
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_header() {
|
function install_header() {
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if [ "$osType" != "Darwin" ]; then
|
||||||
${csudo} rm -f ${inc_link_dir}/taos.h ${inc_link_dir}/taoserror.h || :
|
${csudo}rm -f ${inc_link_dir}/taos.h ${inc_link_dir}/taosdef.h ${inc_link_dir}/taoserror.h || :
|
||||||
fi
|
${csudo}cp -f ${source_dir}/include/client/taos.h ${source_dir}/include/common/taosdef.h ${source_dir}/include/util/taoserror.h \
|
||||||
${csudo} cp -f ${source_dir}/include/client/taos.h ${source_dir}/include/util/taoserror.h ${install_main_dir}/include && ${csudo} chmod 644 ${install_main_dir}/include/*
|
${install_main_dir}/include && ${csudo}chmod 644 ${install_main_dir}/include/*
|
||||||
if [ "$osType" != "Darwin" ]; then
|
${csudo}ln -s ${install_main_dir}/include/taos.h ${inc_link_dir}/taos.h
|
||||||
${csudo} ln -s ${install_main_dir}/include/taos.h ${inc_link_dir}/taos.h
|
${csudo}ln -s ${install_main_dir}/include/taosdef.h ${inc_link_dir}/taosdef.h
|
||||||
${csudo} ln -s ${install_main_dir}/include/taoserror.h ${inc_link_dir}/taoserror.h
|
${csudo}ln -s ${install_main_dir}/include/taoserror.h ${inc_link_dir}/taoserror.h
|
||||||
|
else
|
||||||
|
${csudo}cp -f ${source_dir}/include/client/taos.h ${source_dir}/include/common/taosdef.h ${source_dir}/include/util/taoserror.h \
|
||||||
|
${install_main_dir}/include ||
|
||||||
|
${csudo}cp -f ${source_dir}/include/client/taos.h ${source_dir}/include/common/taosdef.h ${source_dir}/include/util/taoserror.h \
|
||||||
|
${install_main_2_dir}/include &&
|
||||||
|
${csudo}chmod 644 ${install_main_dir}/include/* ||
|
||||||
|
${csudo}chmod 644 ${install_main_2_dir}/include/*
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_config() {
|
function install_config() {
|
||||||
#${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || :
|
if [ ! -f ${cfg_install_dir}/${configFile} ]; then
|
||||||
|
${csudo}mkdir -p ${cfg_install_dir}
|
||||||
if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
|
[ -f ${script_dir}/../cfg/${configFile} ] &&
|
||||||
${csudo} mkdir -p ${cfg_install_dir}
|
${csudo}cp ${script_dir}/../cfg/${configFile} ${cfg_install_dir} || :
|
||||||
[ -f ${script_dir}/../cfg/taos.cfg ] &&
|
${csudo}chmod 644 ${cfg_install_dir}/${configFile}
|
||||||
${csudo} cp ${script_dir}/../cfg/taos.cfg ${cfg_install_dir} || :
|
${csudo}cp -f ${script_dir}/../cfg/${configFile} \
|
||||||
${csudo} chmod 644 ${cfg_install_dir}/*
|
${cfg_install_dir}/${configFile}.${verNumber} || :
|
||||||
|
${csudo}ln -s ${cfg_install_dir}/${configFile} \
|
||||||
|
${install_main_dir}/cfg/${configFile}
|
||||||
|
else
|
||||||
|
${csudo}cp -f ${script_dir}/../cfg/${configFile} \
|
||||||
|
${cfg_install_dir}/${configFile}.${verNumber} || :
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
${csudo} cp -f ${script_dir}/../cfg/taos.cfg ${install_main_dir}/cfg/taos.cfg.org || :
|
function install_taosadapter_config() {
|
||||||
|
if [ ! -f "${cfg_install_dir}/taosadapter.toml" ]; then
|
||||||
if [ "$osType" != "Darwin" ]; then ${csudo} ln -s ${cfg_install_dir}/taos.cfg ${install_main_dir}/cfg
|
${csudo}mkdir -p ${cfg_install_dir} || :
|
||||||
|
[ -f ${binary_dir}/test/cfg/taosadapter.toml ] &&
|
||||||
|
${csudo}cp ${binary_dir}/test/cfg/taosadapter.toml ${cfg_install_dir} || :
|
||||||
|
[ -f ${cfg_install_dir}/taosadapter.toml ] &&
|
||||||
|
${csudo}chmod 644 ${cfg_install_dir}/taosadapter.toml || :
|
||||||
|
[ -f ${binary_dir}/test/cfg/taosadapter.toml ] &&
|
||||||
|
${csudo}cp -f ${binary_dir}/test/cfg/taosadapter.toml \
|
||||||
|
${cfg_install_dir}/taosadapter.toml.${verNumber} || :
|
||||||
|
[ -f ${cfg_install_dir}/taosadapter.toml ] &&
|
||||||
|
${csudo}ln -s ${cfg_install_dir}/taosadapter.toml \
|
||||||
|
${install_main_dir}/cfg/taosadapter.toml || :
|
||||||
|
else
|
||||||
|
if [ -f "${binary_dir}/test/cfg/taosadapter.toml" ]; then
|
||||||
|
${csudo}cp -f ${binary_dir}/test/cfg/taosadapter.toml \
|
||||||
|
${cfg_install_dir}/taosadapter.toml.${verNumber} || :
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_log() {
|
function install_log() {
|
||||||
${csudo} rm -rf ${log_dir} || :
|
${csudo}rm -rf ${log_dir} || :
|
||||||
${csudo} mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
|
${csudo}mkdir -p ${log_dir} && ${csudo}chmod 777 ${log_dir}
|
||||||
${csudo} ln -s ${log_dir} ${install_main_dir}/log
|
if [ "$osType" != "Darwin" ]; then
|
||||||
|
${csudo}ln -s ${log_dir} ${install_main_dir}/log
|
||||||
|
else
|
||||||
|
${csudo}ln -s ${log_dir} ${install_main_dir}/log || ${csudo}ln -s ${log_dir} ${install_main_2_dir}/log
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_data() {
|
function install_data() {
|
||||||
${csudo} mkdir -p ${data_dir}
|
${csudo}mkdir -p ${data_dir}
|
||||||
${csudo} ln -s ${data_dir} ${install_main_dir}/data
|
if [ "$osType" != "Darwin" ]; then
|
||||||
|
${csudo}ln -s ${data_dir} ${install_main_dir}/data
|
||||||
|
else
|
||||||
|
${csudo}ln -s ${data_dir} ${install_main_dir}/data || ${csudo}ln -s ${data_dir} ${install_main_2_dir}/data
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_connector() {
|
function install_connector() {
|
||||||
if [ -d "${source_dir}/src/connector/grafanaplugin/dist" ]; then
|
|
||||||
${csudo} cp -rf ${source_dir}/src/connector/grafanaplugin/dist ${install_main_dir}/connector/grafanaplugin
|
|
||||||
else
|
|
||||||
echo "WARNING: grafanaplugin bundled dir not found, please check if want to use it!"
|
|
||||||
fi
|
|
||||||
if find ${source_dir}/src/connector/go -mindepth 1 -maxdepth 1 | read; then
|
if find ${source_dir}/src/connector/go -mindepth 1 -maxdepth 1 | read; then
|
||||||
${csudo} cp -r ${source_dir}/src/connector/go ${install_main_dir}/connector
|
${csudo}cp -r ${source_dir}/src/connector/go ${install_main_dir}/connector || :
|
||||||
else
|
else
|
||||||
echo "WARNING: go connector not found, please check if want to use it!"
|
echo "WARNING: go connector not found, please check if want to use it!"
|
||||||
fi
|
fi
|
||||||
${csudo} cp -rf ${source_dir}/src/connector/python ${install_main_dir}/connector || :
|
if [ "$osType" != "Darwin" ]; then
|
||||||
${csudo} cp ${binary_dir}/build/lib/*.jar ${install_main_dir}/connector &> /dev/null && ${csudo} chmod 777 ${install_main_dir}/connector/*.jar || echo &> /dev/null
|
${csudo}cp -rf ${source_dir}/src/connector/python ${install_main_dir}/connector || :
|
||||||
|
${csudo}cp ${binary_dir}/build/lib/*.jar ${install_main_dir}/connector &>/dev/null && ${csudo}chmod 777 ${install_main_dir}/connector/*.jar || echo &>/dev/null || :
|
||||||
|
else
|
||||||
|
${csudo}cp -rf ${source_dir}/src/connector/python ${install_main_dir}/connector || ${csudo}cp -rf ${source_dir}/src/connector/python ${install_main_2_dir}/connector || :
|
||||||
|
${csudo}cp ${binary_dir}/build/lib/*.jar ${install_main_dir}/connector &>/dev/null && ${csudo}chmod 777 ${install_main_dir}/connector/*.jar || echo &>/dev/null || :
|
||||||
|
${csudo}cp ${binary_dir}/build/lib/*.jar ${install_main_2_dir}/connector &>/dev/null && ${csudo}chmod 777 ${install_main_2_dir}/connector/*.jar || echo &>/dev/null || :
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_examples() {
|
function install_examples() {
|
||||||
${csudo} cp -rf ${source_dir}/tests/examples/* ${install_main_dir}/examples || :
|
if [ "$osType" != "Darwin" ]; then
|
||||||
|
${csudo}cp -rf ${source_dir}/examples/* ${install_main_dir}/examples || :
|
||||||
|
else
|
||||||
|
${csudo}cp -rf ${source_dir}/examples/* ${install_main_dir}/examples || ${csudo}cp -rf ${source_dir}/examples/* ${install_main_2_dir}/examples || :
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function clean_service_on_sysvinit() {
|
function clean_service_on_sysvinit() {
|
||||||
#restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
|
if pidof ${serverName} &>/dev/null; then
|
||||||
#${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || :
|
${csudo}service ${serverName} stop || :
|
||||||
|
|
||||||
if pidof taosd &> /dev/null; then
|
|
||||||
${csudo} service taosd stop || :
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ((${initd_mod}==1)); then
|
if ((${initd_mod} == 1)); then
|
||||||
${csudo} chkconfig --del taosd || :
|
${csudo}chkconfig --del ${serverName} || :
|
||||||
elif ((${initd_mod}==2)); then
|
elif ((${initd_mod} == 2)); then
|
||||||
${csudo} insserv -r taosd || :
|
${csudo}insserv -r ${serverName} || :
|
||||||
elif ((${initd_mod}==3)); then
|
elif ((${initd_mod} == 3)); then
|
||||||
${csudo} update-rc.d -f taosd remove || :
|
${csudo}update-rc.d -f ${serverName} remove || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
${csudo} rm -f ${service_config_dir}/taosd || :
|
${csudo}rm -f ${service_config_dir}/${serverName} || :
|
||||||
|
|
||||||
if $(which init &> /dev/null); then
|
if $(which init &>/dev/null); then
|
||||||
${csudo} init q || :
|
${csudo}init q || :
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -342,150 +469,139 @@ function install_service_on_sysvinit() {
|
||||||
|
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
# Install taosd service
|
if ((${os_type} == 1)); then
|
||||||
if ((${os_type}==1)); then
|
# ${csudo}cp -f ${script_dir}/../deb/${serverName} ${install_main_dir}/init.d
|
||||||
${csudo} cp -f ${script_dir}/../deb/taosd ${install_main_dir}/init.d || :
|
${csudo}cp ${script_dir}/../deb/${serverName} ${service_config_dir} && ${csudo}chmod a+x ${service_config_dir}/${serverName} || :
|
||||||
${csudo} cp ${script_dir}/../deb/taosd ${service_config_dir} && ${csudo} chmod a+x ${service_config_dir}/taosd || :
|
elif ((${os_type} == 2)); then
|
||||||
elif ((${os_type}==2)); then
|
# ${csudo}cp -f ${script_dir}/../rpm/${serverName} ${install_main_dir}/init.d
|
||||||
${csudo} cp -f ${script_dir}/../rpm/taosd ${install_main_dir}/init.d || :
|
${csudo}cp ${script_dir}/../rpm/${serverName} ${service_config_dir} && ${csudo}chmod a+x ${service_config_dir}/${serverName} || :
|
||||||
${csudo} cp ${script_dir}/../rpm/taosd ${service_config_dir} && ${csudo} chmod a+x ${service_config_dir}/taosd || :
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
|
if ((${initd_mod} == 1)); then
|
||||||
#${csudo} grep -q -F "$restart_config_str" /etc/inittab || ${csudo} bash -c "echo '${restart_config_str}' >> /etc/inittab"
|
${csudo}chkconfig --add ${serverName} || :
|
||||||
|
${csudo}chkconfig --level 2345 ${serverName} on || :
|
||||||
if ((${initd_mod}==1)); then
|
elif ((${initd_mod} == 2)); then
|
||||||
${csudo} chkconfig --add taosd || :
|
${csudo}insserv ${serverName} || :
|
||||||
${csudo} chkconfig --level 2345 taosd on || :
|
${csudo}insserv -d ${serverName} || :
|
||||||
elif ((${initd_mod}==2)); then
|
elif ((${initd_mod} == 3)); then
|
||||||
${csudo} insserv taosd || :
|
${csudo}update-rc.d ${serverName} defaults || :
|
||||||
${csudo} insserv -d taosd || :
|
|
||||||
elif ((${initd_mod}==3)); then
|
|
||||||
${csudo} update-rc.d taosd defaults || :
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function clean_service_on_systemd() {
|
function clean_service_on_systemd() {
|
||||||
taosd_service_config="${service_config_dir}/taosd.service"
|
taosd_service_config="${service_config_dir}/${serverName}.service"
|
||||||
|
|
||||||
if systemctl is-active --quiet taosd; then
|
if systemctl is-active --quiet ${serverName}; then
|
||||||
echo "TDengine is running, stopping it..."
|
echo "${productName} is running, stopping it..."
|
||||||
${csudo} systemctl stop taosd &> /dev/null || echo &> /dev/null
|
${csudo}systemctl stop ${serverName} &>/dev/null || echo &>/dev/null
|
||||||
fi
|
fi
|
||||||
${csudo} systemctl disable taosd &> /dev/null || echo &> /dev/null
|
${csudo}systemctl disable ${serverName} &>/dev/null || echo &>/dev/null
|
||||||
|
|
||||||
${csudo} rm -f ${taosd_service_config}
|
${csudo}rm -f ${taosd_service_config}
|
||||||
}
|
}
|
||||||
|
|
||||||
# taos:2345:respawn:/etc/init.d/taosd start
|
|
||||||
|
|
||||||
function install_service_on_systemd() {
|
function install_service_on_systemd() {
|
||||||
clean_service_on_systemd
|
clean_service_on_systemd
|
||||||
|
|
||||||
taosd_service_config="${service_config_dir}/taosd.service"
|
taosd_service_config="${service_config_dir}/${serverName}.service"
|
||||||
|
|
||||||
${csudo} bash -c "echo '[Unit]' >> ${taosd_service_config}"
|
${csudo}bash -c "echo '[Unit]' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'Description=TDengine server service' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'Description=${productName} server service' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'After=network-online.target' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'After=network-online.target' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'Wants=network-online.target' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'Wants=network-online.target' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo >> ${taosd_service_config}"
|
${csudo}bash -c "echo >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo '[Service]' >> ${taosd_service_config}"
|
${csudo}bash -c "echo '[Service]' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'Type=simple' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'Type=simple' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'ExecStart=/usr/bin/taosd' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'ExecStart=/usr/bin/${serverName}' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'ExecStartPre=/usr/local/taos/bin/startPre.sh' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'ExecStartPre=${installDir}/bin/startPre.sh' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'TimeoutStopSec=1000000s' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'TimeoutStopSec=1000000s' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'LimitNOFILE=infinity' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'LimitNOFILE=infinity' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'LimitNPROC=infinity' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'LimitNPROC=infinity' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'LimitCORE=infinity' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'LimitCORE=infinity' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'TimeoutStartSec=0' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'TimeoutStartSec=0' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'StandardOutput=null' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'StandardOutput=null' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'Restart=always' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'Restart=always' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'StartLimitBurst=3' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'StartLimitBurst=3' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'StartLimitInterval=60s' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'StartLimitInterval=60s' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo >> ${taosd_service_config}"
|
${csudo}bash -c "echo >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo '[Install]' >> ${taosd_service_config}"
|
${csudo}bash -c "echo '[Install]' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${taosd_service_config}"
|
${csudo}bash -c "echo 'WantedBy=multi-user.target' >> ${taosd_service_config}"
|
||||||
${csudo} systemctl enable taosd
|
${csudo}systemctl enable ${serverName}
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_taosadapter_service() {
|
||||||
|
if ((${service_mod} == 0)); then
|
||||||
|
[ -f ${binary_dir}/test/cfg/taosadapter.service ] &&
|
||||||
|
${csudo}cp ${binary_dir}/test/cfg/taosadapter.service \
|
||||||
|
${service_config_dir}/ || :
|
||||||
|
${csudo}systemctl daemon-reload
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_service() {
|
function install_service() {
|
||||||
if ((${service_mod}==0)); then
|
if ((${service_mod} == 0)); then
|
||||||
install_service_on_systemd
|
install_service_on_systemd
|
||||||
elif ((${service_mod}==1)); then
|
elif ((${service_mod} == 1)); then
|
||||||
install_service_on_sysvinit
|
install_service_on_sysvinit
|
||||||
else
|
else
|
||||||
# must manual stop taosd
|
|
||||||
kill_taosd
|
kill_taosd
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_TDengine() {
|
function update_TDengine() {
|
||||||
echo -e "${GREEN}Start to update TDengine...${NC}"
|
echo -e "${GREEN}Start to update ${productName}...${NC}"
|
||||||
# Stop the service if running
|
# Stop the service if running
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if pidof ${serverName} &>/dev/null; then
|
||||||
if pidof taosd &> /dev/null; then
|
if ((${service_mod} == 0)); then
|
||||||
if ((${service_mod}==0)); then
|
${csudo}systemctl stop ${serverName} || :
|
||||||
${csudo} systemctl stop taosd || :
|
elif ((${service_mod} == 1)); then
|
||||||
elif ((${service_mod}==1)); then
|
${csudo}service ${serverName} stop || :
|
||||||
${csudo} service taosd stop || :
|
|
||||||
else
|
else
|
||||||
|
kill_taosadapter
|
||||||
kill_taosd
|
kill_taosd
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
install_main_path
|
install_main_path
|
||||||
|
|
||||||
install_log
|
install_log
|
||||||
install_header
|
install_header
|
||||||
install_lib
|
install_lib
|
||||||
install_connector
|
# install_connector
|
||||||
install_examples
|
install_examples
|
||||||
install_bin
|
install_bin
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
|
||||||
install_service
|
install_service
|
||||||
fi
|
install_taosadapter_service
|
||||||
|
|
||||||
install_config
|
install_config
|
||||||
|
install_taosadapter_config
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
|
||||||
echo
|
echo
|
||||||
echo -e "\033[44;32;1mTDengine is updated successfully!${NC}"
|
echo -e "\033[44;32;1m${productName} is updated successfully!${NC}"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo -e "${GREEN_DARK}To configure TDengine ${NC}: edit /etc/taos/taos.cfg"
|
echo -e "${GREEN_DARK}To configure ${productName} ${NC}: edit ${configDir}/${configFile}"
|
||||||
if ((${service_mod}==0)); then
|
echo -e "${GREEN_DARK}To configure Taos Adapter (if has) ${NC}: edit ${configDir}/taosadapter.toml"
|
||||||
echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} systemctl start taosd${NC}"
|
if ((${service_mod} == 0)); then
|
||||||
elif ((${service_mod}==1)); then
|
echo -e "${GREEN_DARK}To start ${productName} ${NC}: ${csudo}systemctl start ${serverName}${NC}"
|
||||||
echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} service taosd start${NC}"
|
elif ((${service_mod} == 1)); then
|
||||||
|
echo -e "${GREEN_DARK}To start ${productName} ${NC}: ${csudo}service ${serverName} start${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${GREEN_DARK}To start TDengine ${NC}: ./taosd${NC}"
|
echo -e "${GREEN_DARK}To start Taos Adapter (if has)${NC}: taosadapter &${NC}"
|
||||||
|
echo -e "${GREEN_DARK}To start ${productName} ${NC}: ${serverName}${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell${NC}"
|
echo -e "${GREEN_DARK}To access ${productName} ${NC}: use ${GREEN_UNDERLINE}${clientName}${NC} in shell${NC}"
|
||||||
echo
|
echo
|
||||||
echo -e "\033[44;32;1mTDengine is updated successfully!${NC}"
|
echo -e "\033[44;32;1m${productName} is updated successfully!${NC}"
|
||||||
else
|
|
||||||
echo
|
|
||||||
echo -e "\033[44;32;1mTDengine Client is updated successfully!${NC}"
|
|
||||||
echo
|
|
||||||
|
|
||||||
echo -e "${GREEN_DARK}To access TDengine Client ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell${NC}"
|
|
||||||
echo
|
|
||||||
echo -e "\033[44;32;1mTDengine Client is updated successfully!${NC}"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_TDengine() {
|
function install_TDengine() {
|
||||||
# Start to install
|
# Start to install
|
||||||
if [ "$osType" != "Darwin" ]; then
|
echo -e "${GREEN}Start to install ${productName}...${NC}"
|
||||||
echo -e "${GREEN}Start to install TDEngine...${NC}"
|
|
||||||
else
|
|
||||||
echo -e "${GREEN}Start to install TDEngine Client ...${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
install_main_path
|
install_main_path
|
||||||
|
|
||||||
|
@ -493,46 +609,49 @@ function install_TDengine() {
|
||||||
install_log
|
install_log
|
||||||
install_header
|
install_header
|
||||||
install_lib
|
install_lib
|
||||||
install_connector
|
# install_connector
|
||||||
install_examples
|
install_examples
|
||||||
install_bin
|
install_bin
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
|
||||||
install_service
|
install_service
|
||||||
fi
|
install_taosadapter_service
|
||||||
|
|
||||||
install_config
|
install_config
|
||||||
|
install_taosadapter_config
|
||||||
|
|
||||||
if [ "$osType" != "Darwin" ]; then
|
|
||||||
# Ask if to start the service
|
# Ask if to start the service
|
||||||
echo
|
echo
|
||||||
echo -e "\033[44;32;1mTDengine is installed successfully!${NC}"
|
echo -e "\033[44;32;1m${productName} is installed successfully!${NC}"
|
||||||
echo
|
echo
|
||||||
echo -e "${GREEN_DARK}To configure TDengine ${NC}: edit /etc/taos/taos.cfg"
|
echo -e "${GREEN_DARK}To configure ${productName} ${NC}: edit ${configDir}/${configFile}"
|
||||||
if ((${service_mod}==0)); then
|
echo -e "${GREEN_DARK}To configure taosadapter (if has) ${NC}: edit ${configDir}/taosadapter.toml"
|
||||||
echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} systemctl start taosd${NC}"
|
if ((${service_mod} == 0)); then
|
||||||
elif ((${service_mod}==1)); then
|
echo -e "${GREEN_DARK}To start ${productName} ${NC}: ${csudo}systemctl start ${serverName}${NC}"
|
||||||
echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} service taosd start${NC}"
|
elif ((${service_mod} == 1)); then
|
||||||
|
echo -e "${GREEN_DARK}To start ${productName} ${NC}: ${csudo}service ${serverName} start${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${GREEN_DARK}To start TDengine ${NC}: ./taosd${NC}"
|
echo -e "${GREEN_DARK}To start Taos Adapter (if has)${NC}: taosadapter &${NC}"
|
||||||
|
echo -e "${GREEN_DARK}To start ${productName} ${NC}: ./${serverName}${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell${NC}"
|
echo -e "${GREEN_DARK}To access ${productName} ${NC}: use ${GREEN_UNDERLINE}${clientName}${NC} in shell${NC}"
|
||||||
echo
|
echo
|
||||||
echo -e "\033[44;32;1mTDengine is installed successfully!${NC}"
|
echo -e "\033[44;32;1m${productName} is installed successfully!${NC}"
|
||||||
else
|
|
||||||
echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell${NC}"
|
|
||||||
echo
|
|
||||||
echo -e "\033[44;32;1mTDengine Client is installed successfully!${NC}"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
## ==============================Main program starts from here============================
|
## ==============================Main program starts from here============================
|
||||||
echo source directory: $1
|
echo source directory: $1
|
||||||
echo binary directory: $2
|
echo binary directory: $2
|
||||||
echo $bin_dir
|
if [ "$osType" != "Darwin" ]; then
|
||||||
if [ -x ${bin_dir}/taos ]; then
|
if [ -x ${bin_dir}/${clientName} ]; then
|
||||||
update_TDengine
|
update_TDengine
|
||||||
else
|
else
|
||||||
install_TDengine
|
install_TDengine
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ -x ${bin_dir}/${clientName} ] || [ -x ${bin_2_dir}/${clientName} ]; then
|
||||||
|
update_TDengine
|
||||||
|
else
|
||||||
|
install_TDengine
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
aux_source_directory(src CLIENT_SRC)
|
aux_source_directory(src CLIENT_SRC)
|
||||||
add_library(taos ${CLIENT_SRC})
|
add_library(taos SHARED ${CLIENT_SRC})
|
||||||
target_include_directories(
|
target_include_directories(
|
||||||
taos
|
taos
|
||||||
PUBLIC "${TD_SOURCE_DIR}/include/client"
|
PUBLIC "${TD_SOURCE_DIR}/include/client"
|
||||||
|
@ -11,6 +11,25 @@ target_link_libraries(
|
||||||
PRIVATE os util common transport nodes parser command planner catalog scheduler function qcom
|
PRIVATE os util common transport nodes parser command planner catalog scheduler function qcom
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
taos
|
||||||
|
PROPERTIES
|
||||||
|
VERSION ${TD_VER_NUMBER}
|
||||||
|
SOVERSION ${TD_VER_NUMBER}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(taos_static STATIC ${CLIENT_SRC})
|
||||||
|
target_include_directories(
|
||||||
|
taos_static
|
||||||
|
PUBLIC "${TD_SOURCE_DIR}/include/client"
|
||||||
|
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/inc"
|
||||||
|
)
|
||||||
|
target_link_libraries(
|
||||||
|
taos_static
|
||||||
|
INTERFACE api
|
||||||
|
PRIVATE os util common transport nodes parser command planner catalog scheduler function qcom
|
||||||
|
)
|
||||||
|
|
||||||
if(${BUILD_TEST})
|
if(${BUILD_TEST})
|
||||||
ADD_SUBDIRECTORY(test)
|
ADD_SUBDIRECTORY(test)
|
||||||
endif(${BUILD_TEST})
|
endif(${BUILD_TEST})
|
|
@ -69,9 +69,9 @@ void taos_cleanup(void) {
|
||||||
rpcCleanup();
|
rpcCleanup();
|
||||||
catalogDestroy();
|
catalogDestroy();
|
||||||
schedulerDestroy();
|
schedulerDestroy();
|
||||||
taosCloseLog();
|
|
||||||
|
|
||||||
tscInfo("all local resources released");
|
tscInfo("all local resources released");
|
||||||
|
taosCloseLog();
|
||||||
}
|
}
|
||||||
|
|
||||||
setConfRet taos_set_config(const char *config) {
|
setConfRet taos_set_config(const char *config) {
|
||||||
|
|
|
@ -8,13 +8,13 @@ AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SOURCE_LIST)
|
||||||
ADD_EXECUTABLE(clientTest clientTests.cpp)
|
ADD_EXECUTABLE(clientTest clientTests.cpp)
|
||||||
TARGET_LINK_LIBRARIES(
|
TARGET_LINK_LIBRARIES(
|
||||||
clientTest
|
clientTest
|
||||||
PUBLIC os util common transport parser catalog scheduler function gtest taos qcom
|
PUBLIC os util common transport parser catalog scheduler function gtest taos_static qcom
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_EXECUTABLE(tmqTest tmqTest.cpp)
|
ADD_EXECUTABLE(tmqTest tmqTest.cpp)
|
||||||
TARGET_LINK_LIBRARIES(
|
TARGET_LINK_LIBRARIES(
|
||||||
tmqTest
|
tmqTest
|
||||||
PUBLIC os util common transport parser catalog scheduler function gtest taos qcom
|
PUBLIC os util common transport parser catalog scheduler function gtest taos_static qcom
|
||||||
)
|
)
|
||||||
|
|
||||||
TARGET_INCLUDE_DIRECTORIES(
|
TARGET_INCLUDE_DIRECTORIES(
|
||||||
|
|
|
@ -238,7 +238,7 @@ static int32_t taosLoadCfg(SConfig *pCfg, const char *inputCfgDir, const char *e
|
||||||
|
|
||||||
if (cfgLoad(pCfg, CFG_STYPE_CFG_FILE, cfgDir) != 0) {
|
if (cfgLoad(pCfg, CFG_STYPE_CFG_FILE, cfgDir) != 0) {
|
||||||
if (cfgLoad(pCfg, CFG_STYPE_CFG_FILE, cfgFile) != 0) {
|
if (cfgLoad(pCfg, CFG_STYPE_CFG_FILE, cfgFile) != 0) {
|
||||||
uError("failed to load from config file:%s since %s", cfgFile, terrstr());
|
uInfo("cfg file:%s not read since %s", cfgFile, terrstr());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,5 +6,5 @@ target_include_directories(
|
||||||
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/inc"
|
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/inc"
|
||||||
)
|
)
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
dnode_interface cjson mnode vnode qnode snode bnode wal sync taos tfs monitor
|
dnode_interface cjson mnode vnode qnode snode bnode wal sync taos_static tfs monitor
|
||||||
)
|
)
|
|
@ -262,6 +262,7 @@ static void vmCleanup(SMgmtWrapper *pWrapper) {
|
||||||
vmCloseVnodes(pMgmt);
|
vmCloseVnodes(pMgmt);
|
||||||
vmStopWorker(pMgmt);
|
vmStopWorker(pMgmt);
|
||||||
vnodeCleanup();
|
vnodeCleanup();
|
||||||
|
tfsClose(pMgmt->pTfs);
|
||||||
// walCleanUp();
|
// walCleanUp();
|
||||||
taosMemoryFree(pMgmt);
|
taosMemoryFree(pMgmt);
|
||||||
pWrapper->pMgmt = NULL;
|
pWrapper->pMgmt = NULL;
|
||||||
|
|
|
@ -18,12 +18,11 @@ target_sources(
|
||||||
"src/vnd/vnodeSvr.c"
|
"src/vnd/vnodeSvr.c"
|
||||||
|
|
||||||
# meta
|
# meta
|
||||||
# "src/meta/metaBDBImpl.c"
|
"src/meta/metaOpen.c"
|
||||||
"src/meta/metaIdx.c"
|
"src/meta/metaIdx.c"
|
||||||
"src/meta/metaMain.c"
|
|
||||||
"src/meta/metaTable.c"
|
"src/meta/metaTable.c"
|
||||||
"src/meta/metaTbUid.c"
|
|
||||||
"src/meta/metaTDBImpl.c"
|
"src/meta/metaTDBImpl.c"
|
||||||
|
# "src/meta/metaBDBImpl.c"
|
||||||
|
|
||||||
# tsdb
|
# tsdb
|
||||||
"src/tsdb/tsdbTDBImpl.c"
|
"src/tsdb/tsdbTDBImpl.c"
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct SMetaCache SMetaCache;
|
|
||||||
typedef struct SMetaIdx SMetaIdx;
|
typedef struct SMetaIdx SMetaIdx;
|
||||||
typedef struct SMetaDB SMetaDB;
|
typedef struct SMetaDB SMetaDB;
|
||||||
typedef struct SMCtbCursor SMCtbCursor;
|
typedef struct SMCtbCursor SMCtbCursor;
|
||||||
|
@ -36,13 +35,22 @@ typedef struct SMSmaCursor SMSmaCursor;
|
||||||
#define metaTrace(...) do { if (metaDebugFlag & DEBUG_TRACE) { taosPrintLog("META ", DEBUG_TRACE, metaDebugFlag, __VA_ARGS__); }} while(0)
|
#define metaTrace(...) do { if (metaDebugFlag & DEBUG_TRACE) { taosPrintLog("META ", DEBUG_TRACE, metaDebugFlag, __VA_ARGS__); }} while(0)
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
// metaOpen ==================
|
||||||
|
int metaOpen(SVnode* pVnode, SMeta** ppMeta);
|
||||||
|
int metaClose(SMeta* pMeta);
|
||||||
|
|
||||||
|
// metaIdx ==================
|
||||||
|
int metaOpenIdx(SMeta* pMeta);
|
||||||
|
void metaCloseIdx(SMeta* pMeta);
|
||||||
|
int metaSaveTableToIdx(SMeta* pMeta, const STbCfg* pTbOptions);
|
||||||
|
int metaRemoveTableFromIdx(SMeta* pMeta, tb_uid_t uid);
|
||||||
|
|
||||||
|
static FORCE_INLINE tb_uid_t metaGenerateUid(SMeta* pMeta) { return tGenIdPI64(); }
|
||||||
|
|
||||||
#define META_SUPER_TABLE TD_SUPER_TABLE
|
#define META_SUPER_TABLE TD_SUPER_TABLE
|
||||||
#define META_CHILD_TABLE TD_CHILD_TABLE
|
#define META_CHILD_TABLE TD_CHILD_TABLE
|
||||||
#define META_NORMAL_TABLE TD_NORMAL_TABLE
|
#define META_NORMAL_TABLE TD_NORMAL_TABLE
|
||||||
|
|
||||||
SMeta* metaOpen(const char* path, SMemAllocatorFactory* pMAF);
|
|
||||||
void metaClose(SMeta* pMeta);
|
|
||||||
void metaRemove(const char* path);
|
|
||||||
int metaCreateTable(SMeta* pMeta, STbCfg* pTbCfg);
|
int metaCreateTable(SMeta* pMeta, STbCfg* pTbCfg);
|
||||||
int metaDropTable(SMeta* pMeta, tb_uid_t uid);
|
int metaDropTable(SMeta* pMeta, tb_uid_t uid);
|
||||||
int metaCommit(SMeta* pMeta);
|
int metaCommit(SMeta* pMeta);
|
||||||
|
@ -71,27 +79,8 @@ int metaRemoveTableFromDb(SMeta* pMeta, tb_uid_t uid);
|
||||||
int metaSaveSmaToDB(SMeta* pMeta, STSma* pTbCfg);
|
int metaSaveSmaToDB(SMeta* pMeta, STSma* pTbCfg);
|
||||||
int metaRemoveSmaFromDb(SMeta* pMeta, int64_t indexUid);
|
int metaRemoveSmaFromDb(SMeta* pMeta, int64_t indexUid);
|
||||||
|
|
||||||
// SMetaCache
|
|
||||||
int metaOpenCache(SMeta* pMeta);
|
|
||||||
void metaCloseCache(SMeta* pMeta);
|
|
||||||
|
|
||||||
// SMetaIdx
|
// SMetaIdx
|
||||||
int metaOpenIdx(SMeta* pMeta);
|
|
||||||
void metaCloseIdx(SMeta* pMeta);
|
|
||||||
int metaSaveTableToIdx(SMeta* pMeta, const STbCfg* pTbOptions);
|
|
||||||
int metaRemoveTableFromIdx(SMeta* pMeta, tb_uid_t uid);
|
|
||||||
|
|
||||||
// STbUidGnrt
|
|
||||||
typedef struct STbUidGenerator {
|
|
||||||
tb_uid_t nextUid;
|
|
||||||
} STbUidGenerator;
|
|
||||||
|
|
||||||
// STableUidGenerator
|
|
||||||
int metaOpenUidGnrt(SMeta* pMeta);
|
|
||||||
void metaCloseUidGnrt(SMeta* pMeta);
|
|
||||||
|
|
||||||
// tb_uid_t
|
|
||||||
#define IVLD_TB_UID 0
|
|
||||||
tb_uid_t metaGenerateUid(SMeta* pMeta);
|
tb_uid_t metaGenerateUid(SMeta* pMeta);
|
||||||
|
|
||||||
struct SMeta {
|
struct SMeta {
|
||||||
|
@ -99,9 +88,6 @@ struct SMeta {
|
||||||
SVnode* pVnode;
|
SVnode* pVnode;
|
||||||
SMetaDB* pDB;
|
SMetaDB* pDB;
|
||||||
SMetaIdx* pIdx;
|
SMetaIdx* pIdx;
|
||||||
SMetaCache* pCache;
|
|
||||||
STbUidGenerator uidGnrt;
|
|
||||||
SMemAllocatorFactory* pmaf;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -44,6 +44,11 @@ int vnodeGetTableMeta(SVnode* pVnode, SRpcMsg* pMsg);
|
||||||
int vnodeSaveInfo(const char* dir, const SVnodeInfo* pCfg);
|
int vnodeSaveInfo(const char* dir, const SVnodeInfo* pCfg);
|
||||||
int vnodeCommitInfo(const char* dir, const SVnodeInfo* pInfo);
|
int vnodeCommitInfo(const char* dir, const SVnodeInfo* pInfo);
|
||||||
int vnodeLoadInfo(const char* dir, SVnodeInfo* pInfo);
|
int vnodeLoadInfo(const char* dir, SVnodeInfo* pInfo);
|
||||||
|
int vnodeBegin(SVnode* pVnode, int option);
|
||||||
|
int vnodeSyncCommit(SVnode* pVnode);
|
||||||
|
int vnodeAsyncCommit(SVnode* pVnode);
|
||||||
|
|
||||||
|
#define vnodeShouldCommit vnodeBufPoolIsFull
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
// SVBufPool
|
// SVBufPool
|
||||||
|
@ -85,12 +90,7 @@ bool vmaIsFull(SVMemAllocator* pVMA);
|
||||||
extern const SVnodeCfg vnodeCfgDefault;
|
extern const SVnodeCfg vnodeCfgDefault;
|
||||||
|
|
||||||
int vnodeCheckCfg(const SVnodeCfg*);
|
int vnodeCheckCfg(const SVnodeCfg*);
|
||||||
void vnodeOptionsCopy(SVnodeCfg* pDest, const SVnodeCfg* pSrc);
|
|
||||||
|
|
||||||
// For commit
|
|
||||||
#define vnodeShouldCommit vnodeBufPoolIsFull
|
|
||||||
int vnodeSyncCommit(SVnode* pVnode);
|
|
||||||
int vnodeAsyncCommit(SVnode* pVnode);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -1,111 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "tcoding.h"
|
|
||||||
|
|
||||||
#include "vnodeInt.h"
|
|
||||||
|
|
||||||
static SMeta *metaNew(const char *path, SMemAllocatorFactory *pMAF);
|
|
||||||
static void metaFree(SMeta *pMeta);
|
|
||||||
static int metaOpenImpl(SMeta *pMeta);
|
|
||||||
static void metaCloseImpl(SMeta *pMeta);
|
|
||||||
|
|
||||||
SMeta *metaOpen(const char *path, SMemAllocatorFactory *pMAF) {
|
|
||||||
SMeta *pMeta = NULL;
|
|
||||||
|
|
||||||
// Allocate handle
|
|
||||||
pMeta = metaNew(path, pMAF);
|
|
||||||
if (pMeta == NULL) {
|
|
||||||
// TODO: handle error
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create META path (TODO)
|
|
||||||
taosMkDir(path);
|
|
||||||
|
|
||||||
// Open meta
|
|
||||||
if (metaOpenImpl(pMeta) < 0) {
|
|
||||||
metaFree(pMeta);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return pMeta;
|
|
||||||
}
|
|
||||||
|
|
||||||
void metaClose(SMeta *pMeta) {
|
|
||||||
if (pMeta) {
|
|
||||||
metaCloseImpl(pMeta);
|
|
||||||
metaFree(pMeta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void metaRemove(const char *path) { taosRemoveDir(path); }
|
|
||||||
|
|
||||||
/* ------------------------ STATIC METHODS ------------------------ */
|
|
||||||
static SMeta *metaNew(const char *path, SMemAllocatorFactory *pMAF) {
|
|
||||||
SMeta *pMeta;
|
|
||||||
size_t psize = strlen(path);
|
|
||||||
|
|
||||||
pMeta = (SMeta *)taosMemoryCalloc(1, sizeof(*pMeta));
|
|
||||||
if (pMeta == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
pMeta->path = strdup(path);
|
|
||||||
if (pMeta->path == NULL) {
|
|
||||||
metaFree(pMeta);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return pMeta;
|
|
||||||
};
|
|
||||||
|
|
||||||
static void metaFree(SMeta *pMeta) {
|
|
||||||
if (pMeta) {
|
|
||||||
taosMemoryFreeClear(pMeta->path);
|
|
||||||
taosMemoryFree(pMeta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int metaOpenImpl(SMeta *pMeta) {
|
|
||||||
// Open meta db
|
|
||||||
if (metaOpenDB(pMeta) < 0) {
|
|
||||||
// TODO: handle error
|
|
||||||
metaCloseImpl(pMeta);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Open meta index
|
|
||||||
if (metaOpenIdx(pMeta) < 0) {
|
|
||||||
// TODO: handle error
|
|
||||||
metaCloseImpl(pMeta);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Open meta table uid generator
|
|
||||||
if (metaOpenUidGnrt(pMeta) < 0) {
|
|
||||||
// TODO: handle error
|
|
||||||
metaCloseImpl(pMeta);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void metaCloseImpl(SMeta *pMeta) {
|
|
||||||
metaCloseUidGnrt(pMeta);
|
|
||||||
metaCloseIdx(pMeta);
|
|
||||||
metaCloseDB(pMeta);
|
|
||||||
}
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can use, redistribute, and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License, version 3
|
||||||
|
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "vnodeInt.h"
|
||||||
|
|
||||||
|
int metaOpen(SVnode *pVnode, SMeta **ppMeta) {
|
||||||
|
SMeta *pMeta = NULL;
|
||||||
|
int slen;
|
||||||
|
|
||||||
|
*ppMeta = NULL;
|
||||||
|
|
||||||
|
// create handle
|
||||||
|
slen = strlen(tfsGetPrimaryPath(pVnode->pTfs)) + strlen(pVnode->path) + strlen(VNODE_META_DIR) + 3;
|
||||||
|
if ((pMeta = taosMemoryCalloc(1, sizeof(*pMeta) + slen)) == NULL) {
|
||||||
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pMeta->path = (char *)&pMeta[1];
|
||||||
|
sprintf(pMeta->path, "%s%s%s%s%s", tfsGetPrimaryPath(pVnode->pTfs), TD_DIRSEP, pVnode->path, TD_DIRSEP,
|
||||||
|
VNODE_META_DIR);
|
||||||
|
pMeta->pVnode = pVnode;
|
||||||
|
|
||||||
|
// create path if not created yet
|
||||||
|
taosMkDir(pMeta->path);
|
||||||
|
|
||||||
|
// open meta
|
||||||
|
if (metaOpenDB(pMeta) < 0) {
|
||||||
|
goto _err;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (metaOpenIdx(pMeta) < 0) {
|
||||||
|
goto _err;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ppMeta = pMeta;
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
_err:
|
||||||
|
if (pMeta->pIdx) metaCloseIdx(pMeta);
|
||||||
|
if (pMeta->pDB) metaCloseDB(pMeta);
|
||||||
|
taosMemoryFree(pMeta);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int metaClose(SMeta *pMeta) {
|
||||||
|
if (pMeta) {
|
||||||
|
metaCloseIdx(pMeta);
|
||||||
|
metaCloseDB(pMeta);
|
||||||
|
taosMemoryFree(pMeta);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -1,30 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "vnodeInt.h"
|
|
||||||
|
|
||||||
int metaOpenUidGnrt(SMeta *pMeta) {
|
|
||||||
// Init a generator
|
|
||||||
pMeta->uidGnrt.nextUid = IVLD_TB_UID;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void metaCloseUidGnrt(SMeta *pMeta) { /* TODO */
|
|
||||||
}
|
|
||||||
|
|
||||||
tb_uid_t metaGenerateUid(SMeta *pMeta) {
|
|
||||||
// Generate a new table UID
|
|
||||||
return tGenIdPI64();
|
|
||||||
}
|
|
|
@ -23,11 +23,6 @@ int vnodeCheckCfg(const SVnodeCfg *pCfg) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 1 //======================================================================
|
|
||||||
void vnodeOptionsCopy(SVnodeCfg *pDest, const SVnodeCfg *pSrc) {
|
|
||||||
memcpy((void *)pDest, (void *)pSrc, sizeof(SVnodeCfg));
|
|
||||||
}
|
|
||||||
|
|
||||||
int vnodeValidateTableHash(SVnodeCfg *pVnodeOptions, char *tableFName) {
|
int vnodeValidateTableHash(SVnodeCfg *pVnodeOptions, char *tableFName) {
|
||||||
uint32_t hashValue = 0;
|
uint32_t hashValue = 0;
|
||||||
|
|
||||||
|
@ -47,5 +42,3 @@ int vnodeValidateTableHash(SVnodeCfg *pVnodeOptions, char *tableFName) {
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
|
@ -65,14 +65,15 @@ SVnode *vnodeOpen(const char *path, STfs *pTfs, SMsgCb msgCb) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// create handle
|
// create handle
|
||||||
pVnode = (SVnode *)taosMemoryCalloc(1, sizeof(*pVnode));
|
pVnode = (SVnode *)taosMemoryCalloc(1, sizeof(*pVnode) + strlen(path) + 1);
|
||||||
if (pVnode == NULL) {
|
if (pVnode == NULL) {
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
vError("vgId: %d failed to open vnode since %s", info.config.vgId, tstrerror(terrno));
|
vError("vgId: %d failed to open vnode since %s", info.config.vgId, tstrerror(terrno));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pVnode->path = strdup(dir);
|
pVnode->path = (char *)&pVnode[1];
|
||||||
|
strcpy(pVnode->path, path);
|
||||||
pVnode->config = info.config;
|
pVnode->config = info.config;
|
||||||
pVnode->state.committed = info.state.committed;
|
pVnode->state.committed = info.state.committed;
|
||||||
pVnode->state.processed = pVnode->state.applied = pVnode->state.committed;
|
pVnode->state.processed = pVnode->state.applied = pVnode->state.committed;
|
||||||
|
@ -88,9 +89,7 @@ SVnode *vnodeOpen(const char *path, STfs *pTfs, SMsgCb msgCb) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// open meta
|
// open meta
|
||||||
sprintf(tdir, "%s%s%s", dir, TD_DIRSEP, VNODE_META_DIR);
|
if (metaOpen(pVnode, &pVnode->pMeta) < 0) {
|
||||||
pVnode->pMeta = metaOpen(tdir, vBufPoolGetMAF(pVnode));
|
|
||||||
if (pVnode->pMeta == NULL) {
|
|
||||||
vError("vgId: %d failed to open vnode meta since %s", TD_VID(pVnode), tstrerror(terrno));
|
vError("vgId: %d failed to open vnode meta since %s", TD_VID(pVnode), tstrerror(terrno));
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
@ -141,7 +140,6 @@ _err:
|
||||||
if (pVnode->pTsdb) tsdbClose(pVnode->pTsdb);
|
if (pVnode->pTsdb) tsdbClose(pVnode->pTsdb);
|
||||||
if (pVnode->pMeta) metaClose(pVnode->pMeta);
|
if (pVnode->pMeta) metaClose(pVnode->pMeta);
|
||||||
tsem_destroy(&(pVnode->canCommit));
|
tsem_destroy(&(pVnode->canCommit));
|
||||||
taosMemoryFreeClear(pVnode->path);
|
|
||||||
taosMemoryFree(pVnode);
|
taosMemoryFree(pVnode);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -159,7 +157,6 @@ void vnodeClose(SVnode *pVnode) {
|
||||||
vnodeCloseBufPool(pVnode);
|
vnodeCloseBufPool(pVnode);
|
||||||
// destroy handle
|
// destroy handle
|
||||||
tsem_destroy(&(pVnode->canCommit));
|
tsem_destroy(&(pVnode->canCommit));
|
||||||
taosMemoryFreeClear(pVnode->path);
|
|
||||||
taosMemoryFree(pVnode);
|
taosMemoryFree(pVnode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SOURCE_LIST)
|
||||||
ADD_EXECUTABLE(catalogTest ${SOURCE_LIST})
|
ADD_EXECUTABLE(catalogTest ${SOURCE_LIST})
|
||||||
TARGET_LINK_LIBRARIES(
|
TARGET_LINK_LIBRARIES(
|
||||||
catalogTest
|
catalogTest
|
||||||
PUBLIC os util common catalog transport gtest qcom taos
|
PUBLIC os util common catalog transport gtest qcom taos_static
|
||||||
)
|
)
|
||||||
|
|
||||||
TARGET_INCLUDE_DIRECTORIES(
|
TARGET_INCLUDE_DIRECTORIES(
|
||||||
|
|
|
@ -22,38 +22,275 @@ typedef struct SIFCtx {
|
||||||
SHashObj *pRes; /* element is SScalarParam */
|
SHashObj *pRes; /* element is SScalarParam */
|
||||||
} SIFCtx;
|
} SIFCtx;
|
||||||
|
|
||||||
|
#define SIF_ERR_RET(c) \
|
||||||
|
do { \
|
||||||
|
int32_t _code = c; \
|
||||||
|
if (_code != TSDB_CODE_SUCCESS) { \
|
||||||
|
terrno = _code; \
|
||||||
|
return _code; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#define SIF_RET(c) \
|
||||||
|
do { \
|
||||||
|
int32_t _code = c; \
|
||||||
|
if (_code != TSDB_CODE_SUCCESS) { \
|
||||||
|
terrno = _code; \
|
||||||
|
} \
|
||||||
|
return _code; \
|
||||||
|
} while (0)
|
||||||
|
#define SIF_ERR_JRET(c) \
|
||||||
|
do { \
|
||||||
|
code = c; \
|
||||||
|
if (code != TSDB_CODE_SUCCESS) { \
|
||||||
|
terrno = code; \
|
||||||
|
goto _return; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
typedef struct SIFParam {
|
typedef struct SIFParam {
|
||||||
SArray * result;
|
SArray * result;
|
||||||
SHashObj *pFilter;
|
SHashObj *pFilter;
|
||||||
} SIFParam;
|
} SIFParam;
|
||||||
|
|
||||||
|
typedef int32_t (*sif_func_t)(SNode *left, SNode *rigth, SIFParam *output);
|
||||||
// construct tag filter operator later
|
// construct tag filter operator later
|
||||||
static void destroyTagFilterOperatorInfo(void *param) {
|
static void destroyTagFilterOperatorInfo(void *param) { STagFilterOperatorInfo *pInfo = (STagFilterOperatorInfo *)param; }
|
||||||
STagFilterOperatorInfo *pInfo = (STagFilterOperatorInfo *)param;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sifFreeParam(SIFParam *param) {
|
static void sifFreeParam(SIFParam *param) {
|
||||||
if (param == NULL) return;
|
if (param == NULL) return;
|
||||||
taosArrayDestroy(param->result);
|
taosArrayDestroy(param->result);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t sifInitOperParams(SIFParam *params, SOperatorNode *node, SIFCtx *ctx) {
|
static int32_t sifGetOperParamNum(EOperatorType ty) {
|
||||||
|
if (OP_TYPE_IS_NULL == ty || OP_TYPE_IS_NOT_NULL == ty || OP_TYPE_IS_TRUE == ty || OP_TYPE_IS_NOT_TRUE == ty || OP_TYPE_IS_FALSE == ty ||
|
||||||
|
OP_TYPE_IS_NOT_FALSE == ty || OP_TYPE_IS_UNKNOWN == ty || OP_TYPE_IS_NOT_UNKNOWN == ty || OP_TYPE_MINUS == ty) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
static int32_t sifInitParam(SNode *node, SIFParam *param, SIFCtx *ctx) {
|
||||||
|
switch (nodeType(node)) {
|
||||||
|
case QUERY_NODE_VALUE: {
|
||||||
|
SValueNode *vn = (SValueNode *)node;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case QUERY_NODE_COLUMN: {
|
||||||
|
SColumnNode *cn = (SColumnNode *)node;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case QUERY_NODE_NODE_LIST: {
|
||||||
|
SNodeListNode *nl = (SNodeListNode *)node;
|
||||||
|
if (LIST_LENGTH(nl->pNodeList) <= 0) {
|
||||||
|
qError("invalid length for node:%p, length: %d", node, LIST_LENGTH(nl->pNodeList));
|
||||||
|
SIF_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (taosHashPut(ctx->pRes, &node, POINTER_BYTES, param, sizeof(*param))) {
|
||||||
|
taosHashCleanup(param->pFilter);
|
||||||
|
qError("taosHashPut nodeList failed, size:%d", (int32_t)sizeof(*param));
|
||||||
|
SIF_ERR_RET(TSDB_CODE_QRY_OUT_OF_MEMORY);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case QUERY_NODE_FUNCTION:
|
||||||
|
case QUERY_NODE_OPERATOR:
|
||||||
|
case QUERY_NODE_LOGIC_CONDITION: {
|
||||||
|
SIFParam *res = (SIFParam *)taosHashGet(ctx->pRes, &node, POINTER_BYTES);
|
||||||
|
if (NULL == res) {
|
||||||
|
qError("no result for node, type:%d, node:%p", nodeType(node), node);
|
||||||
|
SIF_ERR_RET(TSDB_CODE_QRY_APP_ERROR);
|
||||||
|
}
|
||||||
|
*param = *res;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t sifInitOperParams(SIFParam **params, SOperatorNode *node, SIFCtx *ctx) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
return code;
|
int32_t nParam = sifGetOperParamNum(node->opType);
|
||||||
|
if (NULL == node->pLeft || (nParam == 2 && NULL == node->pRight)) {
|
||||||
|
qError("invalid operation node, left: %p, rigth: %p", node->pLeft, node->pRight);
|
||||||
|
SIF_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT);
|
||||||
|
}
|
||||||
|
SIFParam *paramList = taosMemoryCalloc(nParam, sizeof(SIFParam));
|
||||||
|
if (NULL == paramList) {
|
||||||
|
SIF_ERR_RET(TSDB_CODE_QRY_OUT_OF_MEMORY);
|
||||||
|
}
|
||||||
|
|
||||||
|
SIF_ERR_JRET(sifInitParam(node->pLeft, ¶mList[0], ctx));
|
||||||
|
if (nParam > 1) {
|
||||||
|
SIF_ERR_JRET(sifInitParam(node->pRight, ¶mList[1], ctx));
|
||||||
|
}
|
||||||
|
*params = paramList;
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
_return:
|
||||||
|
taosMemoryFree(paramList);
|
||||||
|
SIF_RET(code);
|
||||||
|
}
|
||||||
|
static int32_t sifInitParamList(SIFParam **params, SNodeList *nodeList, SIFCtx *ctx) {
|
||||||
|
int32_t code = 0;
|
||||||
|
SIFParam *tParams = taosMemoryCalloc(nodeList->length, sizeof(SIFParam));
|
||||||
|
if (tParams == NULL) {
|
||||||
|
qError("failed to calloc, nodeList: %p", nodeList);
|
||||||
|
SIF_ERR_RET(TSDB_CODE_QRY_OUT_OF_MEMORY);
|
||||||
|
}
|
||||||
|
|
||||||
|
SListCell *cell = nodeList->pHead;
|
||||||
|
for (int32_t i = 0; i < nodeList->length; i++) {
|
||||||
|
if (NULL == cell || NULL == cell->pNode) {
|
||||||
|
SIF_ERR_JRET(TSDB_CODE_QRY_INVALID_INPUT);
|
||||||
|
}
|
||||||
|
SIF_ERR_JRET(sifInitParam(cell->pNode, &tParams[i], ctx));
|
||||||
|
cell = cell->pNext;
|
||||||
|
}
|
||||||
|
*params = tParams;
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
|
_return:
|
||||||
|
taosMemoryFree(tParams);
|
||||||
|
SIF_RET(code);
|
||||||
}
|
}
|
||||||
static int32_t sifExecFunction(SFunctionNode *node, SIFCtx *ctx, SIFParam *output) {
|
static int32_t sifExecFunction(SFunctionNode *node, SIFCtx *ctx, SIFParam *output) {
|
||||||
qError("index-filter not support buildin function");
|
qError("index-filter not support buildin function");
|
||||||
|
return TSDB_CODE_QRY_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t sifLessThanFunc(SNode *left, SNode *rigth, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
static int32_t sifLessEqualFunc(SNode *left, SNode *rigth, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
static int32_t sifGreaterThanFunc(SNode *left, SNode *rigth, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
static int32_t sifGreaterEqualFunc(SNode *left, SNode *rigth, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t sifEqualFunc(SNode *left, SNode *rigth, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
static int32_t sifNotEqualFunc(SNode *left, SNode *rigth, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
static int32_t sifInFunc(SNode *left, SNode *rigth, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
static int32_t sifNotInFunc(SNode *left, SNode *right, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
static int32_t sifLikeFunc(SNode *left, SNode *right, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
static int32_t sifNotLikeFunc(SNode *left, SNode *right, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t sifMatchFunc(SNode *left, SNode *rigth, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
static int32_t sifNotMatchFunc(SNode *left, SNode *rigth, SIFParam *output) {
|
||||||
|
// impl later
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
static int32_t sifDefaultFunc(SNode *left, SNode *rigth, SIFParam *output) {
|
||||||
|
// add more except
|
||||||
|
return TSDB_CODE_QRY_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
static sif_func_t sifGetOperFn(int32_t funcId) {
|
||||||
|
// impl later
|
||||||
|
switch (funcId) {
|
||||||
|
case OP_TYPE_GREATER_THAN:
|
||||||
|
return sifGreaterThanFunc;
|
||||||
|
case OP_TYPE_GREATER_EQUAL:
|
||||||
|
return sifGreaterEqualFunc;
|
||||||
|
case OP_TYPE_LOWER_THAN:
|
||||||
|
return sifLessThanFunc;
|
||||||
|
case OP_TYPE_LOWER_EQUAL:
|
||||||
|
return sifLessEqualFunc;
|
||||||
|
case OP_TYPE_EQUAL:
|
||||||
|
return sifEqualFunc;
|
||||||
|
case OP_TYPE_NOT_EQUAL:
|
||||||
|
return sifNotEqualFunc;
|
||||||
|
case OP_TYPE_IN:
|
||||||
|
return sifInFunc;
|
||||||
|
case OP_TYPE_NOT_IN:
|
||||||
|
return sifNotInFunc;
|
||||||
|
case OP_TYPE_LIKE:
|
||||||
|
return sifLikeFunc;
|
||||||
|
case OP_TYPE_NOT_LIKE:
|
||||||
|
return sifNotLikeFunc;
|
||||||
|
case OP_TYPE_MATCH:
|
||||||
|
return sifMatchFunc;
|
||||||
|
case OP_TYPE_NMATCH:
|
||||||
|
return sifNotMatchFunc;
|
||||||
|
default:
|
||||||
|
return sifDefaultFunc;
|
||||||
|
}
|
||||||
|
return sifDefaultFunc;
|
||||||
|
}
|
||||||
static int32_t sifExecOper(SOperatorNode *node, SIFCtx *ctx, SIFParam *output) {
|
static int32_t sifExecOper(SOperatorNode *node, SIFCtx *ctx, SIFParam *output) {
|
||||||
|
int32_t code = 0;
|
||||||
SIFParam *params = NULL;
|
SIFParam *params = NULL;
|
||||||
|
SIF_ERR_RET(sifInitOperParams(¶ms, node, ctx));
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
int32_t nParam = sifGetOperParamNum(node->opType);
|
||||||
|
if (nParam <= 1) {
|
||||||
|
SIF_ERR_JRET(TSDB_CODE_QRY_INVALID_INPUT);
|
||||||
|
}
|
||||||
|
sif_func_t operFn = sifGetOperFn(node->opType);
|
||||||
|
|
||||||
|
return operFn(node->pLeft, node->pRight, output);
|
||||||
|
_return:
|
||||||
|
taosMemoryFree(params);
|
||||||
|
SIF_RET(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t sifExecLogic(SLogicConditionNode *node, SIFCtx *ctx, SIFParam *output) { return TSDB_CODE_SUCCESS; }
|
static int32_t sifExecLogic(SLogicConditionNode *node, SIFCtx *ctx, SIFParam *output) {
|
||||||
|
if (NULL == node->pParameterList || node->pParameterList->length <= 0) {
|
||||||
|
qError("invalid logic parameter list, list:%p, paramNum:%d", node->pParameterList, node->pParameterList ? node->pParameterList->length : 0);
|
||||||
|
return TSDB_CODE_QRY_INVALID_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t code;
|
||||||
|
SIFParam *params = NULL;
|
||||||
|
SIF_ERR_RET(sifInitParamList(¶ms, node->pParameterList, ctx));
|
||||||
|
|
||||||
|
for (int32_t m = 0; m < node->pParameterList->length; m++) {
|
||||||
|
// add impl later
|
||||||
|
if (node->condType == LOGIC_COND_TYPE_AND) {
|
||||||
|
taosArrayAddAll(output->result, params[m].result);
|
||||||
|
} else if (node->condType == LOGIC_COND_TYPE_OR) {
|
||||||
|
taosArrayAddAll(output->result, params[m].result);
|
||||||
|
} else if (node->condType == LOGIC_COND_TYPE_NOT) {
|
||||||
|
taosArrayAddAll(output->result, params[m].result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_return:
|
||||||
|
taosMemoryFree(params);
|
||||||
|
SIF_RET(code);
|
||||||
|
}
|
||||||
|
|
||||||
static EDealRes sifWalkFunction(SNode *pNode, void *context) {
|
static EDealRes sifWalkFunction(SNode *pNode, void *context) {
|
||||||
// impl later
|
|
||||||
SFunctionNode *node = (SFunctionNode *)pNode;
|
SFunctionNode *node = (SFunctionNode *)pNode;
|
||||||
SIFParam output = {0};
|
SIFParam output = {0};
|
||||||
|
|
||||||
|
@ -104,8 +341,7 @@ static EDealRes sifWalkOper(SNode *pNode, void *context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
EDealRes sifCalcWalker(SNode *node, void *context) {
|
EDealRes sifCalcWalker(SNode *node, void *context) {
|
||||||
if (QUERY_NODE_VALUE == nodeType(node) || QUERY_NODE_NODE_LIST == nodeType(node) ||
|
if (QUERY_NODE_VALUE == nodeType(node) || QUERY_NODE_NODE_LIST == nodeType(node) || QUERY_NODE_COLUMN == nodeType(node)) {
|
||||||
QUERY_NODE_COLUMN == nodeType(node)) {
|
|
||||||
return DEAL_RES_CONTINUE;
|
return DEAL_RES_CONTINUE;
|
||||||
}
|
}
|
||||||
SIFCtx *ctx = (SIFCtx *)context;
|
SIFCtx *ctx = (SIFCtx *)context;
|
||||||
|
|
|
@ -8,7 +8,7 @@ AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SOURCE_LIST)
|
||||||
ADD_EXECUTABLE(executorTest ${SOURCE_LIST})
|
ADD_EXECUTABLE(executorTest ${SOURCE_LIST})
|
||||||
TARGET_LINK_LIBRARIES(
|
TARGET_LINK_LIBRARIES(
|
||||||
executorTest
|
executorTest
|
||||||
PRIVATE os util common transport gtest taos qcom executor function planner scalar nodes
|
PRIVATE os util common transport gtest taos_static qcom executor function planner scalar nodes
|
||||||
)
|
)
|
||||||
|
|
||||||
TARGET_INCLUDE_DIRECTORIES(
|
TARGET_INCLUDE_DIRECTORIES(
|
||||||
|
|
|
@ -1470,6 +1470,9 @@ void qWorkerDestroy(void **qWorkerMgmt) {
|
||||||
|
|
||||||
//TODO FREE ALL
|
//TODO FREE ALL
|
||||||
|
|
||||||
|
taosHashCleanup(mgmt->ctxHash);
|
||||||
|
taosHashCleanup(mgmt->schHash);
|
||||||
|
|
||||||
taosMemoryFreeClear(*qWorkerMgmt);
|
taosMemoryFreeClear(*qWorkerMgmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SOURCE_LIST)
|
||||||
ADD_EXECUTABLE(schedulerTest ${SOURCE_LIST})
|
ADD_EXECUTABLE(schedulerTest ${SOURCE_LIST})
|
||||||
TARGET_LINK_LIBRARIES(
|
TARGET_LINK_LIBRARIES(
|
||||||
schedulerTest
|
schedulerTest
|
||||||
PUBLIC os util common catalog transport gtest qcom taos planner scheduler
|
PUBLIC os util common catalog transport gtest qcom taos_static planner scheduler
|
||||||
)
|
)
|
||||||
|
|
||||||
TARGET_INCLUDE_DIRECTORIES(
|
TARGET_INCLUDE_DIRECTORIES(
|
||||||
|
|
|
@ -910,6 +910,8 @@ void taosCacheRefresh(SCacheObj *pCacheObj, __cache_trav_fn_t fp, void *param1)
|
||||||
|
|
||||||
void taosStopCacheRefreshWorker(void) {
|
void taosStopCacheRefreshWorker(void) {
|
||||||
stopRefreshWorker = true;
|
stopRefreshWorker = true;
|
||||||
|
taosThreadJoin(cacheRefreshWorker, NULL);
|
||||||
|
taosArrayDestroy(pCacheArrayList);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t taosCacheGetNumOfObj(const SCacheObj* pCacheObj) {
|
size_t taosCacheGetNumOfObj(const SCacheObj* pCacheObj) {
|
||||||
|
|
|
@ -591,12 +591,12 @@ void cfgDumpCfg(SConfig *pCfg, bool tsc, bool dump) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t cfgLoadFromEnvVar(SConfig *pConfig) {
|
int32_t cfgLoadFromEnvVar(SConfig *pConfig) {
|
||||||
uInfo("load from env variables not implemented yet");
|
uDebug("load from env variables not implemented yet");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t cfgLoadFromEnvFile(SConfig *pConfig, const char *filepath) {
|
int32_t cfgLoadFromEnvFile(SConfig *pConfig, const char *filepath) {
|
||||||
uInfo("load from env file not implemented yet");
|
uDebug("load from env file not implemented yet");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -655,6 +655,6 @@ int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t cfgLoadFromApollUrl(SConfig *pConfig, const char *url) {
|
int32_t cfgLoadFromApollUrl(SConfig *pConfig, const char *url) {
|
||||||
uInfo("load from apoll url not implemented yet");
|
uDebug("load from apoll url not implemented yet");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,6 @@ typedef struct {
|
||||||
int32_t stop;
|
int32_t stop;
|
||||||
TdThread asyncThread;
|
TdThread asyncThread;
|
||||||
TdThreadMutex buffMutex;
|
TdThreadMutex buffMutex;
|
||||||
tsem_t buffNotEmpty;
|
|
||||||
} SLogBuff;
|
} SLogBuff;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -100,7 +99,7 @@ int64_t dbgBigWN = 0;
|
||||||
int64_t dbgWSize = 0;
|
int64_t dbgWSize = 0;
|
||||||
|
|
||||||
static void *taosAsyncOutputLog(void *param);
|
static void *taosAsyncOutputLog(void *param);
|
||||||
static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, const char *msg, int32_t msgLen);
|
static int32_t taosPushLogBuffer(SLogBuff *pLogBuf, const char *msg, int32_t msgLen);
|
||||||
static SLogBuff *taosLogBuffNew(int32_t bufSize);
|
static SLogBuff *taosLogBuffNew(int32_t bufSize);
|
||||||
static void taosCloseLogByFd(TdFilePtr pFile);
|
static void taosCloseLogByFd(TdFilePtr pFile);
|
||||||
static int32_t taosOpenLogFile(char *fn, int32_t maxLines, int32_t maxFileNum);
|
static int32_t taosOpenLogFile(char *fn, int32_t maxLines, int32_t maxFileNum);
|
||||||
|
@ -136,16 +135,24 @@ static void taosStopLog() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void taosLogBuffDestroy() {
|
||||||
|
taosThreadMutexDestroy(&tsLogObj.logHandle->buffMutex);
|
||||||
|
taosCloseFile(&tsLogObj.logHandle->pFile);
|
||||||
|
taosMemoryFreeClear(tsLogObj.logHandle->buffer);
|
||||||
|
memset(&tsLogObj.logHandle->buffer, 0, sizeof(tsLogObj.logHandle->buffer));
|
||||||
|
taosThreadMutexDestroy(&tsLogObj.logMutex);
|
||||||
|
taosMemoryFreeClear(tsLogObj.logHandle);
|
||||||
|
memset(&tsLogObj.logHandle, 0, sizeof(tsLogObj.logHandle));
|
||||||
|
tsLogObj.logHandle = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void taosCloseLog() {
|
void taosCloseLog() {
|
||||||
taosStopLog();
|
taosStopLog();
|
||||||
if (taosCheckPthreadValid(tsLogObj.logHandle->asyncThread)) {
|
if (taosCheckPthreadValid(tsLogObj.logHandle->asyncThread)) {
|
||||||
taosThreadJoin(tsLogObj.logHandle->asyncThread, NULL);
|
taosThreadJoin(tsLogObj.logHandle->asyncThread, NULL);
|
||||||
}
|
}
|
||||||
tsLogInited = 0;
|
tsLogInited = 0;
|
||||||
// In case that other threads still use log resources causing invalid write in valgrind
|
taosLogBuffDestroy(tsLogObj.logHandle);
|
||||||
// we comment two lines below.
|
|
||||||
// taosLogBuffDestroy(tsLogObj.logHandle);
|
|
||||||
// taosCloseLog();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool taosLockLogFile(TdFilePtr pFile) {
|
static bool taosLockLogFile(TdFilePtr pFile) {
|
||||||
|
@ -506,45 +513,45 @@ static void taosCloseLogByFd(TdFilePtr pFile) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static SLogBuff *taosLogBuffNew(int32_t bufSize) {
|
static SLogBuff *taosLogBuffNew(int32_t bufSize) {
|
||||||
SLogBuff *tLogBuff = NULL;
|
SLogBuff *pLogBuf = NULL;
|
||||||
|
|
||||||
tLogBuff = taosMemoryCalloc(1, sizeof(SLogBuff));
|
pLogBuf = taosMemoryCalloc(1, sizeof(SLogBuff));
|
||||||
if (tLogBuff == NULL) return NULL;
|
if (pLogBuf == NULL) return NULL;
|
||||||
|
|
||||||
LOG_BUF_BUFFER(tLogBuff) = taosMemoryMalloc(bufSize);
|
LOG_BUF_BUFFER(pLogBuf) = taosMemoryMalloc(bufSize);
|
||||||
if (LOG_BUF_BUFFER(tLogBuff) == NULL) goto _err;
|
if (LOG_BUF_BUFFER(pLogBuf) == NULL) goto _err;
|
||||||
|
|
||||||
LOG_BUF_START(tLogBuff) = LOG_BUF_END(tLogBuff) = 0;
|
LOG_BUF_START(pLogBuf) = LOG_BUF_END(pLogBuf) = 0;
|
||||||
LOG_BUF_SIZE(tLogBuff) = bufSize;
|
LOG_BUF_SIZE(pLogBuf) = bufSize;
|
||||||
tLogBuff->minBuffSize = bufSize / 10;
|
pLogBuf->minBuffSize = bufSize / 10;
|
||||||
tLogBuff->stop = 0;
|
pLogBuf->stop = 0;
|
||||||
|
|
||||||
if (taosThreadMutexInit(&LOG_BUF_MUTEX(tLogBuff), NULL) < 0) goto _err;
|
if (taosThreadMutexInit(&LOG_BUF_MUTEX(pLogBuf), NULL) < 0) goto _err;
|
||||||
// tsem_init(&(tLogBuff->buffNotEmpty), 0, 0);
|
// tsem_init(&(pLogBuf->buffNotEmpty), 0, 0);
|
||||||
|
|
||||||
return tLogBuff;
|
return pLogBuf;
|
||||||
|
|
||||||
_err:
|
_err:
|
||||||
taosMemoryFreeClear(LOG_BUF_BUFFER(tLogBuff));
|
taosMemoryFreeClear(LOG_BUF_BUFFER(pLogBuf));
|
||||||
taosMemoryFreeClear(tLogBuff);
|
taosMemoryFreeClear(pLogBuf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void taosCopyLogBuffer(SLogBuff *tLogBuff, int32_t start, int32_t end, const char *msg, int32_t msgLen) {
|
static void taosCopyLogBuffer(SLogBuff *pLogBuf, int32_t start, int32_t end, const char *msg, int32_t msgLen) {
|
||||||
if (start > end) {
|
if (start > end) {
|
||||||
memcpy(LOG_BUF_BUFFER(tLogBuff) + end, msg, msgLen);
|
memcpy(LOG_BUF_BUFFER(pLogBuf) + end, msg, msgLen);
|
||||||
} else {
|
} else {
|
||||||
if (LOG_BUF_SIZE(tLogBuff) - end < msgLen) {
|
if (LOG_BUF_SIZE(pLogBuf) - end < msgLen) {
|
||||||
memcpy(LOG_BUF_BUFFER(tLogBuff) + end, msg, LOG_BUF_SIZE(tLogBuff) - end);
|
memcpy(LOG_BUF_BUFFER(pLogBuf) + end, msg, LOG_BUF_SIZE(pLogBuf) - end);
|
||||||
memcpy(LOG_BUF_BUFFER(tLogBuff), msg + LOG_BUF_SIZE(tLogBuff) - end, msgLen - LOG_BUF_SIZE(tLogBuff) + end);
|
memcpy(LOG_BUF_BUFFER(pLogBuf), msg + LOG_BUF_SIZE(pLogBuf) - end, msgLen - LOG_BUF_SIZE(pLogBuf) + end);
|
||||||
} else {
|
} else {
|
||||||
memcpy(LOG_BUF_BUFFER(tLogBuff) + end, msg, msgLen);
|
memcpy(LOG_BUF_BUFFER(pLogBuf) + end, msg, msgLen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOG_BUF_END(tLogBuff) = (LOG_BUF_END(tLogBuff) + msgLen) % LOG_BUF_SIZE(tLogBuff);
|
LOG_BUF_END(pLogBuf) = (LOG_BUF_END(pLogBuf) + msgLen) % LOG_BUF_SIZE(pLogBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, const char *msg, int32_t msgLen) {
|
static int32_t taosPushLogBuffer(SLogBuff *pLogBuf, const char *msg, int32_t msgLen) {
|
||||||
int32_t start = 0;
|
int32_t start = 0;
|
||||||
int32_t end = 0;
|
int32_t end = 0;
|
||||||
int32_t remainSize = 0;
|
int32_t remainSize = 0;
|
||||||
|
@ -552,13 +559,13 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, const char *msg, int32_t ms
|
||||||
char tmpBuf[40] = {0};
|
char tmpBuf[40] = {0};
|
||||||
int32_t tmpBufLen = 0;
|
int32_t tmpBufLen = 0;
|
||||||
|
|
||||||
if (tLogBuff == NULL || tLogBuff->stop) return -1;
|
if (pLogBuf == NULL || pLogBuf->stop) return -1;
|
||||||
|
|
||||||
taosThreadMutexLock(&LOG_BUF_MUTEX(tLogBuff));
|
taosThreadMutexLock(&LOG_BUF_MUTEX(pLogBuf));
|
||||||
start = LOG_BUF_START(tLogBuff);
|
start = LOG_BUF_START(pLogBuf);
|
||||||
end = LOG_BUF_END(tLogBuff);
|
end = LOG_BUF_END(pLogBuf);
|
||||||
|
|
||||||
remainSize = (start > end) ? (start - end - 1) : (start + LOG_BUF_SIZE(tLogBuff) - end - 1);
|
remainSize = (start > end) ? (start - end - 1) : (start + LOG_BUF_SIZE(pLogBuf) - end - 1);
|
||||||
|
|
||||||
if (lostLine > 0) {
|
if (lostLine > 0) {
|
||||||
sprintf(tmpBuf, "...Lost %" PRId64 " lines here...\n", lostLine);
|
sprintf(tmpBuf, "...Lost %" PRId64 " lines here...\n", lostLine);
|
||||||
|
@ -568,47 +575,47 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, const char *msg, int32_t ms
|
||||||
if (remainSize <= msgLen || ((lostLine > 0) && (remainSize <= (msgLen + tmpBufLen)))) {
|
if (remainSize <= msgLen || ((lostLine > 0) && (remainSize <= (msgLen + tmpBufLen)))) {
|
||||||
lostLine++;
|
lostLine++;
|
||||||
tsAsyncLogLostLines++;
|
tsAsyncLogLostLines++;
|
||||||
taosThreadMutexUnlock(&LOG_BUF_MUTEX(tLogBuff));
|
taosThreadMutexUnlock(&LOG_BUF_MUTEX(pLogBuf));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lostLine > 0) {
|
if (lostLine > 0) {
|
||||||
taosCopyLogBuffer(tLogBuff, start, end, tmpBuf, tmpBufLen);
|
taosCopyLogBuffer(pLogBuf, start, end, tmpBuf, tmpBufLen);
|
||||||
lostLine = 0;
|
lostLine = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
taosCopyLogBuffer(tLogBuff, LOG_BUF_START(tLogBuff), LOG_BUF_END(tLogBuff), msg, msgLen);
|
taosCopyLogBuffer(pLogBuf, LOG_BUF_START(pLogBuf), LOG_BUF_END(pLogBuf), msg, msgLen);
|
||||||
|
|
||||||
// int32_t w = atomic_sub_fetch_32(&waitLock, 1);
|
// int32_t w = atomic_sub_fetch_32(&waitLock, 1);
|
||||||
/*
|
/*
|
||||||
if (w <= 0 || ((remainSize - msgLen - tmpBufLen) < (LOG_BUF_SIZE(tLogBuff) * 4 /5))) {
|
if (w <= 0 || ((remainSize - msgLen - tmpBufLen) < (LOG_BUF_SIZE(pLogBuf) * 4 /5))) {
|
||||||
tsem_post(&(tLogBuff->buffNotEmpty));
|
tsem_post(&(pLogBuf->buffNotEmpty));
|
||||||
dbgPostN++;
|
dbgPostN++;
|
||||||
} else {
|
} else {
|
||||||
dbgNoPostN++;
|
dbgNoPostN++;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
taosThreadMutexUnlock(&LOG_BUF_MUTEX(tLogBuff));
|
taosThreadMutexUnlock(&LOG_BUF_MUTEX(pLogBuf));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t taosGetLogRemainSize(SLogBuff *tLogBuff, int32_t start, int32_t end) {
|
static int32_t taosGetLogRemainSize(SLogBuff *pLogBuf, int32_t start, int32_t end) {
|
||||||
int32_t rSize = end - start;
|
int32_t rSize = end - start;
|
||||||
|
|
||||||
return rSize >= 0 ? rSize : LOG_BUF_SIZE(tLogBuff) + rSize;
|
return rSize >= 0 ? rSize : LOG_BUF_SIZE(pLogBuf) + rSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void taosWriteLog(SLogBuff *tLogBuff) {
|
static void taosWriteLog(SLogBuff *pLogBuf) {
|
||||||
static int32_t lastDuration = 0;
|
static int32_t lastDuration = 0;
|
||||||
int32_t remainChecked = 0;
|
int32_t remainChecked = 0;
|
||||||
int32_t start, end, pollSize;
|
int32_t start, end, pollSize;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (remainChecked == 0) {
|
if (remainChecked == 0) {
|
||||||
start = LOG_BUF_START(tLogBuff);
|
start = LOG_BUF_START(pLogBuf);
|
||||||
end = LOG_BUF_END(tLogBuff);
|
end = LOG_BUF_END(pLogBuf);
|
||||||
|
|
||||||
if (start == end) {
|
if (start == end) {
|
||||||
dbgEmptyW++;
|
dbgEmptyW++;
|
||||||
|
@ -616,8 +623,8 @@ static void taosWriteLog(SLogBuff *tLogBuff) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pollSize = taosGetLogRemainSize(tLogBuff, start, end);
|
pollSize = taosGetLogRemainSize(pLogBuf, start, end);
|
||||||
if (pollSize < tLogBuff->minBuffSize) {
|
if (pollSize < pLogBuf->minBuffSize) {
|
||||||
lastDuration += tsWriteInterval;
|
lastDuration += tsWriteInterval;
|
||||||
if (lastDuration < LOG_MAX_WAIT_MSEC) {
|
if (lastDuration < LOG_MAX_WAIT_MSEC) {
|
||||||
break;
|
break;
|
||||||
|
@ -628,38 +635,38 @@ static void taosWriteLog(SLogBuff *tLogBuff) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (start < end) {
|
if (start < end) {
|
||||||
taosWriteFile(tLogBuff->pFile, LOG_BUF_BUFFER(tLogBuff) + start, pollSize);
|
taosWriteFile(pLogBuf->pFile, LOG_BUF_BUFFER(pLogBuf) + start, pollSize);
|
||||||
} else {
|
} else {
|
||||||
int32_t tsize = LOG_BUF_SIZE(tLogBuff) - start;
|
int32_t tsize = LOG_BUF_SIZE(pLogBuf) - start;
|
||||||
taosWriteFile(tLogBuff->pFile, LOG_BUF_BUFFER(tLogBuff) + start, tsize);
|
taosWriteFile(pLogBuf->pFile, LOG_BUF_BUFFER(pLogBuf) + start, tsize);
|
||||||
|
|
||||||
taosWriteFile(tLogBuff->pFile, LOG_BUF_BUFFER(tLogBuff), end);
|
taosWriteFile(pLogBuf->pFile, LOG_BUF_BUFFER(pLogBuf), end);
|
||||||
}
|
}
|
||||||
|
|
||||||
dbgWN++;
|
dbgWN++;
|
||||||
dbgWSize += pollSize;
|
dbgWSize += pollSize;
|
||||||
|
|
||||||
if (pollSize < tLogBuff->minBuffSize) {
|
if (pollSize < pLogBuf->minBuffSize) {
|
||||||
dbgSmallWN++;
|
dbgSmallWN++;
|
||||||
if (tsWriteInterval < LOG_MAX_INTERVAL) {
|
if (tsWriteInterval < LOG_MAX_INTERVAL) {
|
||||||
tsWriteInterval += LOG_INTERVAL_STEP;
|
tsWriteInterval += LOG_INTERVAL_STEP;
|
||||||
}
|
}
|
||||||
} else if (pollSize > LOG_BUF_SIZE(tLogBuff) / 3) {
|
} else if (pollSize > LOG_BUF_SIZE(pLogBuf) / 3) {
|
||||||
dbgBigWN++;
|
dbgBigWN++;
|
||||||
tsWriteInterval = LOG_MIN_INTERVAL;
|
tsWriteInterval = LOG_MIN_INTERVAL;
|
||||||
} else if (pollSize > LOG_BUF_SIZE(tLogBuff) / 4) {
|
} else if (pollSize > LOG_BUF_SIZE(pLogBuf) / 4) {
|
||||||
if (tsWriteInterval > LOG_MIN_INTERVAL) {
|
if (tsWriteInterval > LOG_MIN_INTERVAL) {
|
||||||
tsWriteInterval -= LOG_INTERVAL_STEP;
|
tsWriteInterval -= LOG_INTERVAL_STEP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + pollSize) % LOG_BUF_SIZE(tLogBuff);
|
LOG_BUF_START(pLogBuf) = (LOG_BUF_START(pLogBuf) + pollSize) % LOG_BUF_SIZE(pLogBuf);
|
||||||
|
|
||||||
start = LOG_BUF_START(tLogBuff);
|
start = LOG_BUF_START(pLogBuf);
|
||||||
end = LOG_BUF_END(tLogBuff);
|
end = LOG_BUF_END(pLogBuf);
|
||||||
|
|
||||||
pollSize = taosGetLogRemainSize(tLogBuff, start, end);
|
pollSize = taosGetLogRemainSize(pLogBuf, start, end);
|
||||||
if (pollSize < tLogBuff->minBuffSize) {
|
if (pollSize < pLogBuf->minBuffSize) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -670,16 +677,16 @@ static void taosWriteLog(SLogBuff *tLogBuff) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *taosAsyncOutputLog(void *param) {
|
static void *taosAsyncOutputLog(void *param) {
|
||||||
SLogBuff *tLogBuff = (SLogBuff *)param;
|
SLogBuff *pLogBuf = (SLogBuff *)param;
|
||||||
setThreadName("log");
|
setThreadName("log");
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
taosMsleep(tsWriteInterval);
|
taosMsleep(tsWriteInterval);
|
||||||
|
|
||||||
// Polling the buffer
|
// Polling the buffer
|
||||||
taosWriteLog(tLogBuff);
|
taosWriteLog(pLogBuf);
|
||||||
|
|
||||||
if (tLogBuff->stop) break;
|
if (pLogBuf->stop) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
|
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
|
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -i 1
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
system sh/cfg.sh -n dnode1
|
|
||||||
system sh/exec.sh -n dnode1 -s start
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
|
|
|
@ -3,21 +3,21 @@ add_executable(tmq_demo tmqDemo.c)
|
||||||
add_executable(tmq_sim tmqSim.c)
|
add_executable(tmq_sim tmqSim.c)
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
create_table
|
create_table
|
||||||
PUBLIC taos
|
PUBLIC taos_static
|
||||||
PUBLIC util
|
PUBLIC util
|
||||||
PUBLIC common
|
PUBLIC common
|
||||||
PUBLIC os
|
PUBLIC os
|
||||||
)
|
)
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
tmq_demo
|
tmq_demo
|
||||||
PUBLIC taos
|
PUBLIC taos_static
|
||||||
PUBLIC util
|
PUBLIC util
|
||||||
PUBLIC common
|
PUBLIC common
|
||||||
PUBLIC os
|
PUBLIC os
|
||||||
)
|
)
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
tmq_sim
|
tmq_sim
|
||||||
PUBLIC taos
|
PUBLIC taos_static
|
||||||
PUBLIC util
|
PUBLIC util
|
||||||
PUBLIC common
|
PUBLIC common
|
||||||
PUBLIC os
|
PUBLIC os
|
||||||
|
|
|
@ -2,7 +2,7 @@ aux_source_directory(src TSIM_SRC)
|
||||||
add_executable(tsim ${TSIM_SRC})
|
add_executable(tsim ${TSIM_SRC})
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
tsim
|
tsim
|
||||||
PUBLIC taos
|
PUBLIC taos_static
|
||||||
PUBLIC util
|
PUBLIC util
|
||||||
PUBLIC common
|
PUBLIC common
|
||||||
PUBLIC os
|
PUBLIC os
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#define MAX_BACKGROUND_SCRIPT_NUM 10
|
#define MAX_BACKGROUND_SCRIPT_NUM 10
|
||||||
#define MAX_FILE_NAME_LEN 256
|
#define MAX_FILE_NAME_LEN 256
|
||||||
#define MAX_ERROR_LEN 1024
|
#define MAX_ERROR_LEN 1024
|
||||||
#define MAX_QUERY_VALUE_LEN 40
|
#define MAX_QUERY_VALUE_LEN 10240
|
||||||
#define MAX_QUERY_COL_NUM 20
|
#define MAX_QUERY_COL_NUM 20
|
||||||
#define MAX_QUERY_ROW_NUM 20
|
#define MAX_QUERY_ROW_NUM 20
|
||||||
#define MAX_SYSTEM_RESULT_LEN 2048
|
#define MAX_SYSTEM_RESULT_LEN 2048
|
||||||
|
|
|
@ -305,7 +305,8 @@ bool simExecuteRunBackCmd(SScript *script, char *option) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void simReplaceStr(char *buf, char *src, char *dst) {
|
bool simReplaceStr(char *buf, char *src, char *dst) {
|
||||||
|
bool replaced = false;
|
||||||
char *begin = strstr(buf, src);
|
char *begin = strstr(buf, src);
|
||||||
if (begin != NULL) {
|
if (begin != NULL) {
|
||||||
int32_t srcLen = (int32_t)strlen(src);
|
int32_t srcLen = (int32_t)strlen(src);
|
||||||
|
@ -320,13 +321,16 @@ void simReplaceStr(char *buf, char *src, char *dst) {
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(begin, dst, dstLen);
|
memcpy(begin, dst, dstLen);
|
||||||
|
replaced = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
simInfo("system cmd is %s", buf);
|
simInfo("system cmd is %s", buf);
|
||||||
|
return replaced;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool simExecuteSystemCmd(SScript *script, char *option) {
|
bool simExecuteSystemCmd(SScript *script, char *option) {
|
||||||
char buf[4096] = {0};
|
char buf[4096] = {0};
|
||||||
|
bool replaced = false;
|
||||||
|
|
||||||
#ifndef WINDOWS
|
#ifndef WINDOWS
|
||||||
sprintf(buf, "cd %s; ", simScriptDir);
|
sprintf(buf, "cd %s; ", simScriptDir);
|
||||||
|
@ -341,7 +345,7 @@ bool simExecuteSystemCmd(SScript *script, char *option) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (useValgrind) {
|
if (useValgrind) {
|
||||||
simReplaceStr(buf, "exec.sh", "exec.sh -v");
|
replaced = simReplaceStr(buf, "exec.sh", "exec.sh -v");
|
||||||
}
|
}
|
||||||
|
|
||||||
simLogSql(buf, true);
|
simLogSql(buf, true);
|
||||||
|
@ -359,6 +363,11 @@ bool simExecuteSystemCmd(SScript *script, char *option) {
|
||||||
|
|
||||||
sprintf(script->system_exit_code, "%d", code);
|
sprintf(script->system_exit_code, "%d", code);
|
||||||
script->linePos++;
|
script->linePos++;
|
||||||
|
if (replaced && strstr(buf, "start") != NULL) {
|
||||||
|
simInfo("====> startup is slow in valgrind mode, so sleep 5 seconds after exec.sh -s start");
|
||||||
|
taosMsleep(5000);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ aux_source_directory(src SHELL_SRC)
|
||||||
add_executable(shell ${SHELL_SRC})
|
add_executable(shell ${SHELL_SRC})
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
shell
|
shell
|
||||||
PUBLIC taos
|
PUBLIC taos_static
|
||||||
PRIVATE os common transport util
|
PRIVATE os common transport util
|
||||||
)
|
)
|
||||||
target_include_directories(
|
target_include_directories(
|
||||||
|
|
Loading…
Reference in New Issue