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!