Re: BUG #18014: Releasing catcache entries makes schema_to_xmlschema() fail when parallel workers are used
От | Tom Lane |
---|---|
Тема | Re: BUG #18014: Releasing catcache entries makes schema_to_xmlschema() fail when parallel workers are used |
Дата | |
Msg-id | 1830960.1690343673@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: BUG #18014: Releasing catcache entries makes schema_to_xmlschema() fail when parallel workers are used (Michael Paquier <michael@paquier.xyz>) |
Ответы |
Re: BUG #18014: Releasing catcache entries makes schema_to_xmlschema() fail when parallel workers are used
|
Список | pgsql-bugs |
Michael Paquier <michael@paquier.xyz> writes: > FWIW, I'm having a hard time thinking about a reason that we should > not support SearchSysCacheExists()+lookup to be a valid pattern, even > if the cache is clobbered. I am pretty sure that there are other code > paths in the tree, not mentioned on this thread, that do exactly that > (haven't checked, but indexcmds.c is one coming in mind). Yeah. As I see it, there are several questions here. First, is the SearchSysCacheExists()+lookup pattern actually unsafe, that is is there a way to break it without any cache-clobbering debug options enabled? If so, there's no question we have to get rid of it. If it isn't really unsafe, then we have a choice whether to get rid of it or adjust the cache-clobbering options to not fail. I think the main argument for keeping it is exactly that we've probably depended on the idea in multiple places, and finding them all might be hard (and not re-introducing more later, even harder). On the other hand, I have to concede that such coding patterns are inherently fragile: you can't introduce any new opportunities for a cache inval between the SearchSysCacheExists() and the lookup, or there's definitely a real hazard --- which we might not find for awhile, if this example is anything to go by. These has_foo_privilege() functions are arguably a good example of the least safe way to go about it, in that the SearchSysCacheExists and the subsequent lookup aren't textually close or even in the same module. Nor do we have any comments warning against introducing more logic into the critical code paths. So another conclusion we could arrive at is that the pattern isn't inherently unsafe, but we should only allow it when there's not much code between the two calls, which would probably lead to wanting to rewrite the has_foo_privilege() family after all. I don't yet have an opinion about which way to go. regards, tom lane
В списке pgsql-bugs по дате отправления: