feat: vnode snapshot

This commit is contained in:
Hongze Cheng 2022-05-24 09:21:14 +00:00
parent e2003534f4
commit 9fbbb25aea
2 changed files with 16 additions and 4 deletions

View File

@ -67,7 +67,7 @@ void vnodeGetSnapshot(SVnode *pVnode, SSnapshot *pSnapshot);
void vnodeGetInfo(SVnode *pVnode, const char **dbname, int32_t *vgId); void vnodeGetInfo(SVnode *pVnode, const char **dbname, int32_t *vgId);
int32_t vnodeSnapshotReaderOpen(SVnode *pVnode, SVSnapshotReader **ppReader, int64_t sver, int64_t ever); int32_t vnodeSnapshotReaderOpen(SVnode *pVnode, SVSnapshotReader **ppReader, int64_t sver, int64_t ever);
int32_t vnodeSnapshotReaderClose(SVSnapshotReader *pReader); int32_t vnodeSnapshotReaderClose(SVSnapshotReader *pReader);
int32_t vnodeSnapshotRead(SVSnapshotReader *pReader, void **ppData, uint32_t *nData); int32_t vnodeSnapshotRead(SVSnapshotReader *pReader, const void **ppData, uint32_t *nData);
// meta // meta
typedef struct SMeta SMeta; // todo: remove typedef struct SMeta SMeta; // todo: remove

View File

@ -23,6 +23,8 @@ struct SVSnapshotReader {
int8_t isTsdbEnd; int8_t isTsdbEnd;
SMetaSnapshotReader *pMetaReader; SMetaSnapshotReader *pMetaReader;
STsdbSnapshotReader *pTsdbReader; STsdbSnapshotReader *pTsdbReader;
void *pData;
int32_t nData;
}; };
int32_t vnodeSnapshotReaderOpen(SVnode *pVnode, SVSnapshotReader **ppReader, int64_t sver, int64_t ever) { int32_t vnodeSnapshotReaderOpen(SVnode *pVnode, SVSnapshotReader **ppReader, int64_t sver, int64_t ever) {
@ -61,6 +63,7 @@ _err:
int32_t vnodeSnapshotReaderClose(SVSnapshotReader *pReader) { int32_t vnodeSnapshotReaderClose(SVSnapshotReader *pReader) {
if (pReader) { if (pReader) {
vnodeFree(pReader->pData);
tsdbSnapshotReaderClose(pReader->pTsdbReader); tsdbSnapshotReaderClose(pReader->pTsdbReader);
metaSnapshotReaderClose(pReader->pMetaReader); metaSnapshotReaderClose(pReader->pMetaReader);
taosMemoryFree(pReader); taosMemoryFree(pReader);
@ -68,11 +71,11 @@ int32_t vnodeSnapshotReaderClose(SVSnapshotReader *pReader) {
return 0; return 0;
} }
int32_t vnodeSnapshotRead(SVSnapshotReader *pReader, void **ppData, uint32_t *nData) { int32_t vnodeSnapshotRead(SVSnapshotReader *pReader, const void **ppData, uint32_t *nData) {
int32_t code = 0; int32_t code = 0;
if (!pReader->isMetaEnd) { if (!pReader->isMetaEnd) {
code = metaSnapshotRead(pReader->pMetaReader, ppData, nData); code = metaSnapshotRead(pReader->pMetaReader, &pReader->pData, &pReader->pData);
if (code) { if (code) {
if (code == TSDB_CODE_VND_READ_END) { if (code == TSDB_CODE_VND_READ_END) {
pReader->isMetaEnd = 1; pReader->isMetaEnd = 1;
@ -80,14 +83,23 @@ int32_t vnodeSnapshotRead(SVSnapshotReader *pReader, void **ppData, uint32_t *nD
return code; return code;
} }
} else { } else {
*ppData = pReader->pData;
*nData = pReader->nData;
return code; return code;
} }
} }
if (!pReader->isTsdbEnd) { if (!pReader->isTsdbEnd) {
code = tsdbSnapshotRead(pReader->pTsdbReader, ppData, nData); code = tsdbSnapshotRead(pReader->pTsdbReader, &pReader->pData, pReader->nData);
if (code) { if (code) {
if (code == TSDB_CODE_VND_READ_END) {
pReader->isTsdbEnd = 1;
} else {
return code;
}
} else { } else {
*ppData = pReader->pData;
*nData = pReader->nData;
return code; return code;
} }
} }