[ https://issues.apache.org/jira/browse/KYLIN-2926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16207228#comment-16207228 ]
Shaofeng SHI commented on KYLIN-2926: ------------------------------------- [~feng_xiao_yu] Yu, ultimately we should remove the ThreadLocal property, but that need more discussion and the test may last long. I can also think it is a bug in org.apache.kylin.measure.hllc.HLLCSerializer and org.apache.kylin.measure.raw.RawSerializer. They should return a new object in the deserialize method. [~zhengd] Dong's idea is also good; Cache the serialized byte array in dumpCurrentValues is safe; Deserialize the object in the "internalAggregate()", just before aggregating it into the "resultAggrs". > DumpMerger return incorrect results > ----------------------------------- > > Key: KYLIN-2926 > URL: https://issues.apache.org/jira/browse/KYLIN-2926 > Project: Kylin > Issue Type: Bug > Affects Versions: v2.0.0 > Reporter: fengYu > Assignee: fengYu > Attachments: > 0001-KYLIN-2926-DumpMerger-return-incorrect-results-creat.patch > > > I our scenario, a cube query will get wrong result once coprocessor need to > spill to disk, Our version is 2.0.0 and I find the root cause is that in > DumpMerger.enqueueFromDump > because in DataTypeSerializer kylin use a ThreadLocal variable ‘current’, It > leading to different elements in dumpCurrentValues share the same object, so > next fill up measure values will change the existing values. > the incorrect measures is HLLC and raw, which use current variable in > deserialize. -- This message was sent by Atlassian JIRA (v6.4.14#64029)