DSR did not update, check or invaildate server[x].status#55
Open
daviddpd wants to merge 1 commit intoUlricE:masterfrom
Open
DSR did not update, check or invaildate server[x].status#55daviddpd wants to merge 1 commit intoUlricE:masterfrom
daviddpd wants to merge 1 commit intoUlricE:masterfrom
Conversation
for example taking a real server out of rotation via backlist. Adding some additional debugging statements for testing and verification.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When using the evaluating and testing, I was trying to manually take a server out of rotation, as documented in the example at http://siag.nu/hypermail/pen/0038.html
Using for example :
penctl localhost:8888 server 0 blacklist 300The server was not being taking out of rotation. As far as I could tell, try_server(), which should update server[x].status was not being called in the DSR mode. In additionally, in pen.c:do_cmd(), when running
penctl socket server X ...for any of the servers settings the DSR hashing table is never invalidatedserver_alg ^= ALG_HASH_VALIDAlso, there was no regular checking for for the blacklist timeout. The logical place seemed to be dsr.c:dsr_arp(). Added one new global last_hash_rebuild, and using the blacklist_time global as the a forced periodic server table rehashing, and is of course forced when penctl updates a server.
Added some more debugging to help follow the logic and verify. I have not verified the do_cmd() outside of DSR mode.