• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

taosdata / TDengine / #3621

22 Feb 2025 11:44AM UTC coverage: 2.037% (-61.5%) from 63.573%
#3621

push

travis-ci

web-flow
Merge pull request #29874 from taosdata/merge/mainto3.0

merge: from main to 3.0 branch

4357 of 287032 branches covered (1.52%)

Branch coverage included in aggregate %.

0 of 174 new or added lines in 18 files covered. (0.0%)

213359 existing lines in 469 files now uncovered.

7260 of 283369 relevant lines covered (2.56%)

23737.72 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/source/dnode/vnode/src/tq/tqOffset.c
1
/*
2
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
3
 *
4
 * This program is free software: you can use, redistribute, and/or modify
5
 * it under the terms of the GNU Affero General Public License, version 3
6
 * or later ("AGPL"), as published by the Free Software Foundation.
7
 *
8
 * This program is distributed in the hope that it will be useful, but WITHOUT
9
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
 * FITNESS FOR A PARTICULAR PURPOSE.
11
 *
12
 * You should have received a copy of the GNU Affero General Public License
13
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14
 */
15
#define _DEFAULT_SOURCE
16

17
#include "tq.h"
18

UNCOV
19
int32_t tqBuildFName(char** data, const char* path, char* name) {
×
UNCOV
20
  int32_t   code = 0;
×
UNCOV
21
  int32_t   lino = 0;
×
UNCOV
22
  char*     fname = NULL;
×
UNCOV
23
  TSDB_CHECK_NULL(data, code, lino, END, TSDB_CODE_INVALID_MSG);
×
UNCOV
24
  TSDB_CHECK_NULL(path, code, lino, END, TSDB_CODE_INVALID_MSG);
×
UNCOV
25
  TSDB_CHECK_NULL(name, code, lino, END, TSDB_CODE_INVALID_MSG);
×
UNCOV
26
  int32_t len = strlen(path) + strlen(name) + 2;
×
UNCOV
27
  fname = taosMemoryCalloc(1, len);
×
UNCOV
28
  TSDB_CHECK_NULL(fname, code, lino, END, terrno);
×
UNCOV
29
  (void)tsnprintf(fname, len, "%s%s%s", path, TD_DIRSEP, name);
×
30

UNCOV
31
  *data = fname;
×
UNCOV
32
  fname = NULL;
×
33

UNCOV
34
END:
×
UNCOV
35
  if (code != 0){
×
36
    tqError("%s failed at %d since %s", __func__, lino, tstrerror(code));
×
37
  }
UNCOV
38
  taosMemoryFree(fname);
×
UNCOV
39
  return code;
×
40
}
41

UNCOV
42
int32_t tqOffsetRestoreFromFile(STQ* pTq, char* name) {
×
UNCOV
43
  int32_t    code = TDB_CODE_SUCCESS;
×
UNCOV
44
  int32_t    lino = 0;
×
UNCOV
45
  void*      pMemBuf = NULL;
×
UNCOV
46
  TdFilePtr  pFile = NULL;
×
UNCOV
47
  STqOffset *pOffset = NULL;
×
UNCOV
48
  void      *pIter = NULL;
×
49

UNCOV
50
  TSDB_CHECK_NULL(pTq, code, lino, END, TSDB_CODE_INVALID_MSG);
×
UNCOV
51
  TSDB_CHECK_NULL(name, code, lino, END, TSDB_CODE_INVALID_MSG);
×
52

UNCOV
53
  pFile = taosOpenFile(name, TD_FILE_READ);
×
UNCOV
54
  TSDB_CHECK_NULL(pFile, code, lino, END, TDB_CODE_SUCCESS);
×
55

UNCOV
56
  int64_t ret = 0;
×
UNCOV
57
  int32_t size = 0;
×
UNCOV
58
  int32_t total = 0;
×
UNCOV
59
  while (1) {
×
UNCOV
60
    if ((ret = taosReadFile(pFile, &size, INT_BYTES)) != INT_BYTES) {
×
UNCOV
61
      if (ret != 0) {
×
62
        code = TSDB_CODE_INVALID_MSG;
×
63
      }
UNCOV
64
      break;
×
65
    }
UNCOV
66
    total += INT_BYTES;
×
UNCOV
67
    size = htonl(size);
×
UNCOV
68
    TSDB_CHECK_CONDITION(size > 0, code, lino, END, TSDB_CODE_INVALID_MSG);
×
69

UNCOV
70
    pMemBuf = taosMemoryCalloc(1, size);
×
UNCOV
71
    TSDB_CHECK_NULL(pMemBuf, code, lino, END, terrno);
×
UNCOV
72
    TSDB_CHECK_CONDITION(taosReadFile(pFile, pMemBuf, size) == size, code, lino, END, TSDB_CODE_INVALID_MSG);
×
73

UNCOV
74
    total += size;
×
UNCOV
75
    STqOffset offset = {0};
×
UNCOV
76
    code = tqMetaDecodeOffsetInfo(&offset, pMemBuf, size);
×
UNCOV
77
    TSDB_CHECK_CODE(code, lino, END);
×
UNCOV
78
    pOffset = &offset;
×
UNCOV
79
    code = taosHashPut(pTq->pOffset, pOffset->subKey, strlen(pOffset->subKey), pOffset, sizeof(STqOffset));
×
UNCOV
80
    TSDB_CHECK_CODE(code, lino, END);
×
UNCOV
81
    pOffset = NULL;
×
82

UNCOV
83
    tqInfo("tq: offset restore from file to tdb, size:%d, hash size:%d subkey:%s", total, taosHashGetSize(pTq->pOffset), offset.subKey);
×
UNCOV
84
    taosMemoryFree(pMemBuf);
×
UNCOV
85
    pMemBuf = NULL;
×
86
  }
87

UNCOV
88
  while ((pIter = taosHashIterate(pTq->pOffset, pIter))) {
×
UNCOV
89
    STqOffset* offset = (STqOffset*)pIter;
×
UNCOV
90
    code = tqMetaSaveOffset(pTq, offset);
×
UNCOV
91
    TSDB_CHECK_CODE(code, lino, END);
×
92
  }
93

UNCOV
94
END:
×
UNCOV
95
  if (code != 0){
×
96
    tqError("%s failed at %d since %s", __func__, lino, tstrerror(code));
×
97
  }
UNCOV
98
  (void)taosCloseFile(&pFile);
×
UNCOV
99
  taosMemoryFree(pMemBuf);
×
100

UNCOV
101
  tDeleteSTqOffset(pOffset);
×
UNCOV
102
  taosHashCancelIterate(pTq->pOffset, pIter);
×
103

UNCOV
104
  return code;
×
105
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc