Flavio Junqueira created KAFKA-3210:
---------------------------------------

             Summary: Using asynchronous calls through the raw ZK API in ZkUtils
                 Key: KAFKA-3210
                 URL: https://issues.apache.org/jira/browse/KAFKA-3210
             Project: Kafka
          Issue Type: Improvement
          Components: controller, zkclient
    Affects Versions: 0.9.0.0
            Reporter: Flavio Junqueira
            Assignee: Neha Narkhede


We have observed a number of issues with the controller interaction with 
ZooKeeper mainly because ZkClient creates new sessions transparently under the 
hood. Creating sessions transparently enables, for example, old controller to 
successfully update znodes in ZooKeeper even when they aren't the controller 
any longer (e.g., KAFKA-3083). To fix this, we need to bypass the ZkClient lib 
like we did with ZKWatchedEphemeral.

In addition to fixing such races with the controller, it would improve 
performance significantly if we used the async API (see KAFKA-3038). The async 
API is more efficient because it pipelines the requests to ZooKeeper, and the 
number of requests upon controller recovery can be large.

This jira proposes to make these two changes to the calls in ZkUtils and to do 
it, one path is to first replace the calls in ZkUtils with raw async ZK calls 
and block so that we don't have to change the controller code in this phase. 
Once this step is accomplished and it is stable, we make changes to the 
controller to handle the asynchronous calls to ZooKeeper.

Note that in the first step, we will need to introduce some logic for session 
management, which is currently handled entirely by ZkClient.  



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

Reply via email to