steveloughran commented on PR #3481:
URL: https://github.com/apache/parquet-java/pull/3481#issuecomment-4287599115

   I would propose a javadoc on concurrency here.
   
   Till now we've had a mutable builder, the caching makes it mutable. But even 
in a race condition, as the only change whjch ever takes place is a decode an 
update of the dictionary, if the dictionary was safe then the worst outcome is 
one of the lazy evals gets lost.
   
   Lets
   -make sure that the thread doing the lazy eval retains the values it needs 
for the duration of get()
   -look at the dictionary impl.
   
   Java HashMap is not thread safe, the very old HashTable is, but it may have 
its own penalty when used.
   
   That rust variant puts a lot of effort into memory efficiency too. Maybe we 
should make sure that these changes don't completely explode memory 
consumption. I know, it's a tradeoff (speed, space, code complexity). And 
queries like speed. And I think the focus should be "single thread speed and no 
inconsistency on multithreaded use" as single thread workers is what the query 
engines do. After all, they shouldn't expect the input streams to be 
thread-safe, should they? Two threads doing parallel reads of a stream is 
already making some big assumptions about the underlying layers (*)
   
   
   (*) hadoop input streams are thread safe precisely because code makes those 
assumptions, FWIW. Going thread unsafe broke hbase


-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to