leventov opened a new issue #3803: Concurrent modification of responseContext 
in QueryRunners
URL: https://github.com/apache/incubator-druid/issues/3803
 
 
   responseContext is a plain `HashMap`. It is accessed/modified concurrently 
without any synchronization in `AsyncQueryRunner`, 
`IntervalChunkingQueryRunner`, `ChainedExecutionQueryFactory`, etc.
   
   We didn't notice this problem before, because `responseContext` had very 
limited use, but as part of #3798 I started to use responseContexts more 
extensively and got `ConcurrentModificationException`.
   
   I quickly fixed this in this commit: 
https://github.com/metamx/druid/commit/54c2af24966e73d6f8c5951ec53e5c0407c653d2 
but I don't like this solution, especially how it works in `AsyncQueryRunner` 
and `DirectDruidClient`, because it is super fragile and relies on what 
particular types of `QueryRunner`s call `AsyncQueryRunner` and called from 
`DirectDruidClient`. There are two main problems:
    - it is not specified how responseContext could and could not be used and 
when it is "finalized": after return from `QueryRunner.run()`, or after 
iteration over the returned `Sequence` is completed.
    - No difference between "sync" and "async" (lazy) QueryRunners/Sequences
   
   I don't have an idea yet what a better solution would be.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to