Zookeeper driver doesn't work with multi-process neutron-server
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
DragonFlow |
Fix Released
|
Medium
|
Li Ma |
Bug Description
Zookeeper driver is under review:
https:/
This bug report is to track the progress on this critical problem for zookeeper.
Problem Discovered:
Zookeeper operations are all blocked forever in Df core plugin, but works very well in DF_local_
The difference between DF_local_controller and neutron-server is that DF_local_controller is single process but neutron-server starts with multiple processes.
In neutron-server:
It first initialize core plugin and service plugins.
After that, it passes plugin objects to sub-process (workers).
It means that all the plugin objects are copied to multiple processes.
When initializing DF core plugin, it creates a DB client via DB-API layer. Zookeeper client-side has some local states which seems incompatible with multi-workers.
If we can initialize plugin objects after forking, it should work. However, it seems not realistic. You have to modify the neutron core mechanism. As a result, I will try to find how to make it in DF side.
Changed in dragonflow: | |
assignee: | nobody → Li Ma (nick-ma-z) |
summary: |
- Zookeeper doesn't work with multi-process neutron-server + Zookeeper driver doesn't work with multi-process neutron-server |
Changed in dragonflow: | |
status: | New → In Progress |
Changed in dragonflow: | |
importance: | Undecided → Medium |
You can do some thing similar to what I did in the
Pub sub patch use a multi process queue
And just have one process send the message s
For all the process
or
You can initialize the client in the post fork
Initialize method in the df plugin
And run multiple clients
I am in the air port now I will add the links to the
Patch and the call back later