mirror of
https://github.com/taosdata/TDengine
synced 2026-05-24 10:09:01 +00:00
* feat(mqtt): Initial commit for mqtt
* chore(xnode/mnd): xnode message handlers for mnode
* chore(mnd/xnode): mnode part for xnode
* chore(xnode/translater): fix show commands
* fix(ast/creater): fix xnode create option
* fix(xnode/ci): fix ci & doc's error codes
* chore(xnode/sql): make create/drop/show work properly
* fix(xnode/sql): commit new files
* fix(xnode/sql): commit cmake files
* fix: fix testing cases
* fix(xnode/tsc): fix tokens
* fix(ast/anode): fix anode update decl.
* fix(xnode/error): fix xnode error codes
* fix: xnode make/destroy
* chore: xnode with option & dnode id
* chore: use taosmqtt for xnode
* chore: new error code for xnode launching
* chore(xnode): new error code
* chore: header for _xnode_mgmt_mqtt
* chore: source for _xnode_mgmt_mqtt
* chore: remove test directory from cmake
* chore: remove taosmqtt for ci to compile
* chore: remove taosudf header from xnode
* chore: new window macro
* chore: remove xnode mgmt mqtt for windows compilation
* Revert "chore: remove xnode mgmt mqtt for windows compilation"
This reverts commit 197e1640c7.
* chore: cleanup code
* chore: xnode mgmt comment windows part out
* chore: mgmt/mqtt, move uv head toppest
* xnode/mnode: create xnode once per dnode
* fix(xnode/systable/test): fix column count
* xnode/sdb: renumber sdb type for xnode to make start/stop order correct
* xnode/mqtt: new param mqttPort
* fix SXnode's struct type
* transfer dnode id to mqtt subscription
* tmqtt: remove uv_a linking
* tmqtt/tools: sources for tools
* tools: fix windows compilation
* tools/producer: fix windows sleep param
* tools/producer: fix uninited var rc
* make tools only for linux
* test/mnodes: wail 1 or 2 seconds for offline to be leader
* update topic producer tool for geometry data type testing
* format tool sql statements
* show xnodes' ep
* make shell auto complete xnodes
* use usleep instead of sleep
* mqtt/proto: first version mqtt protocol
* remove assert styles
* build with linux only
* fix libuv for taosmqtt building
* fix log printing
* mem: use ttq_ prefix instead of tmqtt
* xnode/parser/proto: protocol option for xnode
* xnode/translater/option: translate xnode option proto
* xnode/translator: translate proto param
* xnode/tmsg: encode/decode proto param
* xnode/mnode: proto parma for mndXnode
* xnode/proto: protocol param for xnode
* xnode/mqtt: save/load proto from xnode json
* rename tmqtt proto header
* rename head directories
* rename header name styles
* restyle func names
* update
* update
* use camel db
* use camel for cxt
* update count of information_schema
* fix exceptional cases
* fix w.r.t reviews
* fixes w.r.t reviews
* use ttq_free
* append xnode msgs
* update information schema count
* support tmq meta data sub
* success typo fix
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix error line var w.r.t. suggestions from copilot
* denote mqtt node with bnode instead of xnode
* smoke testing for mqtt
* soak testing
* new package for test framework: paho 2.1.0
* import mqtt into util
* fix soak testing
* test/soak: user 5 topics per client
* test/soak: cover qos
* update docker image references to tdengine-ci:0.1 in CI scripts and common.py
* refactor: rename bnode msg to backup node
* refactor: rename xnode to bnode 1
* refactor: rename xnode to bnode 2
* refactor: rename xnode to bnode 3
* refactor: rename xnode to bnode 4
* refactor: rename xnode to bnode 4
* refactor: rename xnode to bnode 5
* refactor: rename xnode to bnode 6
* refactor: rename some files 1
* refactor: rename some files 2
* refactor: rename some files 3
* refactor: rename some files 4
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: chenhaoran <haoran920c@163.com>
Co-authored-by: Simon Guan <guanshengliang@qq.com>
155 lines
5.5 KiB
C
155 lines
5.5 KiB
C
/*
|
|
* 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/>.
|
|
*/
|
|
|
|
#ifndef _TD_UTIL_LOG_H_
|
|
#define _TD_UTIL_LOG_H_
|
|
|
|
#include "os.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum {
|
|
DEBUG_FATAL = 1,
|
|
DEBUG_ERROR = 1,
|
|
DEBUG_WARN = 2,
|
|
DEBUG_INFO = 2,
|
|
DEBUG_DEBUG = 4,
|
|
DEBUG_TRACE = 8,
|
|
DEBUG_DUMP = 16,
|
|
DEBUG_SCREEN = 64,
|
|
DEBUG_FILE = 128
|
|
} ELogLevel;
|
|
|
|
typedef enum {
|
|
LOG_MODE_TAOSC = 1,
|
|
LOG_MODE_TAOSD = 2
|
|
} ELogMode;
|
|
|
|
typedef void (*LogFp)(int64_t ts, ELogLevel level, const char *content);
|
|
|
|
extern bool tsLogEmbedded;
|
|
extern bool tsAsyncLog;
|
|
extern bool tsAssert;
|
|
extern int32_t tsNumOfLogLines;
|
|
extern int32_t tsLogKeepDays;
|
|
extern char *tsLogOutput;
|
|
extern LogFp tsLogFp;
|
|
extern int64_t tsNumOfErrorLogs;
|
|
extern int64_t tsNumOfInfoLogs;
|
|
extern int64_t tsNumOfDebugLogs;
|
|
extern int64_t tsNumOfTraceLogs;
|
|
extern int32_t dDebugFlag;
|
|
extern int32_t vDebugFlag;
|
|
extern int32_t mDebugFlag;
|
|
extern int32_t cDebugFlag;
|
|
extern int32_t jniDebugFlag;
|
|
extern int32_t tmrDebugFlag;
|
|
extern int32_t uDebugFlag;
|
|
extern int32_t rpcDebugFlag;
|
|
extern int32_t qDebugFlag;
|
|
extern int32_t stDebugFlag;
|
|
extern int32_t wDebugFlag;
|
|
extern int32_t azDebugFlag;
|
|
extern int32_t sDebugFlag;
|
|
extern int32_t tsdbDebugFlag;
|
|
extern int32_t tqDebugFlag;
|
|
extern int32_t fsDebugFlag;
|
|
extern int32_t metaDebugFlag;
|
|
extern int32_t udfDebugFlag;
|
|
extern int32_t smaDebugFlag;
|
|
extern int32_t idxDebugFlag;
|
|
extern int32_t tdbDebugFlag;
|
|
extern int32_t sndDebugFlag;
|
|
extern int32_t bndDebugFlag;
|
|
extern int32_t simDebugFlag;
|
|
|
|
extern int32_t tqClientDebugFlag;
|
|
int32_t taosInitLogOutput(const char **ppLogName);
|
|
int32_t taosInitLog(const char *logName, int32_t maxFiles, bool tsc);
|
|
void taosCloseLog();
|
|
void taosResetLog();
|
|
void taosDumpData(uint8_t *msg, int32_t len);
|
|
void taosSetNoNewFile();
|
|
|
|
// Fast uint64_t to string conversion, equivalent to sprintf(buf, "%lu", val) but with 10x better performance.
|
|
char *u64toaFastLut(uint64_t val, char *buf);
|
|
|
|
void taosPrintLog(const char *flags, int32_t level, int32_t dflag, const char *format, ...)
|
|
#ifdef __GNUC__
|
|
__attribute__((format(printf, 4, 5)))
|
|
#endif
|
|
;
|
|
|
|
void taosPrintLongString(const char *flags, int32_t level, int32_t dflag, const char *format, ...)
|
|
#ifdef __GNUC__
|
|
__attribute__((format(printf, 4, 5)))
|
|
#endif
|
|
;
|
|
|
|
void taosPrintSlowLog(const char *format, ...)
|
|
#ifdef __GNUC__
|
|
__attribute__((format(printf, 1, 2)))
|
|
#endif
|
|
;
|
|
|
|
bool taosAssertDebug(bool condition, const char *file, int32_t line, bool core, const char *format, ...);
|
|
bool taosAssertRelease(bool condition);
|
|
|
|
// Disable all asserts that may compromise the performance.
|
|
#if defined DISABLE_ASSERT
|
|
#define ASSERT(condition)
|
|
#define ASSERTS(condition, ...) (0)
|
|
#else
|
|
#define ASSERT_CORE(condition, ...) \
|
|
((condition) ? false : taosAssertDebug(condition, __FILE__, __LINE__, 1, __VA_ARGS__))
|
|
#define ASSERTS(condition, ...) ((condition) ? false : taosAssertDebug(condition, __FILE__, __LINE__, 0, __VA_ARGS__))
|
|
#ifdef NDEBUG
|
|
#define ASSERT(condition) taosAssertRelease(condition)
|
|
#else
|
|
#define ASSERT(condition) ASSERTS(condition, "assert info not provided")
|
|
#endif
|
|
#endif
|
|
|
|
void taosLogCrashInfo(char *nodeType, char *pMsg, int64_t msgLen, int signum, void *sigInfo);
|
|
void taosReadCrashInfo(char *filepath, char **pMsg, int64_t *pMsgLen, TdFilePtr *pFd);
|
|
void taosReleaseCrashLogFile(TdFilePtr pFile, bool truncateFile);
|
|
|
|
int32_t initCrashLogWriter();
|
|
void checkAndPrepareCrashInfo();
|
|
bool reportThreadSetQuit();
|
|
void writeCrashLogToFile(int signum, void *sigInfo, char *nodeType, int64_t clusterId, int64_t startTime);
|
|
|
|
// clang-format off
|
|
#define uFatal(...) { if (uDebugFlag & DEBUG_FATAL) { taosPrintLog("UTL FATAL ", DEBUG_FATAL, tsLogEmbedded ? 255 : uDebugFlag, __VA_ARGS__); }}
|
|
#define uError(...) { if (uDebugFlag & DEBUG_ERROR) { taosPrintLog("UTL ERROR ", DEBUG_ERROR, tsLogEmbedded ? 255 : uDebugFlag, __VA_ARGS__); }}
|
|
#define uWarn(...) { if (uDebugFlag & DEBUG_WARN) { taosPrintLog("UTL WARN ", DEBUG_WARN, tsLogEmbedded ? 255 : uDebugFlag, __VA_ARGS__); }}
|
|
#define uInfo(...) { if (uDebugFlag & DEBUG_INFO) { taosPrintLog("UTL INFO ", DEBUG_INFO, tsLogEmbedded ? 255 : uDebugFlag, __VA_ARGS__); }}
|
|
#define uDebug(...) { if (uDebugFlag & DEBUG_DEBUG) { taosPrintLog("UTL DEBUG ", DEBUG_DEBUG, uDebugFlag, __VA_ARGS__); }}
|
|
#define uTrace(...) { if (uDebugFlag & DEBUG_TRACE) { taosPrintLog("UTL TRACE ", DEBUG_TRACE, uDebugFlag, __VA_ARGS__); }}
|
|
#define uDebugL(...){ if (uDebugFlag & DEBUG_DEBUG) { taosPrintLongString("UTL DEBUG ", DEBUG_DEBUG, uDebugFlag, __VA_ARGS__); }}
|
|
#define uInfoL(...) { if (uDebugFlag & DEBUG_INFO) { taosPrintLongString("UTL INFO ", DEBUG_INFO, tsLogEmbedded ? 255 : uDebugFlag, __VA_ARGS__); }}
|
|
|
|
#define pError(...) { taosPrintLog("APP ERROR ", DEBUG_ERROR, 255, __VA_ARGS__); }
|
|
#define pPrint(...) { taosPrintLog("APP INFO ", DEBUG_INFO, 255, __VA_ARGS__); }
|
|
// clang-format on
|
|
|
|
// #define BUF_PAGE_DEBUG
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /*_TD_UTIL_LOG_H_*/
|