[ 
https://issues.apache.org/jira/browse/HDFS-10704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15401181#comment-15401181
 ] 

James Clampffer commented on HDFS-10704:
----------------------------------------

What are the main benefits of this?  I have a feeling this will make the 
implementation a bit more completed and a bit harder to debug.  What's the 
current issue preventing multiple users from using the same filesystem?  
Kerberos tokens?  The way I see it:

Pros:
-Can better represent some architectures which is pretty nice
-a few less io_service instances
-user explicitly manages more of the library.
Cons:
-io_service is where a lot of lock contention lives, if someone wants to avoid 
it they'll end up using multiple io_services and some structure to track them
-each filesystem is most likely going to track it's worker threads anyway
-big one, as someone who's done a ton of the debugging inside asio, it makes 
things harder to debug/fix

I've been thinking for a while that the RpcEngine should have it's own 
asio::io_service.  Most of the difficult bugs I've hit manifest as something 
blowing up right around the io_service: dangling pointers to std::function 
callbacks, asio throws an exeption that knocks out a worker thread, file 
descriptor closed while another asio::socket object references it, so IMO more 
io_services isolates issues.  Performance should be pretty similar in either 
case; the io_service is just a wrapper around epoll or select state + some 
extra state to hold a fd condition->iovec/callback mapping.  On the other hand 
I'm all for moving things to requiring users to be smart about object 
dependencies so we can start getting rid of shared_ptrs in other places so I'd 
be happy if this pushes things in that direction.

> libhdfs++: FileSystem should not take ownership of IOService
> ------------------------------------------------------------
>
>                 Key: HDFS-10704
>                 URL: https://issues.apache.org/jira/browse/HDFS-10704
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: hdfs-client
>            Reporter: Bob Hansen
>
> The ctor for the filesystem currently takes ownership of the IOService passed 
> in.  There is a valid use case for a single IOService for multiple 
> FileSystems (e.g. for different users).
> If an IOService is passed in, the consumer should be responsible for its 
> lifetime.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to