miconda left a comment (kamailio/kamailio#4787)

In many cases I look at the diff of the PRs, because if there are many commits, 
one can amend another one and it is hard to track the final result by looking 
at subsequent commits. It is a significant diff and trust me I looked at it 
more than to many other PRs, but it is not humanly possible to cover all the 
cases there at such size.

The races between match and reload are a matter of design and with the one I 
understood being in this PR, the races cannot be avoided.

So, the `match_hash_table()` starts with `*current_trusted_table`, but uses 
only bucket lock, not table lock. A reload can swap the active pointer (table 
lock not being acquired by the match) and the timer routing starts freeing the 
table that can still be used by already-started `match_hash_table()`. Am I 
wrong here? If yes, how an already started match is protecting that a reload 
does not destroy the table it is using?

Up to you if you don't want to go with this PR further, it is not that I didn't 
want to accept your changes, I suggested an alternative as well. It is about 
the fact that a module used for critical operations should be protected as much 
as possible and a massive change has to show its benefits. If you don't want to 
discuss and clarify the concerns, the variant with a different module stands as 
an option.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/4787#issuecomment-4856859041
You are receiving this because you are subscribed to this thread.

Message ID: <kamailio/kamailio/pull/4787/[email protected]>
_______________________________________________
Kamailio - Development Mailing List -- [email protected]
To unsubscribe send an email to [email protected]
Important: keep the mailing list in the recipients, do not reply only to the 
sender!

Reply via email to