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 192
int32_t smaOpen(SVnode* pVnode);
int32_t smaClose(SSma* pSma);
C
Cary Xu 已提交
193
int32_t smaBegin(SSma* pSma);
C
Cary Xu 已提交
194 195 196 197
int32_t smaSyncPreCommit(SSma* pSma);
int32_t smaSyncCommit(SSma* pSma);
int32_t smaSyncPostCommit(SSma* pSma);
int32_t smaAsyncPreCommit(SSma* pSma);
C
Cary Xu 已提交
198
int32_t smaAsyncCommit(SSma* pSma);
C
Cary Xu 已提交
199
int32_t smaAsyncPostCommit(SSma* pSma);
C
Cary Xu 已提交
200
int32_t smaDoRetention(SSma* pSma, int64_t now);
201
int32_t smaProcessFetch(SSma* pSma, void* pMsg);
C
Cary Xu 已提交
202

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

206
int32_t tdProcessRSmaCreate(SSma* pSma, SVCreateStbReq* pReq);
207
int32_t tdProcessRSmaSubmit(SSma* pSma, void* pMsg, int32_t inputType);
208
int32_t tdProcessRSmaDrop(SSma* pSma, SVDropStbReq* pReq);
209 210 211 212 213
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 已提交
214 215 216
// SMetaSnapReader ========================================
int32_t metaSnapReaderOpen(SMeta* pMeta, int64_t sver, int64_t ever, SMetaSnapReader** ppReader);
int32_t metaSnapReaderClose(SMetaSnapReader** ppReader);
H
Hongze Cheng 已提交
217
int32_t metaSnapRead(SMetaSnapReader* pReader, uint8_t** ppData);
H
Hongze Cheng 已提交
218
// SMetaSnapWriter ========================================
H
Hongze Cheng 已提交
219 220 221
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 已提交
222
// STsdbSnapReader ========================================
C
Cary Xu 已提交
223
int32_t tsdbSnapReaderOpen(STsdb* pTsdb, int64_t sver, int64_t ever, int8_t type, STsdbSnapReader** ppReader);
H
Hongze Cheng 已提交
224
int32_t tsdbSnapReaderClose(STsdbSnapReader** ppReader);
H
Hongze Cheng 已提交
225
int32_t tsdbSnapRead(STsdbSnapReader* pReader, uint8_t** ppData);
H
Hongze Cheng 已提交
226
// STsdbSnapWriter ========================================
H
Hongze Cheng 已提交
227 228 229
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 已提交
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
// 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 已提交
250 251 252 253 254 255 256 257
// 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 已提交
258

L
Liu Jicong 已提交
259 260 261 262 263 264 265 266 267 268 269 270 271 272 273
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 已提交
274 275 276 277
// SVState
struct SVState {
  int64_t committed;
  int64_t applied;
H
Hongze Cheng 已提交
278
  int64_t applyTerm;
H
Hongze Cheng 已提交
279
  int64_t commitID;
H
Hongze Cheng 已提交
280
  int64_t commitTerm;
H
refact  
Hongze Cheng 已提交
281 282
};

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

C
Cary Xu 已提交
288 289 290 291 292 293 294 295
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 已提交
296
struct STsdbKeepCfg {
C
Cary Xu 已提交
297 298 299 300 301
  int8_t  precision;  // precision always be used with below keep cfgs
  int32_t days;
  int32_t keep0;
  int32_t keep1;
  int32_t keep2;
302
};
C
Cary Xu 已提交
303

H
save  
Hongze Cheng 已提交
304
struct SVnode {
H
Hongze Cheng 已提交
305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321
  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;
322
  TdThreadMutex lock;
323
  bool          blocked;
324
  bool          restored;
H
Hongze Cheng 已提交
325 326
  tsem_t        syncSem;
  SQHandle*     pQuery;
H
save  
Hongze Cheng 已提交
327 328
};

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

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

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

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

#define SMA_CFG(s)        (&(s)->pVnode->config)
#define SMA_TSDB_CFG(s)   (&(s)->pVnode->config.tsdbCfg)
H
Hongze Cheng 已提交
356
#define SMA_RETENTION(s)  ((SRetention*)&(s)->pVnode->config.tsdbCfg.retentions)
357 358 359 360 361 362 363
#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 已提交
364 365
#define SMA_RSMA_TSDB1(s) ((s)->pRSmaTsdb[TSDB_RETENTION_L0])
#define SMA_RSMA_TSDB2(s) ((s)->pRSmaTsdb[TSDB_RETENTION_L1])
H
refact  
Hongze Cheng 已提交
366

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

C
Cary Xu 已提交
370
enum {
C
Cary Xu 已提交
371 372 373 374 375 376 377 378 379 380
  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 已提交
381 382
};

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

H
save  
Hongze Cheng 已提交
390 391 392 393
#ifdef __cplusplus
}
#endif

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