[ https://issues.apache.org/jira/browse/ZOOKEEPER-770?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Enrico Olivelli updated ZOOKEEPER-770: -------------------------------------- Fix Version/s: 3.5.7 > Slow add_auth calls with multi-threaded client > ---------------------------------------------- > > Key: ZOOKEEPER-770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-770 > Project: ZooKeeper > Issue Type: Bug > Components: c client, contrib-bindings > Affects Versions: 3.3.0, 3.3.3, 3.4.0 > Environment: ubuntu lucid (10.04), zk trunk (3.4) > Reporter: Kapil Thangavelu > Assignee: Craig Calef > Priority: Major > Fix For: 3.6.0, 3.5.6, 3.5.7 > > Attachments: ZOOKEEPER-770-FIX.patch, ZOOKEEPER-770.patch, > ZOOKEEPER-770.patch, ZOOKEEPER-770.patch, authtest.py > > > Calls to add_auth are a bit slow from the c client library. The auth callback > typically takes multiple seconds to fire. I instrumented the java, c binding, > and python binding with a few log statements to find out where the slowness > was occuring ( > http://bazaar.launchpad.net/~hazmat/zookeeper/fast-auth-instrumented/revision/647). > It looks like when the io thread polls, it doesn't register interest in the > incoming packet, so the auth success message from the server and the auth > callback are only processed when the poll timeouts. I tried modifying > mt_adapter.c so the poll registers interest in both events, this causes a > considerably more wakeups but it does address the issue of making add_auth > fast. I think the ideal solution would be some sort of additional auth > handshake state on the handle, that zookeeper_interest could utilize to > suggest both POLLIN|POLLOUT are wanted for subsequent calls to poll during > the auth handshake handle state. > i'm attaching a script that takes 13s or 1.6s for the auth callback depending > on the session time out value (which in turn figures into the calculation of > the poll timeout). -- This message was sent by Atlassian Jira (v8.3.2#803003)