On Wed, Mar 16, 2022 at 12:53 AM Dilip Kumar <dilipbal...@gmail.com> wrote: > Thanks Ashutosh and Robert. Other pacthes cleanly applied on this > patch still generated a new version so that we can find all patches > together. There are no other changes.
I committed my v3 of my refactoring patch, here 0001. I'm working over the comments in the rest of the patch series and will post an updated version when I get done. I think I will likely merge all the remaining patches together just to make it simpler to manage; we can split things out again if we need to do that. One question that occurred to me when looking this over is whether, or why, it's safe against concurrent smgr invalidations. It seems to me that every loop in the new CREATE DATABASE code needs to CHECK_FOR_INTERRUPTS() -- some do already -- and when they do that, I think we might receive an invalidation message that causes us to smgrclose() some or all of the things where we previously did smgropen(). I don't quite see why that can't cause problems here. I tried running the src/bin/scripts regression tests with debug_discard_caches=1 and none of the tests failed, so there may very well be a reason why this is actually totally fine, but I don't know what it is. On the other hand, it may be that things went horribly wrong and the tests are just smart enough to catch it, or maybe there's a problematic scenario which those tests just don't hit. I don't know. Thoughts? -- Robert Haas EDB: http://www.enterprisedb.com