I skimmed through and this seems like a clean design (I would have to
reread the PR to do a comparison.  A few thoughts of the top of my head:


> - Multiple internal classes are left public in header files, where it
> would be
>   preferred that public classes be kept to a minimum.

I think some of these classes are non-trivial.  If that  is the case it
would be preferable to put them in an internal namespace to ensure
adequate unit testing is in place.

It seems like KmsClient and maybe PropertiesDrivenCryptoFactory should
still be implemented with internal synchronization to guarantee
thread-safety?



On Wed, Nov 11, 2020 at 6:19 PM Benjamin Kietzman <bengil...@gmail.com>
wrote:

> In the context of https://issues.apache.org/jira/browse/ARROW-9318 /
> https://github.com/apache/arrow/pull/8023 which port the parquet-mr
> design to c++: there's some question whether that design is consistent
> with the style and conventions of the c++ implementation of parquet.
>
> Here is a Gist with a sketched alternative design adapted to c++
> https://gist.github.com/bkietz/f701d32add6f5a2aeed89ce36a443d43
>
> Specific concerns in brief:
> - Multiple internal classes are left public in header files, where it
> would be
>   preferred that public classes be kept to a minimum.
> - Several levels of explicit synchronization with mutexes are used to
> guarantee
>   that each class is completely thread safe, but this is unnecessary
> overhead
>   given the pattern of use of `parquet-cpp`.
>

Reply via email to