more work

This commit is contained in:
Hongze Cheng 2022-07-04 07:21:04 +00:00
parent fd98b9082f
commit 0408ba414c
2 changed files with 26 additions and 27 deletions

View File

@ -163,8 +163,8 @@ int32_t vnodeSnapReaderClose(SVSnapReader *pReader);
int32_t vnodeSnapRead(SVSnapReader *pReader, const void **ppData, uint32_t *nData); int32_t vnodeSnapRead(SVSnapReader *pReader, const void **ppData, uint32_t *nData);
// SVSnapWriter; // SVSnapWriter;
int32_t vnodeSnapshotWriterOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapWriter **ppWriter); int32_t vnodeSnapshotWriterOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapWriter **ppWriter);
int32_t vnodeSnapshotWrite(SVSnapWriter *pWriter, uint8_t *pData, uint32_t nData);
int32_t vnodeSnapshotWriterClose(SVSnapWriter *pWriter, int8_t rollback); int32_t vnodeSnapshotWriterClose(SVSnapWriter *pWriter, int8_t rollback);
int32_t vnodeSnapshotWrite(SVSnapWriter *pWriter, uint8_t *pData, uint32_t nData);
// structs // structs
struct STsdbCfg { struct STsdbCfg {

View File

@ -16,12 +16,14 @@
#include "vnodeInt.h" #include "vnodeInt.h"
struct SVSnapReader { struct SVSnapReader {
SVnode *pVnode; SVnode *pVnode;
int64_t sver; int64_t sver;
int64_t ever; int64_t ever;
int8_t isMetaEnd; // meta
int8_t isTsdbEnd; int8_t metaDone;
SMetaSnapReader *pMetaReader; SMetaSnapReader *pMetaReader;
// tsdb
int8_t tsdbDone;
STsdbSnapReader *pTsdbReader; STsdbSnapReader *pTsdbReader;
void *pData; void *pData;
int32_t nData; int32_t nData;
@ -35,6 +37,7 @@ struct SVSnapWriter {
// SVSnapReader ======================================================== // SVSnapReader ========================================================
int32_t vnodeSnapReaderOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapReader **ppReader) { int32_t vnodeSnapReaderOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapReader **ppReader) {
int32_t code = 0;
SVSnapReader *pReader = NULL; SVSnapReader *pReader = NULL;
pReader = (SVSnapReader *)taosMemoryCalloc(1, sizeof(*pReader)); pReader = (SVSnapReader *)taosMemoryCalloc(1, sizeof(*pReader));
@ -45,8 +48,6 @@ int32_t vnodeSnapReaderOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapRe
pReader->pVnode = pVnode; pReader->pVnode = pVnode;
pReader->sver = sver; pReader->sver = sver;
pReader->ever = ever; pReader->ever = ever;
pReader->isMetaEnd = 0;
pReader->isTsdbEnd = 0;
if (metaSnapReaderOpen(pVnode->pMeta, &pReader->pMetaReader, sver, ever) < 0) { if (metaSnapReaderOpen(pVnode->pMeta, &pReader->pMetaReader, sver, ever) < 0) {
taosMemoryFree(pReader); taosMemoryFree(pReader);
@ -59,33 +60,31 @@ int32_t vnodeSnapReaderOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapRe
goto _err; goto _err;
} }
_exit:
*ppReader = pReader; *ppReader = pReader;
return 0; return code;
_err: _err:
*ppReader = NULL; *ppReader = NULL;
return -1; return code;
} }
int32_t vnodeSnapReaderClose(SVSnapReader *pReader) { int32_t vnodeSnapReaderClose(SVSnapReader *pReader) {
if (pReader) { vnodeFree(pReader->pData);
vnodeFree(pReader->pData); tsdbSnapReaderClose(pReader->pTsdbReader);
tsdbSnapReaderClose(pReader->pTsdbReader); metaSnapReaderClose(pReader->pMetaReader);
metaSnapReaderClose(pReader->pMetaReader); taosMemoryFree(pReader);
taosMemoryFree(pReader);
}
return 0; return 0;
} }
int32_t vnodeSnapRead(SVSnapReader *pReader, const void **ppData, uint32_t *nData) { int32_t vnodeSnapRead(SVSnapReader *pReader, const void **ppData, uint32_t *nData) {
int32_t code = 0; int32_t code = 0;
if (!pReader->isMetaEnd) { if (!pReader->metaDone) {
code = metaSnapRead(pReader->pMetaReader, &pReader->pData, &pReader->nData); code = metaSnapRead(pReader->pMetaReader, &pReader->pData, &pReader->nData);
if (code) { if (code) {
if (code == TSDB_CODE_VND_READ_END) { if (code == TSDB_CODE_VND_READ_END) {
pReader->isMetaEnd = 1; pReader->metaDone = 1;
} else { } else {
return code; return code;
} }
@ -96,11 +95,11 @@ int32_t vnodeSnapRead(SVSnapReader *pReader, const void **ppData, uint32_t *nDat
} }
} }
if (!pReader->isTsdbEnd) { if (!pReader->tsdbDone) {
code = tsdbSnapRead(pReader->pTsdbReader, &pReader->pData, &pReader->nData); code = tsdbSnapRead(pReader->pTsdbReader, &pReader->pData, &pReader->nData);
if (code) { if (code) {
if (code == TSDB_CODE_VND_READ_END) { if (code == TSDB_CODE_VND_READ_END) {
pReader->isTsdbEnd = 1; pReader->tsdbDone = 1;
} else { } else {
return code; return code;
} }
@ -136,12 +135,6 @@ _err:
return code; return code;
} }
int32_t vnodeSnapshotWrite(SVSnapWriter *pWriter, uint8_t *pData, uint32_t nData) {
int32_t code = 0;
// TODO
return code;
}
int32_t vnodeSnapshotWriterClose(SVSnapWriter *pWriter, int8_t rollback) { int32_t vnodeSnapshotWriterClose(SVSnapWriter *pWriter, int8_t rollback) {
int32_t code = 0; int32_t code = 0;
@ -153,4 +146,10 @@ int32_t vnodeSnapshotWriterClose(SVSnapWriter *pWriter, int8_t rollback) {
taosMemoryFree(pWriter); taosMemoryFree(pWriter);
return code; return code;
}
int32_t vnodeSnapshotWrite(SVSnapWriter *pWriter, uint8_t *pData, uint32_t nData) {
int32_t code = 0;
// TODO
return code;
} }