[ https://issues.apache.org/jira/browse/ZOOKEEPER-373?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12699426#action_12699426 ]
Benjamin Reed commented on ZOOKEEPER-373: ----------------------------------------- looks good. the one trick piece is the refCounting. specifically decrementing the counter. in close when you decrement the counter and then do the remove you aren't in a synchronized method, so you have a race condition. one other place that could be problematic is the mac object. isn't it possible that two different threads going to two different ledgers use the same mac? > One thread per bookie > --------------------- > > Key: ZOOKEEPER-373 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-373 > Project: Zookeeper > Issue Type: Improvement > Components: contrib-bookkeeper > Affects Versions: 3.1.1 > Reporter: Flavio Paiva Junqueira > Assignee: Flavio Paiva Junqueira > Fix For: 3.2.0 > > Attachments: ZOOKEEPER-373.patch, ZOOKEEPER-373.patch > > > Currently, if a client is writing to multiple ledgers and these ledgers > overlap on some bookie, there will be as many threads for such a bookie as > the number of ledgers writing to it. Consequently, if a client writes to many > ledgers simultaneously, it may end up with an undesirably large number of > threads. I don't have a concrete proposal yet, but I suspect it is as simple > as keeping an array of BookieHandle objects, one per bookie, and having each > BookieHandle object shared by all ledgers. > -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.