kingluo commented on PR #9259: URL: https://github.com/apache/apisix/pull/9259#issuecomment-1500029858
In fact, we should do below steps to implement incremental route synchronization: * export `raxRemove` as lua API https://github.com/api7/lua-resty-radixtree/blob/5364cbfe742a5a11f45c16d66b38d7e7b8bd969c/src/rax.c#L1020 ```c /* Remove the specified item. Returns 1 if the item was found and * deleted, 0 otherwise. */ int raxRemove(rax *rax, unsigned char *s, size_t len, void **old) ``` Then: Delete a route in etcd equals removing the old route item from the radix tree. Update a route in etcd equals removing the old route item and inserting a new one into the radix tree. * update the route in filter, not in config_etcd, because that handles watching for all resources, not only routes https://github.com/apache/apisix/blob/8805fc543f03bf04eec656d69eb46ed2377db1ce/apisix/router.lua#L30-L45 * disable full update of radix tree https://github.com/apache/apisix/blob/8805fc543f03bf04eec656d69eb46ed2377db1ce/apisix/http/router/radixtree_uri.lua#L31-L41 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
