Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
98036d54
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看板
提交
98036d54
编写于
2月 05, 2021
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix bu
上级
947913b1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
36 addition
and
18 deletion
+36
-18
src/util/src/tlog.c
src/util/src/tlog.c
+36
-18
未找到文件。
src/util/src/tlog.c
浏览文件 @
98036d54
...
...
@@ -34,7 +34,7 @@
#define LOG_INTERVAL_STEP 5000
#define MIN_LOG_INTERVAL 5000
#define MAX_LOG_INTERVAL 50000
#define LOG_MAX_WAIT_USEC 1000000
#define LOG_BUF_BUFFER(x) ((x)->buffer)
#define LOG_BUF_START(x) ((x)->buffStart)
...
...
@@ -47,6 +47,7 @@ typedef struct {
int32_t
buffStart
;
int32_t
buffEnd
;
int32_t
buffSize
;
int32_t
minBuffSize
;
int32_t
fd
;
int32_t
stop
;
pthread_t
asyncThread
;
...
...
@@ -516,6 +517,7 @@ static SLogBuff *taosLogBuffNew(int32_t bufSize) {
LOG_BUF_START
(
tLogBuff
)
=
LOG_BUF_END
(
tLogBuff
)
=
0
;
LOG_BUF_SIZE
(
tLogBuff
)
=
bufSize
;
tLogBuff
->
minBuffSize
=
bufSize
/
10
;
tLogBuff
->
stop
=
0
;
if
(
pthread_mutex_init
(
&
LOG_BUF_MUTEX
(
tLogBuff
),
NULL
)
<
0
)
goto
_err
;
...
...
@@ -603,41 +605,52 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen)
return
0
;
}
static
int32_t
taosGetLogRemainSize
(
SLogBuff
*
tLogBuff
)
{
int32_t
start
=
LOG_BUF_START
(
tLogBuff
);
int32_t
end
=
LOG_BUF_END
(
tLogBuff
);
static
int32_t
taosGetLogRemainSize
(
SLogBuff
*
tLogBuff
,
int32_t
start
,
int32_t
end
)
{
int32_t
rSize
=
end
-
start
;
return
rSize
>=
0
?
rSize
:
LOG_BUF_SIZE
(
tLogBuff
)
+
rSize
;
}
static
void
taosWriteLog
(
SLogBuff
*
tLogBuff
)
{
static
int32_t
lastDuration
=
0
;
int32_t
remainChecked
=
0
;
int32_t
start
,
end
,
pollSize
;
do
{
int32_t
start
=
LOG_BUF_START
(
tLogBuff
);
int32_t
end
=
LOG_BUF_END
(
tLogBuff
);
int32_t
pollSize
=
0
;
if
(
remainChecked
==
0
)
{
start
=
LOG_BUF_START
(
tLogBuff
);
end
=
LOG_BUF_END
(
tLogBuff
);
if
(
start
==
end
)
{
dbgEmptyW
++
;
writeInterval
=
MAX_LOG_INTERVAL
;
return
;
}
if
(
start
==
end
)
{
dbgEmptyW
++
;
writeInterval
=
MAX_LOG_INTERVAL
;
return
;
}
else
if
(
start
<
end
)
{
pollSize
=
end
-
start
;
pollSize
=
taosGetLogRemainSize
(
tLogBuff
,
start
,
end
);
if
(
pollSize
<
tLogBuff
->
minBuffSize
)
{
lastDuration
+=
writeInterval
;
if
(
lastDuration
<
LOG_MAX_WAIT_USEC
)
{
break
;
}
}
lastDuration
=
0
;
}
if
(
start
<
end
)
{
taosWrite
(
tLogBuff
->
fd
,
LOG_BUF_BUFFER
(
tLogBuff
)
+
start
,
pollSize
);
}
else
{
int32_t
tsize
=
LOG_BUF_SIZE
(
tLogBuff
)
-
start
;
taosWrite
(
tLogBuff
->
fd
,
LOG_BUF_BUFFER
(
tLogBuff
)
+
start
,
tsize
);
taosWrite
(
tLogBuff
->
fd
,
LOG_BUF_BUFFER
(
tLogBuff
),
end
);
pollSize
=
tsize
+
end
;
}
dbgWN
++
;
dbgWSize
+=
pollSize
;
if
(
pollSize
<
LOG_BUF_SIZE
(
tLogBuff
)
/
10
)
{
if
(
pollSize
<
tLogBuff
->
minBuffSize
)
{
dbgSmallWN
++
;
if
(
writeInterval
<
MAX_LOG_INTERVAL
)
{
writeInterval
+=
LOG_INTERVAL_STEP
;
...
...
@@ -651,12 +664,17 @@ static void taosWriteLog(SLogBuff *tLogBuff) {
LOG_BUF_START
(
tLogBuff
)
=
(
LOG_BUF_START
(
tLogBuff
)
+
pollSize
)
%
LOG_BUF_SIZE
(
tLogBuff
);
int32_t
rsize
=
taosGetLogRemainSize
(
tLogBuff
);
if
(
rsize
<
1048576
)
{
start
=
LOG_BUF_START
(
tLogBuff
);
end
=
LOG_BUF_END
(
tLogBuff
);
int32_t
pollSize
=
taosGetLogRemainSize
(
tLogBuff
,
start
,
end
);
if
(
pollSize
<
tLogBuff
->
minBuffSize
)
{
break
;
}
writeInterval
=
MIN_LOG_INTERVAL
;
remainChecked
=
1
;
}
while
(
1
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录