提交 63a68154 编写于 作者: H Hongze Cheng

more refact

上级 73254132
...@@ -102,8 +102,8 @@ typedef struct STsdb STsdb; ...@@ -102,8 +102,8 @@ typedef struct STsdb STsdb;
STsdbCfg *tsdbGetCfg(const STsdb *repo); STsdbCfg *tsdbGetCfg(const STsdb *repo);
// --------- TSDB REPOSITORY DEFINITION // --------- TSDB REPOSITORY DEFINITION
int32_t tsdbCreateRepo(int repoid); // int32_t tsdbCreateRepo(int repoid);
int32_t tsdbDropRepo(int repoid); // int32_t tsdbDropRepo(int repoid);
STsdb * tsdbOpen(STsdbCfg *pCfg, STsdbAppH *pAppH); STsdb * tsdbOpen(STsdbCfg *pCfg, STsdbAppH *pAppH);
int tsdbClose(STsdb *repo, int toCommit); int tsdbClose(STsdb *repo, int toCommit);
int32_t tsdbConfigRepo(STsdb *repo, STsdbCfg *pCfg); int32_t tsdbConfigRepo(STsdb *repo, STsdbCfg *pCfg);
...@@ -221,6 +221,7 @@ typedef struct SMemRef { ...@@ -221,6 +221,7 @@ typedef struct SMemRef {
SMemSnapshot snapshot; SMemSnapshot snapshot;
} SMemRef; } SMemRef;
#if 0
typedef struct SFileBlockInfo { typedef struct SFileBlockInfo {
int32_t numBlocksOfStep; int32_t numBlocksOfStep;
} SFileBlockInfo; } SFileBlockInfo;
...@@ -418,20 +419,21 @@ void tsdbSwitchTable(TsdbQueryHandleT pQueryHandle); ...@@ -418,20 +419,21 @@ void tsdbSwitchTable(TsdbQueryHandleT pQueryHandle);
int tsdbSyncSend(void *pRepo, SOCKET socketFd); int tsdbSyncSend(void *pRepo, SOCKET socketFd);
int tsdbSyncRecv(void *pRepo, SOCKET socketFd); int tsdbSyncRecv(void *pRepo, SOCKET socketFd);
// For TSDB Compact // // For TSDB Compact
int tsdbCompact(STsdb *pRepo); // int tsdbCompact(STsdb *pRepo);
// For TSDB Health Monitor // For TSDB Health Monitor
// no problem return true // // no problem return true
bool tsdbNoProblem(STsdb *pRepo); // bool tsdbNoProblem(STsdb *pRepo);
// unit of walSize: MB // // unit of walSize: MB
int tsdbCheckWal(STsdb *pRepo, uint32_t walSize); // int tsdbCheckWal(STsdb *pRepo, uint32_t walSize);
// for json tag // // for json tag
void *getJsonTagValueElment(void *data, char *key, int32_t keyLen, char *out, int16_t bytes); // void *getJsonTagValueElment(void *data, char *key, int32_t keyLen, char *out, int16_t bytes);
void getJsonTagValueAll(void *data, void *dst, int16_t bytes); // void getJsonTagValueAll(void *data, void *dst, int16_t bytes);
char *parseTagDatatoJson(void *p); // char *parseTagDatatoJson(void *p);
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -12,17 +12,17 @@ ...@@ -12,17 +12,17 @@
* You should have received a copy of the GNU Affero General Public License * 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/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef _TD_TSDB_COMPACT_H_ // #ifndef _TD_TSDB_COMPACT_H_
#define _TD_TSDB_COMPACT_H_ // #define _TD_TSDB_COMPACT_H_
#ifdef __cplusplus // #ifdef __cplusplus
extern "C" { // extern "C" {
#endif // #endif
void *tsdbCompactImpl(STsdb *pRepo); // void *tsdbCompactImpl(STsdb *pRepo);
#ifdef __cplusplus // #ifdef __cplusplus
} // }
#endif // #endif
#endif /* _TD_TSDB_COMPACT_H_ */ // #endif /* _TD_TSDB_COMPACT_H_ */
\ No newline at end of file \ No newline at end of file
/*
* 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_TSDB_HEALTH_H_
// #define _TD_TSDB_HEALTH_H_
// #include "os.h"
// #include "tsdb.h"
// bool tsdbUrgeQueryFree(STsdbRepo* pRepo);
// int32_t tsdbInsertNewBlock(STsdbRepo* pRepo);
// bool tsdbIdleMemEnough();
// bool tsdbAllowNewBlock(STsdbRepo* pRepo);
// #endif /* _TD_TSDB_BUFFER_H_ */
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
* You should have received a copy of the GNU Affero General Public License * 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/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#if 0
#include "tsdbint.h" #include "tsdbint.h"
typedef struct { typedef struct {
...@@ -538,3 +540,4 @@ static int tsdbCompactMeta(STsdb *pRepo) { ...@@ -538,3 +540,4 @@ static int tsdbCompactMeta(STsdb *pRepo) {
return 0; return 0;
} }
#endif
\ No newline at end of file
...@@ -217,7 +217,7 @@ int tsdbScanAndTryFixMFile(STsdb *pRepo) { ...@@ -217,7 +217,7 @@ int tsdbScanAndTryFixMFile(STsdb *pRepo) {
return -1; return -1;
} }
if (taosFtruncate(mf.fd, mf.info.size) < 0) { if (taosFtruncateFile(mf.fd, mf.info.size) < 0) {
terrno = TAOS_SYSTEM_ERROR(errno); terrno = TAOS_SYSTEM_ERROR(errno);
tsdbCloseMFile(&mf); tsdbCloseMFile(&mf);
return -1; return -1;
...@@ -276,7 +276,7 @@ static int tsdbRollBackMFile(SMFile *pMFile) { ...@@ -276,7 +276,7 @@ static int tsdbRollBackMFile(SMFile *pMFile) {
return -1; return -1;
} }
if (taosFtruncate(TSDB_FILE_FD(&mf), pMFile->info.size) < 0) { if (taosFtruncateFile(TSDB_FILE_FD(&mf), pMFile->info.size) < 0) {
terrno = TAOS_SYSTEM_ERROR(errno); terrno = TAOS_SYSTEM_ERROR(errno);
tsdbCloseMFile(&mf); tsdbCloseMFile(&mf);
return -1; return -1;
...@@ -459,7 +459,7 @@ static int tsdbScanAndTryFixDFile(STsdb *pRepo, SDFile *pDFile) { ...@@ -459,7 +459,7 @@ static int tsdbScanAndTryFixDFile(STsdb *pRepo, SDFile *pDFile) {
return -1; return -1;
} }
if (taosFtruncate(df.fd, df.info.size) < 0) { if (taosFtruncateFile(df.fd, df.info.size) < 0) {
terrno = TAOS_SYSTEM_ERROR(errno); terrno = TAOS_SYSTEM_ERROR(errno);
tsdbCloseDFile(&df); tsdbCloseDFile(&df);
return -1; return -1;
......
/*
* 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/>.
*/
#if 0
#include "tsdbHealth.h"
#include "os.h"
#include "query.h"
#include "tarray.h"
#include "tglobal.h"
#include "tlist.h"
#include "tmsg.h"
#include "tsdbBuffer.h"
#include "tsdbLog.h"
#include "tsdbint.h"
#include "tthread.h"
#include "ttimer.h"
// return malloc new block count
int32_t tsdbInsertNewBlock(STsdbRepo* pRepo) {
STsdbBufPool* pPool = pRepo->pPool;
int32_t cnt = 0;
if (tsdbAllowNewBlock(pRepo)) {
STsdbBufBlock* pBufBlock = tsdbNewBufBlock(pPool->bufBlockSize);
if (pBufBlock) {
if (tdListAppend(pPool->bufBlockList, (void*)(&pBufBlock)) < 0) {
// append error
tsdbFreeBufBlock(pBufBlock);
} else {
pPool->nElasticBlocks++;
cnt++;
}
}
}
return cnt;
}
// switch anther thread to run
void* cbKillQueryFree(void* param) {
STsdbRepo* pRepo = (STsdbRepo*)param;
// vnode
if (pRepo->appH.notifyStatus) {
pRepo->appH.notifyStatus(pRepo->appH.appH, TSDB_STATUS_COMMIT_NOBLOCK, TSDB_CODE_SUCCESS);
}
// free
if (pRepo->pthread) {
void* p = pRepo->pthread;
pRepo->pthread = NULL;
free(p);
}
return NULL;
}
// return true do free , false do nothing
bool tsdbUrgeQueryFree(STsdbRepo* pRepo) {
// check previous running
if (pRepo->pthread && taosThreadRunning(pRepo->pthread)) {
tsdbWarn("vgId:%d pre urge thread is runing. nBlocks=%d nElasticBlocks=%d", REPO_ID(pRepo),
pRepo->pPool->nBufBlocks, pRepo->pPool->nElasticBlocks);
return false;
}
// create new
pRepo->pthread = taosCreateThread(cbKillQueryFree, pRepo);
if (pRepo->pthread == NULL) {
tsdbError("vgId:%d create urge thread error.", REPO_ID(pRepo));
return false;
}
return true;
}
bool tsdbAllowNewBlock(STsdbRepo* pRepo) {
int32_t nMaxElastic = pRepo->config.totalBlocks / 3;
STsdbBufPool* pPool = pRepo->pPool;
if (pPool->nElasticBlocks >= nMaxElastic) {
tsdbWarn("vgId:%d tsdbAllowNewBlock return fasle. nElasticBlock(%d) >= MaxElasticBlocks(%d)", REPO_ID(pRepo),
pPool->nElasticBlocks, nMaxElastic);
return false;
}
return true;
}
bool tsdbNoProblem(STsdbRepo* pRepo) {
if (listNEles(pRepo->pPool->bufBlockList) == 0) return false;
return true;
}
#endif
\ No newline at end of file
...@@ -32,36 +32,36 @@ static void tsdbStopStream(STsdb *pRepo); ...@@ -32,36 +32,36 @@ static void tsdbStopStream(STsdb *pRepo);
static int tsdbRestoreLastColumns(STsdb *pRepo, STable *pTable, SReadH* pReadh); static int tsdbRestoreLastColumns(STsdb *pRepo, STable *pTable, SReadH* pReadh);
static int tsdbRestoreLastRow(STsdb *pRepo, STable *pTable, SReadH* pReadh, SBlockIdx *pIdx); static int tsdbRestoreLastRow(STsdb *pRepo, STable *pTable, SReadH* pReadh, SBlockIdx *pIdx);
// Function declaration // // Function declaration
int32_t tsdbCreateRepo(int repoid) { // int32_t tsdbCreateRepo(int repoid) {
char tsdbDir[TSDB_FILENAME_LEN] = "\0"; // char tsdbDir[TSDB_FILENAME_LEN] = "\0";
char dataDir[TSDB_FILENAME_LEN] = "\0"; // char dataDir[TSDB_FILENAME_LEN] = "\0";
tsdbGetRootDir(repoid, tsdbDir); // tsdbGetRootDir(repoid, tsdbDir);
if (tfsMkdir(tsdbDir) < 0) { // if (tfsMkdir(tsdbDir) < 0) {
goto _err; // goto _err;
} // }
tsdbGetDataDir(repoid, dataDir); // tsdbGetDataDir(repoid, dataDir);
if (tfsMkdir(dataDir) < 0) { // if (tfsMkdir(dataDir) < 0) {
goto _err; // goto _err;
} // }
// TODO: need to create current file with nothing in // // TODO: need to create current file with nothing in
return 0; // return 0;
_err: // _err:
tsdbError("vgId:%d failed to create TSDB repository since %s", repoid, tstrerror(terrno)); // tsdbError("vgId:%d failed to create TSDB repository since %s", repoid, tstrerror(terrno));
return -1; // return -1;
} // }
int32_t tsdbDropRepo(int repoid) { // int32_t tsdbDropRepo(int repoid) {
char tsdbDir[TSDB_FILENAME_LEN] = "\0"; // char tsdbDir[TSDB_FILENAME_LEN] = "\0";
tsdbGetRootDir(repoid, tsdbDir); // tsdbGetRootDir(repoid, tsdbDir);
return tfsRmdir(tsdbDir); // return tfsRmdir(tsdbDir);
} // }
STsdb *tsdbOpen(STsdbCfg *pCfg, STsdbAppH *pAppH) { STsdb *tsdbOpen(STsdbCfg *pCfg, STsdbAppH *pAppH) {
STsdb *pRepo; STsdb *pRepo;
......
/*
* 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 "tsdbint.h"
#if 0
#ifndef _TSDB_PLUGINS
int tsdbScanFGroup(STsdbScanHandle* pScanHandle, char* rootDir, int fid) { return 0; }
STsdbScanHandle* tsdbNewScanHandle() { return NULL; }
void tsdbSetScanLogStream(STsdbScanHandle* pScanHandle, FILE* fLogStream) {}
int tsdbSetAndOpenScanFile(STsdbScanHandle* pScanHandle, char* rootDir, int fid) { return 0; }
int tsdbScanSBlockIdx(STsdbScanHandle* pScanHandle) { return 0; }
int tsdbScanSBlock(STsdbScanHandle* pScanHandle, int idx) { return 0; }
int tsdbCloseScanFile(STsdbScanHandle* pScanHandle) { return 0; }
void tsdbFreeScanHandle(STsdbScanHandle* pScanHandle) {}
#endif
#endif
\ No newline at end of file
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册