Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
bad68656
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
bad68656
编写于
5月 22, 2022
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: avoid invalid read/write
上级
fb4982f8
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
23 addition
and
8 deletion
+23
-8
source/libs/index/CMakeLists.txt
source/libs/index/CMakeLists.txt
+3
-3
source/libs/index/inc/indexInt.h
source/libs/index/inc/indexInt.h
+2
-0
source/libs/index/src/index.c
source/libs/index/src/index.c
+18
-5
未找到文件。
source/libs/index/CMakeLists.txt
浏览文件 @
bad68656
...
...
@@ -31,7 +31,7 @@ if (${BUILD_WITH_INVERTEDINDEX})
endif
(
${
BUILD_WITH_INVERTEDINDEX
}
)
if
(
${
BUILD_TEST
}
)
add_subdirectory
(
test
)
endif
(
${
BUILD_TEST
}
)
#
if (${BUILD_TEST})
#
add_subdirectory(test)
#
endif(${BUILD_TEST})
source/libs/index/inc/indexInt.h
浏览文件 @
bad68656
...
...
@@ -58,6 +58,7 @@ struct SIndex {
SIndexStat
stat
;
TdThreadMutex
mtx
;
tsem_t
sem
;
bool
quit
;
};
...
...
@@ -70,6 +71,7 @@ struct SIndexOpts {
int32_t
cacheSize
;
// MB
// add cache module later
#endif
int32_t
cacheOpt
;
// MB
};
struct
SIndexMultiTermQuery
{
...
...
source/libs/index/src/index.c
浏览文件 @
bad68656
...
...
@@ -90,6 +90,15 @@ static void indexMergeCacheAndTFile(SArray* result, IterateValue* icache, Iterat
// static int32_t indexSerialTermKey(SIndexTerm* itm, char* buf);
// int32_t indexSerialKey(ICacheKey* key, char* buf);
static
void
indexPost
(
void
*
idx
)
{
SIndex
*
pIdx
=
idx
;
tsem_post
(
&
pIdx
->
sem
);
}
static
void
indexWait
(
void
*
idx
)
{
SIndex
*
pIdx
=
idx
;
tsem_wait
(
&
pIdx
->
sem
);
}
int
indexOpen
(
SIndexOpts
*
opts
,
const
char
*
path
,
SIndex
**
index
)
{
taosThreadOnce
(
&
isInit
,
indexInit
);
SIndex
*
sIdx
=
taosMemoryCalloc
(
1
,
sizeof
(
SIndex
));
...
...
@@ -107,6 +116,8 @@ int indexOpen(SIndexOpts* opts, const char* path, SIndex** index) {
sIdx
->
cVersion
=
1
;
sIdx
->
path
=
tstrdup
(
path
);
taosThreadMutexInit
(
&
sIdx
->
mtx
,
NULL
);
tsem_init
(
&
sIdx
->
sem
,
0
,
0
);
// taosThreadCondInit(&sIdx->finished, NULL);
sIdx
->
refId
=
indexAddRef
(
sIdx
);
indexAcquireRef
(
sIdx
->
refId
);
...
...
@@ -125,6 +136,7 @@ END:
void
indexDestroy
(
void
*
handle
)
{
SIndex
*
sIdx
=
handle
;
taosThreadMutexDestroy
(
&
sIdx
->
mtx
);
tsem_destroy
(
&
sIdx
->
sem
);
indexTFileDestroy
(
sIdx
->
tindex
);
taosMemoryFree
(
sIdx
->
path
);
taosMemoryFree
(
sIdx
);
...
...
@@ -138,7 +150,7 @@ void indexClose(SIndex* sIdx) {
while
(
iter
)
{
IndexCache
**
pCache
=
iter
;
indexCacheForceToMerge
((
void
*
)(
*
pCache
));
index
CacheWait
((
void
*
)(
*
pCache
));
index
Wait
((
void
*
)(
sIdx
));
iter
=
taosHashIterate
(
sIdx
->
colObj
,
iter
);
indexCacheUnRef
(
*
pCache
);
}
...
...
@@ -461,7 +473,8 @@ int indexFlushCacheToTFile(SIndex* sIdx, void* cache) {
indexCacheDestroyImm
(
pCache
);
tfileReaderUnRef
(
pReader
);
if
(
sIdx
->
quit
)
{
indexCacheBroadcast
(
pCache
);
indexPost
(
sIdx
);
// indexCacheBroadcast(pCache);
}
indexReleaseRef
(
sIdx
->
refId
);
return
0
;
...
...
@@ -509,9 +522,6 @@ int indexFlushCacheToTFile(SIndex* sIdx, void* cache) {
indexDestroyFinalResult
(
result
);
indexCacheDestroyImm
(
pCache
);
if
(
sIdx
->
quit
)
{
indexCacheBroadcast
(
pCache
);
}
indexCacheIteratorDestroy
(
cacheIter
);
tfileIteratorDestroy
(
tfileIter
);
...
...
@@ -525,6 +535,9 @@ int indexFlushCacheToTFile(SIndex* sIdx, void* cache) {
}
else
{
indexInfo
(
"success to merge , time cost: %"
PRId64
"ms"
,
cost
/
1000
);
}
if
(
sIdx
->
quit
)
{
indexPost
(
sIdx
);
}
indexReleaseRef
(
sIdx
->
refId
);
return
ret
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录