vnodeInt.h 15.4 KB
Newer Older
H
save  
Hongze Cheng 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*
 * 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/>.
 */

H
refact  
Hongze Cheng 已提交
16 17
#ifndef _TD_VNODE_DEF_H_
#define _TD_VNODE_DEF_H_
H
save  
Hongze Cheng 已提交
18

H
Hongze Cheng 已提交
19
#include "executor.h"
H
Hongze Cheng 已提交
20 21 22
#include "filter.h"
#include "qworker.h"
#include "sync.h"
H
Hongze Cheng 已提交
23
#include "tRealloc.h"
H
Hongze Cheng 已提交
24
#include "tchecksum.h"
H
more  
Hongze Cheng 已提交
25
#include "tcoding.h"
H
Hongze Cheng 已提交
26
#include "tcompare.h"
H
Hongze Cheng 已提交
27
#include "tcompression.h"
L
Liu Jicong 已提交
28
#include "tdatablock.h"
H
Hongze Cheng 已提交
29
#include "tdb.h"
H
Hongze Cheng 已提交
30
#include "tencode.h"
H
refact  
Hongze Cheng 已提交
31
#include "tfs.h"
H
Hongze Cheng 已提交
32
#include "tglobal.h"
H
Hongze Cheng 已提交
33
#include "tjson.h"
H
Hongze Cheng 已提交
34
#include "tlist.h"
H
refact  
Hongze Cheng 已提交
35
#include "tlockfree.h"
H
Hongze Cheng 已提交
36
#include "tlosertree.h"
H
Hongze Cheng 已提交
37
#include "tlrucache.h"
38
#include "tmsgcb.h"
H
Hongze Cheng 已提交
39
#include "tref.h"
H
Hongze Cheng 已提交
40
#include "tskiplist.h"
H
Hongze Cheng 已提交
41
#include "tstream.h"
H
Hongze Cheng 已提交
42
#include "ttime.h"
H
Hongze Cheng 已提交
43 44
#include "ttimer.h"
#include "wal.h"
H
save  
Hongze Cheng 已提交
45

H
Hongze Cheng 已提交
46 47
#include "vnode.h"

H
save  
Hongze Cheng 已提交
48 49 50 51
#ifdef __cplusplus
extern "C" {
#endif

L
Liu Jicong 已提交
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
typedef struct SVnodeInfo         SVnodeInfo;
typedef struct SMeta              SMeta;
typedef struct SSma               SSma;
typedef struct STsdb              STsdb;
typedef struct STQ                STQ;
typedef struct SVState            SVState;
typedef struct SVBufPool          SVBufPool;
typedef struct SQWorker           SQHandle;
typedef struct STsdbKeepCfg       STsdbKeepCfg;
typedef struct SMetaSnapReader    SMetaSnapReader;
typedef struct SMetaSnapWriter    SMetaSnapWriter;
typedef struct STsdbSnapReader    STsdbSnapReader;
typedef struct STsdbSnapWriter    STsdbSnapWriter;
typedef struct STqSnapReader      STqSnapReader;
typedef struct STqSnapWriter      STqSnapWriter;
typedef struct STqOffsetReader    STqOffsetReader;
typedef struct STqOffsetWriter    STqOffsetWriter;
typedef struct SStreamTaskReader  SStreamTaskReader;
typedef struct SStreamTaskWriter  SStreamTaskWriter;
typedef struct SStreamStateReader SStreamStateReader;
typedef struct SStreamStateWriter SStreamStateWriter;
typedef struct SRsmaSnapReader    SRsmaSnapReader;
typedef struct SRsmaSnapWriter    SRsmaSnapWriter;
typedef struct SSnapDataHdr       SSnapDataHdr;
H
refact  
Hongze Cheng 已提交
76

C
Cary Xu 已提交
77 78 79 80 81
#define VNODE_META_DIR  "meta"
#define VNODE_TSDB_DIR  "tsdb"
#define VNODE_TQ_DIR    "tq"
#define VNODE_WAL_DIR   "wal"
#define VNODE_TSMA_DIR  "tsma"
C
Cary Xu 已提交
82
#define VNODE_RSMA_DIR  "rsma"
C
Cary Xu 已提交
83
#define VNODE_RSMA0_DIR "tsdb"
C
Cary Xu 已提交
84 85
#define VNODE_RSMA1_DIR "rsma1"
#define VNODE_RSMA2_DIR "rsma2"
H
Hongze Cheng 已提交
86

H
Hongze Cheng 已提交
87
// vnd.h
H
Hongze Cheng 已提交
88 89
void* vnodeBufPoolMalloc(SVBufPool* pPool, int size);
void  vnodeBufPoolFree(SVBufPool* pPool, void* p);
H
Hongze Cheng 已提交
90 91
void  vnodeBufPoolRef(SVBufPool* pPool);
void  vnodeBufPoolUnRef(SVBufPool* pPool);
H
Hongze Cheng 已提交
92 93 94

// meta
typedef struct SMCtbCursor SMCtbCursor;
C
Cary Xu 已提交
95
typedef struct SMStbCursor SMStbCursor;
H
Hongze Cheng 已提交
96 97 98 99
typedef struct STbUidStore STbUidStore;

int             metaOpen(SVnode* pVnode, SMeta** ppMeta);
int             metaClose(SMeta* pMeta);
100
int             metaBegin(SMeta* pMeta, int8_t fromSys);
H
Hongze Cheng 已提交
101 102
int             metaCommit(SMeta* pMeta);
int             metaCreateSTable(SMeta* pMeta, int64_t version, SVCreateStbReq* pReq);
H
Hongze Cheng 已提交
103
int             metaAlterSTable(SMeta* pMeta, int64_t version, SVCreateStbReq* pReq);
104
int             metaDropSTable(SMeta* pMeta, int64_t verison, SVDropStbReq* pReq, SArray* tbUidList);
H
Hongze Cheng 已提交
105
int             metaCreateTable(SMeta* pMeta, int64_t version, SVCreateTbReq* pReq);
106
int             metaDropTable(SMeta* pMeta, int64_t version, SVDropTbReq* pReq, SArray* tbUids);
H
Hongze Cheng 已提交
107
int             metaTtlDropTable(SMeta* pMeta, int64_t ttl, SArray* tbUids);
H
more  
Hongze Cheng 已提交
108
int             metaAlterTable(SMeta* pMeta, int64_t version, SVAlterTbReq* pReq, STableMetaRsp* pMetaRsp);
H
Hongze Cheng 已提交
109 110
SSchemaWrapper* metaGetTableSchema(SMeta* pMeta, tb_uid_t uid, int32_t sver, bool isinline);
STSchema*       metaGetTbTSchema(SMeta* pMeta, tb_uid_t uid, int32_t sver);
H
Hongze Cheng 已提交
111
int32_t         metaGetTbTSchemaEx(SMeta* pMeta, tb_uid_t suid, tb_uid_t uid, int32_t sver, STSchema** ppTSchema);
H
Hongze Cheng 已提交
112
int             metaGetTableEntryByName(SMetaReader* pReader, const char* name);
H
Hongze Cheng 已提交
113
tb_uid_t        metaGetTableEntryUidByName(SMeta* pMeta, const char* name);
114 115
int64_t         metaGetTbNum(SMeta* pMeta);
int64_t         metaGetTimeSeriesNum(SMeta* pMeta);
H
Hongze Cheng 已提交
116
SMCtbCursor*    metaOpenCtbCursor(SMeta* pMeta, tb_uid_t uid);
C
Cary Xu 已提交
117
void            metaCloseCtbCursor(SMCtbCursor* pCtbCur);
H
Hongze Cheng 已提交
118
tb_uid_t        metaCtbCursorNext(SMCtbCursor* pCtbCur);
C
Cary Xu 已提交
119 120 121
SMStbCursor*    metaOpenStbCursor(SMeta* pMeta, tb_uid_t uid);
void            metaCloseStbCursor(SMStbCursor* pStbCur);
tb_uid_t        metaStbCursorNext(SMStbCursor* pStbCur);
C
Cary Xu 已提交
122 123 124 125
STSma*          metaGetSmaInfoByIndex(SMeta* pMeta, int64_t indexUid);
STSmaWrapper*   metaGetSmaInfoByTable(SMeta* pMeta, tb_uid_t uid, bool deepCopy);
SArray*         metaGetSmaIdsByTable(SMeta* pMeta, tb_uid_t uid);
SArray*         metaGetSmaTbUids(SMeta* pMeta);
dengyihao's avatar
dengyihao 已提交
126
void*           metaGetIdx(SMeta* pMeta);
dengyihao's avatar
dengyihao 已提交
127
void*           metaGetIvtIdx(SMeta* pMeta);
H
Hongze Cheng 已提交
128
int             metaTtlSmaller(SMeta* pMeta, uint64_t time, SArray* uidList);
C
Cary Xu 已提交
129

130 131
int32_t metaCreateTSma(SMeta* pMeta, int64_t version, SSmaCfg* pCfg);
int32_t metaDropTSma(SMeta* pMeta, int64_t indexUid);
H
Hongze Cheng 已提交
132

H
Hongze Cheng 已提交
133 134 135 136 137 138 139 140
typedef struct SMetaInfo {
  int64_t uid;
  int64_t suid;
  int64_t version;
  int32_t skmVer;
} SMetaInfo;
int32_t metaGetInfo(SMeta* pMeta, int64_t uid, SMetaInfo* pInfo);

H
Hongze Cheng 已提交
141
// tsdb
H
Hongze Cheng 已提交
142 143 144 145
int         tsdbOpen(SVnode* pVnode, STsdb** ppTsdb, const char* dir, STsdbKeepCfg* pKeepCfg);
int         tsdbClose(STsdb** pTsdb);
int32_t     tsdbBegin(STsdb* pTsdb);
int32_t     tsdbCommit(STsdb* pTsdb);
H
Hongze Cheng 已提交
146
int32_t     tsdbDoRetention(STsdb* pTsdb, int64_t now);
H
Hongze Cheng 已提交
147 148 149 150 151 152 153
int         tsdbScanAndConvertSubmitMsg(STsdb* pTsdb, SSubmitReq* pMsg);
int         tsdbInsertData(STsdb* pTsdb, int64_t version, SSubmitReq* pMsg, SSubmitRsp* pRsp);
int32_t     tsdbInsertTableData(STsdb* pTsdb, int64_t version, SSubmitMsgIter* pMsgIter, SSubmitBlk* pBlock,
                                SSubmitBlkRsp* pRsp);
int32_t     tsdbDeleteTableData(STsdb* pTsdb, int64_t version, tb_uid_t suid, tb_uid_t uid, TSKEY sKey, TSKEY eKey);
STsdbReader tsdbQueryCacheLastT(STsdb* tsdb, SQueryTableDataCond* pCond, STableListInfo* tableList, uint64_t qId,
                                void* pMemRef);
M
Minglei Jin 已提交
154
int32_t     tsdbSetKeepCfg(STsdb* pTsdb, STsdbCfg* pCfg);
155
int32_t     tsdbGetStbIdList(SMeta* pMeta, int64_t suid, SArray* list);
H
Hongze Cheng 已提交
156 157

// tq
L
Liu Jicong 已提交
158 159
int     tqInit();
void    tqCleanUp();
L
Liu Jicong 已提交
160
STQ*    tqOpen(const char* path, SVnode* pVnode);
H
Hongze Cheng 已提交
161 162 163
void    tqClose(STQ*);
int     tqPushMsg(STQ*, void* msg, int32_t msgLen, tmsg_t msgType, int64_t ver);
int     tqCommit(STQ*);
164
int32_t tqUpdateTbUidList(STQ* pTq, const SArray* tbUidList, bool isAdd);
L
Liu Jicong 已提交
165
int32_t tqCheckColModifiable(STQ* pTq, int64_t tbUid, int32_t colId);
166 167 168 169 170 171
// tq-mq
int32_t tqProcessAddCheckInfoReq(STQ* pTq, int64_t version, char* msg, int32_t msgLen);
int32_t tqProcessDelCheckInfoReq(STQ* pTq, int64_t version, char* msg, int32_t msgLen);
int32_t tqProcessVgChangeReq(STQ* pTq, int64_t version, char* msg, int32_t msgLen);
int32_t tqProcessVgDeleteReq(STQ* pTq, int64_t version, char* msg, int32_t msgLen);
int32_t tqProcessOffsetCommitReq(STQ* pTq, int64_t version, char* msg, int32_t msgLen);
L
Liu Jicong 已提交
172
int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg);
173 174 175
// tq-stream
int32_t tqProcessTaskDeployReq(STQ* pTq, int64_t version, char* msg, int32_t msgLen);
int32_t tqProcessTaskDropReq(STQ* pTq, int64_t version, char* msg, int32_t msgLen);
L
Liu Jicong 已提交
176
int32_t tqProcessStreamTrigger(STQ* pTq, SSubmitReq* data, int64_t ver);
L
Liu Jicong 已提交
177
int32_t tqProcessTaskRunReq(STQ* pTq, SRpcMsg* pMsg);
L
Liu Jicong 已提交
178
int32_t tqProcessTaskDispatchReq(STQ* pTq, SRpcMsg* pMsg, bool exec);
L
Liu Jicong 已提交
179 180 181
int32_t tqProcessTaskRecoverReq(STQ* pTq, SRpcMsg* pMsg);
int32_t tqProcessTaskDispatchRsp(STQ* pTq, SRpcMsg* pMsg);
int32_t tqProcessTaskRecoverRsp(STQ* pTq, SRpcMsg* pMsg);
L
Liu Jicong 已提交
182 183
int32_t tqProcessTaskRetrieveReq(STQ* pTq, SRpcMsg* pMsg);
int32_t tqProcessTaskRetrieveRsp(STQ* pTq, SRpcMsg* pMsg);
H
Hongze Cheng 已提交
184

185 186
SSubmitReq* tqBlockToSubmit(SVnode* pVnode, const SArray* pBlocks, const STSchema* pSchema, bool createTb, int64_t suid,
                            const char* stbFullName, SBatchDeleteReq* pDeleteReq);
C
Cary Xu 已提交
187

C
Cary Xu 已提交
188
// sma
C
Cary Xu 已提交
189 190
int32_t smaInit();
void    smaCleanUp();
191
int32_t smaOpen(SVnode* pVnode);
C
Cary Xu 已提交
192
int32_t smaPreClose(SSma* pSma);
193
int32_t smaClose(SSma* pSma);
C
Cary Xu 已提交
194
int32_t smaBegin(SSma* pSma);
C
Cary Xu 已提交
195 196 197 198
int32_t smaSyncPreCommit(SSma* pSma);
int32_t smaSyncCommit(SSma* pSma);
int32_t smaSyncPostCommit(SSma* pSma);
int32_t smaAsyncPreCommit(SSma* pSma);
C
Cary Xu 已提交
199
int32_t smaAsyncCommit(SSma* pSma);
C
Cary Xu 已提交
200
int32_t smaAsyncPostCommit(SSma* pSma);
C
Cary Xu 已提交
201
int32_t smaDoRetention(SSma* pSma, int64_t now);
C
Cary Xu 已提交
202
int32_t smaProcessExec(SSma* pSma, void* pMsg);
C
Cary Xu 已提交
203

C
Cary Xu 已提交
204
int32_t tdProcessTSmaCreate(SSma* pSma, int64_t version, const char* msg);
205 206
int32_t tdProcessTSmaInsert(SSma* pSma, int64_t indexUid, const char* msg);

207
int32_t tdProcessRSmaCreate(SSma* pSma, SVCreateStbReq* pReq);
208
int32_t tdProcessRSmaSubmit(SSma* pSma, void* pMsg, int32_t inputType);
209
int32_t tdProcessRSmaDrop(SSma* pSma, SVDropStbReq* pReq);
210 211 212 213 214
int32_t tdFetchTbUidList(SSma* pSma, STbUidStore** ppStore, tb_uid_t suid, tb_uid_t uid);
int32_t tdUpdateTbUidList(SSma* pSma, STbUidStore* pUidStore);
void    tdUidStoreDestory(STbUidStore* pStore);
void*   tdUidStoreFree(STbUidStore* pStore);

H
Hongze Cheng 已提交
215 216 217
// SMetaSnapReader ========================================
int32_t metaSnapReaderOpen(SMeta* pMeta, int64_t sver, int64_t ever, SMetaSnapReader** ppReader);
int32_t metaSnapReaderClose(SMetaSnapReader** ppReader);
H
Hongze Cheng 已提交
218
int32_t metaSnapRead(SMetaSnapReader* pReader, uint8_t** ppData);
H
Hongze Cheng 已提交
219
// SMetaSnapWriter ========================================
H
Hongze Cheng 已提交
220 221 222
int32_t metaSnapWriterOpen(SMeta* pMeta, int64_t sver, int64_t ever, SMetaSnapWriter** ppWriter);
int32_t metaSnapWrite(SMetaSnapWriter* pWriter, uint8_t* pData, uint32_t nData);
int32_t metaSnapWriterClose(SMetaSnapWriter** ppWriter, int8_t rollback);
H
Hongze Cheng 已提交
223
// STsdbSnapReader ========================================
C
Cary Xu 已提交
224
int32_t tsdbSnapReaderOpen(STsdb* pTsdb, int64_t sver, int64_t ever, int8_t type, STsdbSnapReader** ppReader);
H
Hongze Cheng 已提交
225
int32_t tsdbSnapReaderClose(STsdbSnapReader** ppReader);
H
Hongze Cheng 已提交
226
int32_t tsdbSnapRead(STsdbSnapReader* pReader, uint8_t** ppData);
H
Hongze Cheng 已提交
227
// STsdbSnapWriter ========================================
H
Hongze Cheng 已提交
228 229 230
int32_t tsdbSnapWriterOpen(STsdb* pTsdb, int64_t sver, int64_t ever, STsdbSnapWriter** ppWriter);
int32_t tsdbSnapWrite(STsdbSnapWriter* pWriter, uint8_t* pData, uint32_t nData);
int32_t tsdbSnapWriterClose(STsdbSnapWriter** ppWriter, int8_t rollback);
L
Liu Jicong 已提交
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
// STqSnapshotReader ==
int32_t tqSnapReaderOpen(STQ* pTq, int64_t sver, int64_t ever, STqSnapReader** ppReader);
int32_t tqSnapReaderClose(STqSnapReader** ppReader);
int32_t tqSnapRead(STqSnapReader* pReader, uint8_t** ppData);
// STqSnapshotWriter ======================================
int32_t tqSnapWriterOpen(STQ* pTq, int64_t sver, int64_t ever, STqSnapWriter** ppWriter);
int32_t tqSnapWriterClose(STqSnapWriter** ppWriter, int8_t rollback);
int32_t tqSnapWrite(STqSnapWriter* pWriter, uint8_t* pData, uint32_t nData);
// STqOffsetReader ========================================
int32_t tqOffsetReaderOpen(STQ* pTq, int64_t sver, int64_t ever, STqOffsetReader** ppReader);
int32_t tqOffsetReaderClose(STqOffsetReader** ppReader);
int32_t tqOffsetSnapRead(STqOffsetReader* pReader, uint8_t** ppData);
// STqOffsetWriter ========================================
int32_t tqOffsetWriterOpen(STQ* pTq, int64_t sver, int64_t ever, STqOffsetWriter** ppWriter);
int32_t tqOffsetWriterClose(STqOffsetWriter** ppWriter, int8_t rollback);
int32_t tqOffsetSnapWrite(STqOffsetWriter* pWriter, uint8_t* pData, uint32_t nData);
// SStreamTaskWriter ======================================
// SStreamTaskReader ======================================
// SStreamStateWriter =====================================
// SStreamStateReader =====================================
C
Cary Xu 已提交
251 252 253 254 255 256 257 258
// SRsmaSnapReader ========================================
int32_t rsmaSnapReaderOpen(SSma* pSma, int64_t sver, int64_t ever, SRsmaSnapReader** ppReader);
int32_t rsmaSnapReaderClose(SRsmaSnapReader** ppReader);
int32_t rsmaSnapRead(SRsmaSnapReader* pReader, uint8_t** ppData);
// SRsmaSnapWriter ========================================
int32_t rsmaSnapWriterOpen(SSma* pSma, int64_t sver, int64_t ever, SRsmaSnapWriter** ppWriter);
int32_t rsmaSnapWrite(SRsmaSnapWriter* pWriter, uint8_t* pData, uint32_t nData);
int32_t rsmaSnapWriterClose(SRsmaSnapWriter** ppWriter, int8_t rollback);
H
Hongze Cheng 已提交
259

L
Liu Jicong 已提交
260 261 262 263 264 265 266 267 268 269 270 271 272 273 274
typedef struct {
  int8_t  streamType;  // sma or other
  int8_t  dstType;
  int16_t padding;
  int32_t smaId;
  int64_t tbUid;
  int64_t lastReceivedVer;
  int64_t lastCommittedVer;
} SStreamSinkInfo;

typedef struct {
  SVnode*   pVnode;
  SHashObj* pHash;  // streamId -> SStreamSinkInfo
} SSink;

H
refact  
Hongze Cheng 已提交
275 276 277 278
// SVState
struct SVState {
  int64_t committed;
  int64_t applied;
H
Hongze Cheng 已提交
279
  int64_t applyTerm;
H
Hongze Cheng 已提交
280
  int64_t commitID;
H
Hongze Cheng 已提交
281
  int64_t commitTerm;
H
refact  
Hongze Cheng 已提交
282 283
};

H
Hongze Cheng 已提交
284 285 286 287 288
struct SVnodeInfo {
  SVnodeCfg config;
  SVState   state;
};

C
Cary Xu 已提交
289 290 291 292 293 294 295 296
typedef enum {
  TSDB_TYPE_TSDB = 0,     // TSDB
  TSDB_TYPE_TSMA = 1,     // TSMA
  TSDB_TYPE_RSMA_L0 = 2,  // RSMA Level 0
  TSDB_TYPE_RSMA_L1 = 3,  // RSMA Level 1
  TSDB_TYPE_RSMA_L2 = 4,  // RSMA Level 2
} ETsdbType;

L
Liu Jicong 已提交
297
struct STsdbKeepCfg {
C
Cary Xu 已提交
298 299 300 301 302
  int8_t  precision;  // precision always be used with below keep cfgs
  int32_t days;
  int32_t keep0;
  int32_t keep1;
  int32_t keep2;
303
};
C
Cary Xu 已提交
304

H
save  
Hongze Cheng 已提交
305
struct SVnode {
H
Hongze Cheng 已提交
306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
  char*         path;
  SVnodeCfg     config;
  SVState       state;
  STfs*         pTfs;
  SMsgCb        msgCb;
  TdThreadMutex mutex;
  TdThreadCond  poolNotEmpty;
  SVBufPool*    pPool;
  SVBufPool*    inUse;
  SMeta*        pMeta;
  SSma*         pSma;
  STsdb*        pTsdb;
  SWal*         pWal;
  STQ*          pTq;
  SSink*        pSink;
  tsem_t        canCommit;
  int64_t       sync;
323
  TdThreadMutex lock;
324
  bool          blocked;
325
  bool          restored;
C
Cary Xu 已提交
326
  bool          inClose;
H
Hongze Cheng 已提交
327 328
  tsem_t        syncSem;
  SQHandle*     pQuery;
H
save  
Hongze Cheng 已提交
329 330
};

C
Cary Xu 已提交
331
#define TD_VID(PVNODE) ((PVNODE)->config.vgId)
332

C
Cary Xu 已提交
333 334
#define VND_TSDB(vnd)       ((vnd)->pTsdb)
#define VND_RSMA0(vnd)      ((vnd)->pTsdb)
C
Cary Xu 已提交
335 336
#define VND_RSMA1(vnd)      ((vnd)->pSma->pRSmaTsdb[TSDB_RETENTION_L0])
#define VND_RSMA2(vnd)      ((vnd)->pSma->pRSmaTsdb[TSDB_RETENTION_L1])
C
Cary Xu 已提交
337
#define VND_RETENTIONS(vnd) (&(vnd)->config.tsdbCfg.retentions)
C
Cary Xu 已提交
338 339
#define VND_IS_RSMA(v)      ((v)->config.isRsma == 1)
#define VND_IS_TSMA(v)      ((v)->config.isTsma == 1)
C
Cary Xu 已提交
340

H
Hongze Cheng 已提交
341 342 343 344 345 346
struct STbUidStore {
  tb_uid_t  suid;
  SArray*   tbUids;
  SHashObj* uidHash;
};

347 348 349 350
struct SSma {
  bool          locked;
  TdThreadMutex mutex;
  SVnode*       pVnode;
C
Cary Xu 已提交
351
  STsdb*        pRSmaTsdb[TSDB_RETENTION_L2];
352 353 354 355 356 357
  void*         pTSmaEnv;
  void*         pRSmaEnv;
};

#define SMA_CFG(s)        (&(s)->pVnode->config)
#define SMA_TSDB_CFG(s)   (&(s)->pVnode->config.tsdbCfg)
H
Hongze Cheng 已提交
358
#define SMA_RETENTION(s)  ((SRetention*)&(s)->pVnode->config.tsdbCfg.retentions)
359 360 361 362 363 364 365
#define SMA_LOCKED(s)     ((s)->locked)
#define SMA_META(s)       ((s)->pVnode->pMeta)
#define SMA_VID(s)        TD_VID((s)->pVnode)
#define SMA_TFS(s)        ((s)->pVnode->pTfs)
#define SMA_TSMA_ENV(s)   ((s)->pTSmaEnv)
#define SMA_RSMA_ENV(s)   ((s)->pRSmaEnv)
#define SMA_RSMA_TSDB0(s) ((s)->pVnode->pTsdb)
C
Cary Xu 已提交
366 367
#define SMA_RSMA_TSDB1(s) ((s)->pRSmaTsdb[TSDB_RETENTION_L0])
#define SMA_RSMA_TSDB2(s) ((s)->pRSmaTsdb[TSDB_RETENTION_L1])
H
refact  
Hongze Cheng 已提交
368

L
Liu Jicong 已提交
369
// sma
L
Liu Jicong 已提交
370
void smaHandleRes(void* pVnode, int64_t smaId, const SArray* data);
L
Liu Jicong 已提交
371

C
Cary Xu 已提交
372
enum {
H
Hongze Cheng 已提交
373
  SNAP_DATA_CFG = 0,
C
Cary Xu 已提交
374 375 376 377 378 379 380 381 382 383
  SNAP_DATA_META = 1,
  SNAP_DATA_TSDB = 2,
  SNAP_DATA_DEL = 3,
  SNAP_DATA_RSMA1 = 4,
  SNAP_DATA_RSMA2 = 5,
  SNAP_DATA_QTASK = 6,
  SNAP_DATA_TQ_HANDLE = 7,
  SNAP_DATA_TQ_OFFSET = 8,
  SNAP_DATA_STREAM_TASK = 9,
  SNAP_DATA_STREAM_STATE = 10,
C
Cary Xu 已提交
384 385
};

H
Hongze Cheng 已提交
386 387
struct SSnapDataHdr {
  int8_t  type;
H
Hongze Cheng 已提交
388
  int64_t index;
H
Hongze Cheng 已提交
389 390 391 392
  int64_t size;
  uint8_t data[];
};

H
save  
Hongze Cheng 已提交
393 394 395 396
#ifdef __cplusplus
}
#endif

L
Liu Jicong 已提交
397
#endif /*_TD_VNODE_DEF_H_*/