How can we make Zuul view of data/dynamic properties from archaius and server list consistant ?
rajc28 opened this issue · 2 comments
We are using using Zuul 2.3 as API-Gateway and Archaius as configuration library for accessing dynamic configuration, all the ribbon properties are updated in to Archaius for every x
sec , endpoint/host details of upstream is loaded using <vip>.ribbon.listOfServers
ribbon property which will be read by implementation of AbstractServerList<DiscoveryEnabledServer>
which in turn will be referred by loadbalancer, server list data is refreshed periodically from archaius in a refresh thread for each Origin.
So, the issue is because of an addition polling (other than archaius polling) which DynamicServerListLoadBalancer does to get the updated server list Ref: https://github.com/Netflix/ribbon/blob/master/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/DynamicServerListLoadBalancer.java#L60-L61.
Example:
Initially API /cat/dog
is configured to go to host1
, later if we update config to add prefix /test
and endpoint to be host2
. As the data is reflected in archaius and loadbalancer referencing server list(which in turn gets it from archaius) at different times, request is being routed to old host host1
by adding prefix /test
until load balancer is updated with new server list.
How we can create our own AbstractServerList that will get updated at the same time that we read the Archaius configuration.
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days.
This issue was closed because it has been stalled for 7 days with no activity.