Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Forever310
druid
提交
8f7c82d3
D
druid
项目概览
Forever310
/
druid
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
druid
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8f7c82d3
编写于
6月 12, 2014
作者:
X
Xavier Léauté
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
avoid closing yielder prematurely
上级
ada2d92c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
30 addition
and
20 deletion
+30
-20
processing/src/main/java/io/druid/jackson/DruidDefaultSerializersModule.java
.../java/io/druid/jackson/DruidDefaultSerializersModule.java
+2
-2
server/src/main/java/io/druid/server/QueryResource.java
server/src/main/java/io/druid/server/QueryResource.java
+28
-18
未找到文件。
processing/src/main/java/io/druid/jackson/DruidDefaultSerializersModule.java
浏览文件 @
8f7c82d3
...
...
@@ -132,17 +132,17 @@ public class DruidDefaultSerializersModule extends SimpleModule
public
void
serialize
(
Yielder
yielder
,
final
JsonGenerator
jgen
,
SerializerProvider
provider
)
throws
IOException
,
JsonProcessingException
{
jgen
.
writeStartArray
();
try
{
jgen
.
writeStartArray
();
while
(!
yielder
.
isDone
())
{
final
Object
o
=
yielder
.
get
();
jgen
.
writeObject
(
o
);
yielder
=
yielder
.
next
(
null
);
}
jgen
.
writeEndArray
();
}
finally
{
yielder
.
close
();
}
jgen
.
writeEndArray
();
}
}
);
...
...
server/src/main/java/io/druid/server/QueryResource.java
浏览文件 @
8f7c82d3
...
...
@@ -147,28 +147,29 @@ public class QueryResource
log
.
debug
(
"Got query [%s]"
,
query
);
}
Sequence
res
ults
=
query
.
run
(
texasRanger
);
if
(
res
ults
==
null
)
{
Sequence
res
=
query
.
run
(
texasRanger
);
final
Sequence
results
;
if
(
res
==
null
)
{
results
=
Sequences
.
empty
();
}
else
{
results
=
res
;
}
try
(
final
Yielder
yielder
=
results
.
toYielder
(
null
,
new
YieldingAccumulator
()
{
@Override
public
Object
accumulate
(
Object
accumulated
,
Object
in
)
{
yield
();
return
in
;
}
}
)
)
{
long
requestTime
=
System
.
currentTimeMillis
()
-
start
;
final
Yielder
yielder
=
results
.
toYielder
(
null
,
new
YieldingAccumulator
()
{
@Override
public
Object
accumulate
(
Object
accumulated
,
Object
in
)
{
yield
();
return
in
;
}
}
);
try
{
long
requestTime
=
System
.
currentTimeMillis
()
-
start
;
emitter
.
emit
(
new
ServiceMetricEvent
.
Builder
()
.
setUser2
(
DataSourceUtil
.
getMetricName
(
query
.
getDataSource
()))
...
...
@@ -202,6 +203,7 @@ public class QueryResource
@Override
public
void
write
(
OutputStream
outputStream
)
throws
IOException
,
WebApplicationException
{
// json serializer will always close the yielder
jsonWriter
.
writeValue
(
outputStream
,
yielder
);
outputStream
.
close
();
}
...
...
@@ -211,6 +213,14 @@ public class QueryResource
.
header
(
"X-Druid-Query-Id"
,
queryId
)
.
build
();
}
catch
(
Exception
e
)
{
// make sure to close yieder if anything happened before starting to serialize the response.
yielder
.
close
();
}
finally
{
// do not close yielder here, since we do not want to close the yielder prior to
// StreamingOutput having iterated over all the results
}
}
catch
(
QueryInterruptedException
e
)
{
try
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录