-
Notifications
You must be signed in to change notification settings - Fork 616
Allow to control the order of shared_preload_libraries (citus) #3530
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…for citus extension) The citus extension needs to be loaded first when bringing up a cluster. The current implementation allows customising the extensions loaded, but extensions provided by the resource definition will be loaded after any internal ones. Therefore, we updated the implementation such that the extension list order will be driven by the shared_preload_libraries list when present. When your definition has a shared_preload_libraries list, the extension order will change to put the shared_preload_libraries first. ***This may change the behaviour of existing definitions when the order relied on the internal libs list***. When there shared_preload_libraries list contains one or more or the internal extensions, the duplicate internal extensions will be ignored, which allows the user to fully define the order of loading of extensions. Issue: CrunchyData#3194
🔧 This will need tests before it can merge. Perhaps here or a new dedicated one:
This looks like it will unblock the referenced issue, but I do want to point out that there is still no way to communicate "front of list" with this. Yes, setting 🤔 I also want to consider security boundaries here. One of the reasons PGO puts |
Sorry, as written, it does. But I'm still thinking about |
@cbandy thx for the feedback. I have added two tests which cover ordering and the preventing of duplication. Furthermore, I realised that I misrepresented what is happening in the original PR description (updated). Indeed, we only change the location of the internally loaded extensions if they are redefined in the shared_preload_libraries. Sorry about that, the change has been done a few weeks ago. I think that might address part of your security concerns in so far as the default behaviour remains the same unless there is an explicit intent of changing the order of internally loaded extension. |
Is there anything I can help with to take this forward or is there no interest for this change at this stage? |
Also interested - looking to activate citus, like @ratranqu |
@ratranqu Thank you for your PR. We have plans to provide a solution to specifically support Citus. |
Awesome! Any sort of timeframe? Happy to beta test if useful! |
Any guesses on the timeframe? |
@tony-landreth hey tony / crunchydata team - any guesses on timeframe? Really appreciate it. |
We took a different approach in #3761 to specifically accommodate the |
The citus extension needs to be loaded first when bringing up a cluster. The current implementation allows customising the extensions loaded, but extensions provided by the resource definition will be loaded after any internal ones.
Therefore, we updated the implementation such that the extension list order will be driven by the shared_preload_libraries list when present.
When your definition has a shared_preload_libraries list containing one of the internally loaded libraries, the extension order will change to take the order from the shared_preload_libraries list. This may change the behaviour of existing definitions when the shared_preload_libraries contains one of the internally loaded libraries.
When there shared_preload_libraries list contains one or more or the internal extensions, the duplicate internal extensions will be ignored, which allows the user to fully define the order of loading of extensions.
Issue: #3194