Reaugmentation or its friend 'build commands are what makes final products (like keycloak or polaris) not that consummable compared to standard plain JVM solution (CDI, EE, microprofile, spring and friends apps)
@Dmitri building doesn't add a jar, it does if you add a dependency somehow, doing a "copy" somewhere does, the common use case is an init container copying the driver from a well know driver (or location even if now OCI images being mountable make it very smooth) to a folder in the classpath of the app, 0 code modification of the "app", pure config. Think this is what we should be after. Romain Manni-Bucau @rmannibucau <https://x.com/rmannibucau> | .NET Blog <https://dotnetbirdie.github.io/> | Blog <https://rmannibucau.github.io/> | Old Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book <https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064> Javaccino founder (Java/.NET service - contact via linkedin) Le lun. 27 juil. 2026 à 19:31, Dmitri Bourlatchkov <[email protected]> a écrit : > ... but we still need to add (at least) one more jar to the application, > right? > > Is that possible without re-building? Sorry, I did not read the docs about > "mutable-jar" :) > > Cheers, > Dmitri. > > On Mon, Jul 27, 2026 at 1:22 PM Alexandre Dutra <[email protected]> wrote: > > > Hi Dmitri, > > > > From what I understand from the docs [1], it doesn't require a > > (separate) build, however the application startup will be very slow > > because it will be re-built on the fly. > > > > Here is the example they show: > > > > java -jar -Dquarkus.launch.rebuild=true > > -Dquarkus.datasource.db-kind=mysql target/quarkus-app/quarkus-run.jar > > > > Thanks, > > Alex > > > > [1]: > > > https://quarkus.io/guides/reaugmentation#2-re-augment-your-application-with-a-different-build-time-configuration > > > > On Mon, Jul 27, 2026 at 7:06 PM Dmitri Bourlatchkov <[email protected]> > > wrote: > > > > > > Hi Alex, > > > > > > Re-augmentation requires a build, does it not? > > > > > > We can probably do that inside docker: > > > > > > * User adds a jar to the image > > > * Quarkus build is executed inside docker build (using helper scripts > > > from Polaris) > > > * Final image is has the driver available via Quarkus. > > > > > > Did you mean something like this? > > > > > > Cheers, > > > Dmitri. > > > > > > On Mon, Jul 27, 2026 at 10:30 AM Alexandre Dutra <[email protected]> > > wrote: > > > > > > > Hi all, > > > > > > > > Indeed the Quarkus PR is likely not going to be accepted, however it > > > > seems that moving it to Quarkiverse could be acceptable. > > > > > > > > Someone also suggested the Keycloak project's approach to this > > > > problem: re-augmentation. Keycloak has exactly the same problem. Can > > > > we explore this idea as well? > > > > > > > > Thanks, > > > > Alex > > > > > > > > On Mon, Jul 27, 2026 at 4:26 PM Dmitri Bourlatchkov < > [email protected]> > > > > wrote: > > > > > > > > > > Hi All, > > > > > > > > > > Reading recent replies on Quarkus PR [55677] it does not looks like > > this > > > > > proposal is viable... unfortunately. > > > > > > > > > > If we go with a mixed approach similar to our PR [4984], how about > > the > > > > > following proposal? > > > > > > > > > > * Keep the JDBC persistence code generic and unaware of DataSource > > > > > implementations (i.e. do not try to "manage" it there) > > > > > > > > > > * Handle custom DataSources at the CDI layer in the runtime/* > modules > > > > > (ServiceProducers or similar (shared) code). This layer will choose > > > > whether > > > > > to use the Quarkus-managed DataSource (default), or load the driver > > > > > dynamically and "manually" configure the DataSource. Custom > > downstream > > > > > builds will keep the option to override the DataSource via CDI > > mechanics. > > > > > > > > > > * Do not try to make custom DataSource configuration to be the same > > as > > > > the > > > > > Quarkus configuration. It can only cause maintenance headache. > Define > > > > > separate, documented configuration options for the dynamic path. > > Users of > > > > > the dynamic driver will have to handle deployment differences > anyway. > > > > > > > > > > * Use Agroal on both paths for consistency. > > > > > > > > > > * Add a small integration test for the dynamic path based on MySQL > > > > > (test-only GPL deps are ok, I guess). > > > > > > > > > > As Alex noted above, we'll need to review observability in the > custom > > > > > DataSource case. I believe that no OTel support will be available > > there > > > > by > > > > > default, which probably needs to be documented (at least). > > > > > > > > > > [4984] https://github.com/apache/polaris/pull/4984 > > > > > > > > > > [55677] https://github.com/quarkusio/quarkus/pull/55677 > > > > > > > > > > Cheers, > > > > > Dmitri. > > > > > > > > > > On Mon, Jul 27, 2026 at 8:23 AM Jean-Baptiste Onofré < > > [email protected]> > > > > > wrote: > > > > > > > > > > > Hi all, > > > > > > > > > > > > I previously mentioned the potential for confusion in my review > of > > the > > > > > > PR. I believe our next steps depend on timing: if a native > > solution in > > > > > > Agroal/Quarkus is achievable soon, that would be the ideal path. > > > > > > Otherwise, I think PR #4984 could serve as a suitable temporary > > > > > > mitigation. > > > > > > > > > > > > Regards, > > > > > > JB > > > > > > > > > > > > On Mon, Jul 27, 2026 at 9:30 AM Alexandre Dutra < > [email protected] > > > > > > > wrote: > > > > > > > > > > > > > > Hi Yufei, > > > > > > > > > > > > > > I am still uncomfortable with the approach taken in #4984 of > > mixing > > > > > > > managed and unmanaged datasources. IMHO it's confusing from a > > > > > > > configuration and observability perspective, and I fear that > > > > > > > maintaining unmanaged datasources will prove way more > complicated > > > > than > > > > > > > "just" starting and stopping a datasource manually. > > > > > > > > > > > > > > Thanks, > > > > > > > Alex > > > > > > > > > > > > > > > > > > > > > On Sun, Jul 26, 2026 at 8:14 PM Yufei Gu <[email protected] > > > > > > wrote: > > > > > > > > > > > > > > > > Thanks for chiming in, JB! That's essentially the approach in > > my > > > > > > PR(4984 > > > > > > > > <https://github.com/apache/polaris/pull/4984>), which > > corresponds > > > > to > > > > > > Option > > > > > > > > 2 in Robert's email. Are we OK moving foward with this? > > > > > > > > > > > > > > > > Per-realm routing is a potential use case, not the scope of > > this > > > > > > effort. > > > > > > > > > > > > > > > > Yufei > > > > > > > > > > > > > > > > > > > > > > > > On Sun, Jul 26, 2026 at 10:03 AM Jean-Baptiste Onofré < > > > > [email protected] > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > Hi > > > > > > > > > > > > > > > > > > As already said, I still think Quarkus/Agroal stays the > > default > > > > and > > > > > > > > > single supported pool. I think adding a narrow, JVM-only, > > > > documented > > > > > > > > > runtime driver escape hatch is right. > > > > > > > > > > > > > > > > > > Concretely, I would: > > > > > > > > > 1. Split the PR: runtime driver loading is a small, > > defensible > > > > > > > > > feature. The second pool, and per-realm routing are not > > imho, and > > > > > > > > > should not ride in on its coattails. > > > > > > > > > 2. I think per-realm routing is a way bigger architectural > > > > decision. > > > > > > > > > 3. I think we should have an explicit agreement on the > > contract > > > > > > before > > > > > > > > > merging. > > > > > > > > > > > > > > > > > > The best would be to use Agroal, supporting a > runtime-mounted > > > > driver > > > > > > > > > in JVM mode. I will ping my Quarkus contacts to get the > > status of > > > > > > > > > that. > > > > > > > > > > > > > > > > > > Regards > > > > > > > > > JB > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Jul 24, 2026 at 10:24 PM Yufei Gu < > > [email protected]> > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > Robert, > > > > > > > > > > > > > > > > > > > > I don't think these are hypothetical use cases. They've > > been > > > > > > recurring > > > > > > > > > > design topics in Polaris for well over a year. > > > > > > > > > > > > > > > > > > > > - A JDBC driver supplied at runtime instead of being > on > > the > > > > > > build time > > > > > > > > > > classpath is important for proprietary and Apache > > license > > > > > > incompatible > > > > > > > > > > drivers, such as MySQL. This has been discussed in the > > > > > > community for > > > > > > > > > some > > > > > > > > > > time, and PR #4281[4] was blocked by this limitation. > > > > > > > > > > - We've also discussed realm based datasource routing > > > > > > repeatedly. For > > > > > > > > > > example: > > > > > > > > > > - Issue #3890 [1] tracks multi datasource support > and > > > > > > explicitly > > > > > > > > > > discusses whether separation should be per realm or > > by > > > > > > workload. > > > > > > > > > > - PR #1482 [2] proposed a concrete realm to > > datasource > > > > > > mapping. The > > > > > > > > > > discussion wasn't that the use case was invalid, > but > > that > > > > > > > > > Quarkus's build > > > > > > > > > > time datasource model made it difficult. > > > > > > > > > > - PR #3960 [3] introduced DataSourceResolver as > > > > groundwork > > > > > > for > > > > > > > > > > datasource routing. The feedback was to refine the > > > > design, > > > > > > not > > > > > > > > > > that the use > > > > > > > > > > case itself shouldn't be supported. > > > > > > > > > > > > > > > > > > > > Given this history, I don't think the question is whether > > these > > > > > > are real > > > > > > > > > > use cases. The project has already acknowledged them > > multiple > > > > > > times. > > > > > > > > > > > > > > > > > > > > Romain, thanks for the suggestion. I wish this could be > > > > resolved > > > > > > upstream > > > > > > > > > > in Quarkus, but I don't have much hope, since build time > > > > dependency > > > > > > > > > > resolution is one of Quarkus's core design principles. > > > > > > > > > > > > > > > > > > > > [1] https://github.com/apache/polaris/issues/3890 > > > > > > > > > > > > > > > > > > > > [2] https://github.com/apache/polaris/pull/1482 > > > > > > > > > > > > > > > > > > > > [3] https://github.com/apache/polaris/pull/3960 > > > > > > > > > > > > > > > > > > > > [4] https://github.com/apache/polaris/pull/4281 > > > > > > > > > > > > > > > > > > > > Yufei > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Jul 24, 2026 at 8:54 AM Romain Manni-Bucau < > > > > > > > > > [email protected]> > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > If down stream users need to build anything instead of > > mount > > > > the > > > > > > driver > > > > > > > > > > > then polaris becomes a lib and not a server, think very > > few > > > > > > consumer > > > > > > > > > see it > > > > > > > > > > > this way nor would like it so I would favor runtime > > support. > > > > > > > > > > > > > > > > > > > > > > The side note is that it is always better to not > compète > > with > > > > > > its own > > > > > > > > > stack > > > > > > > > > > > so maybe two push back to quarkus natively before > acting > > > > there. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Romain Manni-Bucau > > > > > > > > > > > @rmannibucau <https://x.com/rmannibucau> | .NET Blog > > > > > > > > > > > <https://dotnetbirdie.github.io/> | Blog < > > > > > > > > > https://rmannibucau.github.io/> > > > > > > > > > > > | Old > > > > > > > > > > > Blog <http://rmannibucau.wordpress.com> | Github > > > > > > > > > > > <https://github.com/rmannibucau> | LinkedIn > > > > > > > > > > > <https://www.linkedin.com/in/rmannibucau> | Book > > > > > > > > > > > < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064 > > > > > > > > > > > > > > > > > > > > > > > Javaccino founder (Java/.NET service - contact via > > linkedin) > > > > > > > > > > > > > > > > > > > > > > Le ven. 24 juil. 2026, 17:50, Robert Stupp < > > [email protected]> > > > > a > > > > > > écrit : > > > > > > > > > > > > > > > > > > > > > > > Hi Yufei, > > > > > > > > > > > > > > > > > > > > > > > > Option 1 would not provide either capability at > > runtime in > > > > the > > > > > > > > > upstream > > > > > > > > > > > > Polaris distribution. > > > > > > > > > > > > Optional drivers would be added through a downstream > > build > > > > or > > > > > > > > > assembly, > > > > > > > > > > > and > > > > > > > > > > > > datasource creation would remain Quarkus-managed. > > > > > > > > > > > > > > > > > > > > > > > > That is intentional rather than a missing part of > > option 1. > > > > > > > > > > > > I mentioned runtime driver loading and per-realm > > routing > > > > > > because > > > > > > > > > they are > > > > > > > > > > > > the two use cases stated for the POC, not because I > > think > > > > the > > > > > > > > > project has > > > > > > > > > > > > already agreed that Polaris itself must support both. > > > > > > > > > > > > > > > > > > > > > > > > The concrete current ask I see is a viable path for > > > > optional > > > > > > drivers > > > > > > > > > that > > > > > > > > > > > > Polaris cannot distribute in ASF releases. > > > > > > > > > > > > Runtime loading is one possible answer to that ask. > > > > > > > > > > > > A downstream build or assembly is another. > > > > > > > > > > > > > > > > > > > > > > > > Dynamic per-realm datasource creation is a separate > > future > > > > > > design. > > > > > > > > > > > > I do not think it should become an implicit > requirement > > > > for the > > > > > > > > > > > > optional-driver decision before its isolation, > > lifecycle, > > > > > > resource, > > > > > > > > > and > > > > > > > > > > > > operational contract has been discussed. > > > > > > > > > > > > > > > > > > > > > > > > So before evaluating option 1 against option 2's > > > > capabilities, > > > > > > I > > > > > > > > > think we > > > > > > > > > > > > need to decide whether runtime driver loading and > > > > Polaris-owned > > > > > > > > > dynamic > > > > > > > > > > > > datasource creation are project requirements. > > > > > > > > > > > > If both are requirements, option 1 is naturally > > excluded. > > > > > > > > > > > > If they are not, the POC's additional capabilities > > should > > > > not > > > > > > by > > > > > > > > > > > themselves > > > > > > > > > > > > become acceptance criteria for every alternative. > > > > > > > > > > > > > > > > > > > > > > > > My preference remains to preserve the Quarkus-managed > > path > > > > and > > > > > > > > > address > > > > > > > > > > > the > > > > > > > > > > > > optional-driver ask as narrowly as possible. > > > > > > > > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > > > Robert > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Jul 23, 2026 at 8:59 PM Yufei Gu < > > > > [email protected] > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > That ask does not by itself justify moving all > > > > supported > > > > > > > > > deployments > > > > > > > > > > > > away > > > > > > > > > > > > > > from Quarkus datasource management. > > > > > > > > > > > > > > Doing so would make Polaris responsible for > > > > configuration > > > > > > > > > > > > compatibility, > > > > > > > > > > > > > > lifecycle, health, metrics, tracing, > > > > credentials-provider > > > > > > > > > > > integration, > > > > > > > > > > > > > > shutdown, upgrades, and the support matrix > > currently > > > > > > covered by > > > > > > > > > > > > Quarkus. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 1. Keep Quarkus-managed data-sources and document > > the > > > > > > downstream > > > > > > > > > > > > > > build/assembly path for optional drivers. > > > > > > > > > > > > > > 2. Keep Quarkus-managed data-sources as the > > default and > > > > > > add a > > > > > > > > > > > > > deliberately > > > > > > > > > > > > > > limited JVM-only runtime-driver escape hatch. > > > > > > > > > > > > > > 3. Replace Quarkus-managed data-sources > completely. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > My current preference is ... (option1). > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Robert, one thing I'm still unclear about is how > > option 1 > > > > > > would > > > > > > > > > support > > > > > > > > > > > > the > > > > > > > > > > > > > following use cases that you mentioned: > > > > > > > > > > > > > > > > > > > > > > > > > > - Loading optional JDBC drivers at runtime. > > > > > > > > > > > > > - Creating datasources dynamically as a building > > > > block for > > > > > > > > > future > > > > > > > > > > > per > > > > > > > > > > > > > realm routing. > > > > > > > > > > > > > > > > > > > > > > > > > > My PR proposes option 2 because it addresses these > > use > > > > cases > > > > > > while > > > > > > > > > > > > keeping > > > > > > > > > > > > > the existing Quarkus managed deployment path > > unchanged. > > > > > > > > > > > > > > > > > > > > > > > > > > Yufei > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Jul 23, 2026 at 8:59 AM Dmitri > Bourlatchkov < > > > > > > > > > [email protected]> > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Yufei, > > > > > > > > > > > > > > > > > > > > > > > > > > > > I wonder why you chose Hikari initially in your > PR > > > > 4984. > > > > > > > > > > > Understanding > > > > > > > > > > > > > that > > > > > > > > > > > > > > rationale could be helpful for this discussion. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > Dmitri. > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Jul 22, 2026 at 11:28 PM Yufei Gu < > > > > > > [email protected]> > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Looks like we have two options at this point: > > Hikari > > > > > > (Alex, > > > > > > > > > me) and > > > > > > > > > > > > > > Agroal > > > > > > > > > > > > > > > (Dmitri, JB, Romain). > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Is there any further investigation we should do > > > > before > > > > > > making a > > > > > > > > > > > > > decision? > > > > > > > > > > > > > > > Or are we ready to start a vote? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yufei > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Jul 16, 2026 at 10:15 PM Romain > > Manni-Bucau < > > > > > > > > > > > > > > [email protected] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Maybe add "is there more than one committer" > > on the > > > > > > project > > > > > > > > > as a > > > > > > > > > > > > > > > criteria. > > > > > > > > > > > > > > > > Agroal is far to be my preferred pool but it > > is as > > > > > > easy as > > > > > > > > > others > > > > > > > > > > > > in > > > > > > > > > > > > > > > terms > > > > > > > > > > > > > > > > of config starting from properties ([1]) and > > using > > > > its > > > > > > > > > listeners. > > > > > > > > > > > > > > > > Also note that I assume all properties will > > not be > > > > > > exposed > > > > > > > > > but > > > > > > > > > > > > > > abstracted > > > > > > > > > > > > > > > > by polaris configuration (potentially > enabling > > a > > > > switch > > > > > > > > > later or > > > > > > > > > > > a > > > > > > > > > > > > > > > > multipool support like in Apache TomEE) so > > maybe > > > > it is > > > > > > the > > > > > > > > > first > > > > > > > > > > > > > thing > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > define, the needed properties and callbacks? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [1] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://github.com/agroal/agroal/blob/517fd36ab0cf1faebaae7d57a55c788d499a4c88/agroal-api/src/main/java/io/agroal/api/configuration/supplier/AgroalPropertiesReader.java#L56 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Romain Manni-Bucau > > > > > > > > > > > > > > > > @rmannibucau <https://x.com/rmannibucau> | > > .NET > > > > Blog > > > > > > > > > > > > > > > > <https://dotnetbirdie.github.io/> | Blog < > > > > > > > > > > > > > > https://rmannibucau.github.io/ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | Old > > > > > > > > > > > > > > > > Blog <http://rmannibucau.wordpress.com> | > > Github > > > > > > > > > > > > > > > > <https://github.com/rmannibucau> | LinkedIn > > > > > > > > > > > > > > > > <https://www.linkedin.com/in/rmannibucau> | > > Book > > > > > > > > > > > > > > > > < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Javaccino founder (Java/.NET service - > contact > > via > > > > > > linkedin) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Le jeu. 16 juil. 2026 à 22:18, Alexandre > Dutra > > < > > > > > > > > > > > [email protected]> > > > > > > > > > > > > a > > > > > > > > > > > > > > > > écrit : > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi all, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I don't think the actual pool > implementation > > > > matters > > > > > > much, > > > > > > > > > but > > > > > > > > > > > I > > > > > > > > > > > > > > would > > > > > > > > > > > > > > > > > weigh in some important criteria before > > choosing: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Is it easily configurable? > > > > > > > > > > > > > > > > > - Is it easily instrumentable? > > > > > > > > > > > > > > > > > - Is it well documented & maintained? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > While Agroal is the de facto choice for > > Quarkus > > > > > > (it's a > > > > > > > > > JBoss > > > > > > > > > > > > > lib), I > > > > > > > > > > > > > > > > > am not sure it outperforms Hikari for all > the > > > > > > criteria > > > > > > > > > above. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Jul 16, 2026 at 6:22 PM Yufei Gu < > > > > > > > > > [email protected] > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks everyone for chiming in. Agroal > is a > > > > good > > > > > > option > > > > > > > > > as > > > > > > > > > > > > well. > > > > > > > > > > > > > It > > > > > > > > > > > > > > > > looks > > > > > > > > > > > > > > > > > > like we're reaching consensus on direct > > > > datasource > > > > > > > > > management > > > > > > > > > > > > at > > > > > > > > > > > > > > > > runtime. > > > > > > > > > > > > > > > > > > I'll start working on the implementation > > soon. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yufei > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Jul 16, 2026 at 4:16 AM > > Jean-Baptiste > > > > > > Onofré < > > > > > > > > > > > > > > > [email protected]> > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi all, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I agree that direct datasource > > management at > > > > > > runtime > > > > > > > > > is a > > > > > > > > > > > > > better > > > > > > > > > > > > > > > > > > > approach than relying on > > quarkus-datasource, > > > > > > which > > > > > > > > > > > currently > > > > > > > > > > > > > > > requires > > > > > > > > > > > > > > > > > > > build-time dependencies. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > However, we can stay within the Quarkus > > > > > > ecosystem and > > > > > > > > > avoid > > > > > > > > > > > > > > > > > > > introducing new dependencies by using > > Agroal, > > > > > > which is > > > > > > > > > > > > already > > > > > > > > > > > > > > > > > > > included in our dependencies. This also > > keeps > > > > > > the door > > > > > > > > > open > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > combining it with Panache in the > future, > > > > should > > > > > > we > > > > > > > > > decide > > > > > > > > > > > to > > > > > > > > > > > > do > > > > > > > > > > > > > > so. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Regards, > > > > > > > > > > > > > > > > > > > JB > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Jul 16, 2026 at 1:28 AM Yufei > Gu > > < > > > > > > > > > > > > [email protected] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If our goal is to transition > > entirely to > > > > a > > > > > > > > > > > > "runtime-driven" > > > > > > > > > > > > > > > > > > > architecture, > > > > > > > > > > > > > > > > > > > > we should commit to it completely by > > fully > > > > > > removing > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > io.quarkus:quarkus-datasource > > > > > > > > > > > > > > > > > > > > dependency and switching to Hikari > > > > > > unconditionally. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Good point, Alex! I'm open to that. > If > > the > > > > > > community > > > > > > > > > > > > agrees, > > > > > > > > > > > > > I > > > > > > > > > > > > > > > can > > > > > > > > > > > > > > > > > make > > > > > > > > > > > > > > > > > > > > that change. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Romain, I chose Hikari because it is > > lean, > > > > > > fast, > > > > > > > > > simple. > > > > > > > > > > > > I'm > > > > > > > > > > > > > > open > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > > alternatives like dbcp2 if its > > evaluation > > > > > > proves > > > > > > > > > better. > > > > > > > > > > > As > > > > > > > > > > > > > you > > > > > > > > > > > > > > > > said, > > > > > > > > > > > > > > > > > > > both > > > > > > > > > > > > > > > > > > > > have pros and cons. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yufei > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Jul 15, 2026 at 11:03 AM > Romain > > > > > > Manni-Bucau < > > > > > > > > > > > > > > > > > > > [email protected]> > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Dumb question: why hikari? it has > > some > > > > > > issues like > > > > > > > > > not > > > > > > > > > > > > > > > respecting > > > > > > > > > > > > > > > > > its > > > > > > > > > > > > > > > > > > > conf > > > > > > > > > > > > > > > > > > > > > intentionally (max size in > > particular is > > > > the > > > > > > one > > > > > > > > > which > > > > > > > > > > > > > hurts > > > > > > > > > > > > > > > > since > > > > > > > > > > > > > > > > > you > > > > > > > > > > > > > > > > > > > > > overconsume for a moment your > > database > > > > > > connections > > > > > > > > > == > > > > > > > > > > > > > prevent > > > > > > > > > > > > > > > > some > > > > > > > > > > > > > > > > > > > services > > > > > > > > > > > > > > > > > > > > > to connect when scaled and tuned at > > max > > > > > > count), > > > > > > > > > there > > > > > > > > > > > is > > > > > > > > > > > > no > > > > > > > > > > > > > > > > silver > > > > > > > > > > > > > > > > > > > bullet > > > > > > > > > > > > > > > > > > > > > but something like dbcp2 can be > neat > > to > > > > start > > > > > > > > > _there_ > > > > > > > > > > > if > > > > > > > > > > > > > > agroal > > > > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > > > > used > > > > > > > > > > > > > > > > > > > > > as a base no - that said I dont see > > why > > > > > > switching > > > > > > > > > at > > > > > > > > > > > all, > > > > > > > > > > > > > > > agroal > > > > > > > > > > > > > > > > > can be > > > > > > > > > > > > > > > > > > > > > used without build time integration > > and > > > > stay > > > > > > > > > consistent > > > > > > > > > > > > > with > > > > > > > > > > > > > > it > > > > > > > > > > > > > > > > if > > > > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > > > day it > > > > > > > > > > > > > > > > > > > > > comes back? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Romain Manni-Bucau > > > > > > > > > > > > > > > > > > > > > @rmannibucau < > > https://x.com/rmannibucau> > > > > | > > > > > > .NET > > > > > > > > > Blog > > > > > > > > > > > > > > > > > > > > > <https://dotnetbirdie.github.io/> > | > > > > Blog < > > > > > > > > > > > > > > > > > > > https://rmannibucau.github.io/> > > > > > > > > > > > > > > > > > > > > > | Old > > > > > > > > > > > > > > > > > > > > > Blog < > > http://rmannibucau.wordpress.com> > > > > | > > > > > > Github > > > > > > > > > > > > > > > > > > > > > <https://github.com/rmannibucau> | > > > > LinkedIn > > > > > > > > > > > > > > > > > > > > > < > > https://www.linkedin.com/in/rmannibucau> > > > > | > > > > > > Book > > > > > > > > > > > > > > > > > > > > > < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Javaccino founder (Java/.NET > service > > - > > > > > > contact via > > > > > > > > > > > > > linkedin) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Le mer. 15 juil. 2026 à 19:13, > > Alexandre > > > > > > Dutra < > > > > > > > > > > > > > > > > [email protected]> > > > > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > > > > > écrit : > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi all, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If jdbc-url is set, Polaris > > creates > > > > and > > > > > > owns > > > > > > > > > the > > > > > > > > > > > > Hikari > > > > > > > > > > > > > > > > > > > datasource. If > > > > > > > > > > > > > > > > > > > > > > it is not set, we keep using the > > > > existing > > > > > > Quarkus > > > > > > > > > > > > > > datasource > > > > > > > > > > > > > > > > > path. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I have strong reservations > > regarding > > > > this > > > > > > design. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Alternating between a Hikari pool > > and > > > > an > > > > > > Agroal > > > > > > > > > pool > > > > > > > > > > > > > > > depending > > > > > > > > > > > > > > > > > on the > > > > > > > > > > > > > > > > > > > > > > configuration introduces > > unnecessary > > > > > > complexity > > > > > > > > > and > > > > > > > > > > > > > > potential > > > > > > > > > > > > > > > > > > > > > > confusion. A major drawback is > that > > > > bugs, > > > > > > > > > performance > > > > > > > > > > > > > > > > > > > characteristics, > > > > > > > > > > > > > > > > > > > > > > and configuration issues will > vary > > > > across > > > > > > > > > deployments > > > > > > > > > > > > > > purely > > > > > > > > > > > > > > > > > based on > > > > > > > > > > > > > > > > > > > > > > the underlying connection pool in > > use. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If our goal is to transition > > entirely > > > > to a > > > > > > > > > > > > > "runtime-driven" > > > > > > > > > > > > > > > > > > > > > > architecture, we should commit to > > it > > > > > > completely > > > > > > > > > by > > > > > > > > > > > > fully > > > > > > > > > > > > > > > > > removing the > > > > > > > > > > > > > > > > > > > > > > io.quarkus:quarkus-datasource > > > > dependency > > > > > > and > > > > > > > > > > > switching > > > > > > > > > > > > to > > > > > > > > > > > > > > > > Hikari > > > > > > > > > > > > > > > > > > > > > > unconditionally. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Jul 7, 2026 at 7:10 PM > > Yufei > > > > Gu < > > > > > > > > > > > > > > > [email protected]> > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Robert, JB, Dmitri, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, this feedback makes > > sense. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > There are really two > motivations > > > > here: > > > > > > runtime > > > > > > > > > > > > loading > > > > > > > > > > > > > of > > > > > > > > > > > > > > > > JDBC > > > > > > > > > > > > > > > > > > > drivers, > > > > > > > > > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > > > > > > > > dynamic datasource creation. > The > > > > former > > > > > > is > > > > > > > > > useful > > > > > > > > > > > for > > > > > > > > > > > > > ASF > > > > > > > > > > > > > > > > > binaries > > > > > > > > > > > > > > > > > > > > > where > > > > > > > > > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > > > > > > > driver is supplied after > Polaris > > is > > > > > > built. The > > > > > > > > > > > latter > > > > > > > > > > > > > is > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > building > > > > > > > > > > > > > > > > > > > > > block > > > > > > > > > > > > > > > > > > > > > > > for future per realm > datasources. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm OK that Quarkus/Agroal > > remains > > > > the > > > > > > default > > > > > > > > > for > > > > > > > > > > > > > > > supported > > > > > > > > > > > > > > > > > > > backends. > > > > > > > > > > > > > > > > > > > > > > > That's already part of the POC. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > The gap I'm trying to address > is > > > > where > > > > > > those > > > > > > > > > > > > > assumptions > > > > > > > > > > > > > > no > > > > > > > > > > > > > > > > > longer > > > > > > > > > > > > > > > > > > > > > hold. > > > > > > > > > > > > > > > > > > > > > > > Quarkus can select from > > predefined > > > > > > > > > datasources, but > > > > > > > > > > > > > they > > > > > > > > > > > > > > > > still > > > > > > > > > > > > > > > > > > > need to > > > > > > > > > > > > > > > > > > > > > be > > > > > > > > > > > > > > > > > > > > > > > configured ahead of time. It > > doesn't > > > > > > currently > > > > > > > > > > > > provide > > > > > > > > > > > > > > > > Polaris > > > > > > > > > > > > > > > > > > > with a > > > > > > > > > > > > > > > > > > > > > > clean > > > > > > > > > > > > > > > > > > > > > > > way to create new datasources > > > > > > dynamically. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > So my intent is for the > contract > > to > > > > be: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Quarkus/Agroal remains the > > > > default. > > > > > > > > > > > > > > > > > > > > > > > - Polaris managed JDBC is a > > JVM > > > > only > > > > > > escape > > > > > > > > > > > hatch > > > > > > > > > > > > > for > > > > > > > > > > > > > > > > > runtime > > > > > > > > > > > > > > > > > > > > > provided > > > > > > > > > > > > > > > > > > > > > > > drivers and dynamically > > created > > > > > > datasources. > > > > > > > > > > > > > > > > > > > > > > > - Polaris owns the pool and > > driver > > > > > > > > > lifecycle on > > > > > > > > > > > > that > > > > > > > > > > > > > > > path. > > > > > > > > > > > > > > > > > > > > > > > - Per realm datasource > routing > > > > should > > > > > > be a > > > > > > > > > > > > separate > > > > > > > > > > > > > > > design > > > > > > > > > > > > > > > > > > > > > discussion. > > > > > > > > > > > > > > > > > > > > > > > It's out of scope for this > > POC. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > JB, I agree we should continue > > using > > > > > > Quarkus > > > > > > > > > JDBC > > > > > > > > > > > > > drivers > > > > > > > > > > > > > > > for > > > > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > backends > > > > > > > > > > > > > > > > > > > > > > > we support directly. This path > is > > > > mainly > > > > > > for > > > > > > > > > the > > > > > > > > > > > > cases > > > > > > > > > > > > > > > > outside > > > > > > > > > > > > > > > > > that > > > > > > > > > > > > > > > > > > > > > > model. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yufei > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Jul 7, 2026 at 8:03 AM > > > > > > Jean-Baptiste > > > > > > > > > > > Onofré < > > > > > > > > > > > > > > > > > > > [email protected]> > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Regarding JDBC drivers in the > > > > Quarkus > > > > > > > > > ecosystem > > > > > > > > > > > (in > > > > > > > > > > > > > > > > > > > > > quarkus-extensions > > > > > > > > > > > > > > > > > > > > > > or > > > > > > > > > > > > > > > > > > > > > > > > quarkiverse), I think we can > > just > > > > > > leverage > > > > > > > > > the > > > > > > > > > > > > > quarkus > > > > > > > > > > > > > > > JDBC > > > > > > > > > > > > > > > > > > > drivers. > > > > > > > > > > > > > > > > > > > > > > > > Using another loading > mechanism > > > > could > > > > > > be > > > > > > > > > > > > problematic > > > > > > > > > > > > > > for > > > > > > > > > > > > > > > > > future > > > > > > > > > > > > > > > > > > > > > > features > > > > > > > > > > > > > > > > > > > > > > > > (imagine with we want to try > > > > native app > > > > > > > > > buld). > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > What is the problem with > using > > the > > > > > > Quarkus > > > > > > > > > JDBC > > > > > > > > > > > > > > drivers? > > > > > > > > > > > > > > > > > > > > > > > > I remember that we agreed to > be > > > > > > opinionated > > > > > > > > > about > > > > > > > > > > > > the > > > > > > > > > > > > > > > JDBC > > > > > > > > > > > > > > > > > > > backends > > > > > > > > > > > > > > > > > > > > > we > > > > > > > > > > > > > > > > > > > > > > want > > > > > > > > > > > > > > > > > > > > > > > > to support, so we can be > > > > opinionated > > > > > > about > > > > > > > > > the > > > > > > > > > > > JDBC > > > > > > > > > > > > > > > drivers > > > > > > > > > > > > > > > > > :) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm not against it, but I > would > > > > like to > > > > > > > > > > > understand > > > > > > > > > > > > > > better > > > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > rationale. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Regards > > > > > > > > > > > > > > > > > > > > > > > > JB > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Jul 7, 2026 at > 3:03 PM > > > > Robert > > > > > > Stupp < > > > > > > > > > > > > > > > > [email protected]> > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for pushing this > > forward. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I agree that > runtime-provided > > > > JDBC > > > > > > drivers > > > > > > > > > are > > > > > > > > > > > a > > > > > > > > > > > > > real > > > > > > > > > > > > > > > > > problem > > > > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > > > > solve. > > > > > > > > > > > > > > > > > > > > > > > > > For ASF-distributed > binaries, > > > > there > > > > > > are > > > > > > > > > valid > > > > > > > > > > > > cases > > > > > > > > > > > > > > > where > > > > > > > > > > > > > > > > > > > Polaris > > > > > > > > > > > > > > > > > > > > > > should > > > > > > > > > > > > > > > > > > > > > > > > > not bundle a driver, but > > > > operators > > > > > > still > > > > > > > > > need a > > > > > > > > > > > > way > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > provide > > > > > > > > > > > > > > > > > > > one. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > My concern is that this PR > > does > > > > more > > > > > > than > > > > > > > > > load > > > > > > > > > > > > > > runtime > > > > > > > > > > > > > > > > > driver > > > > > > > > > > > > > > > > > > > jars. > > > > > > > > > > > > > > > > > > > > > > > > > It also introduces a second > > > > > > datasource > > > > > > > > > stack: > > > > > > > > > > > > > > > > > Quarkus/Agroal > > > > > > > > > > > > > > > > > > > via > > > > > > > > > > > > > > > > > > > > > > > > > `quarkus.datasource.*` on > one > > > > side, > > > > > > and > > > > > > > > > > > > > Polaris-owned > > > > > > > > > > > > > > > > > Hikari > > > > > > > > > > > > > > > > > > > pools > > > > > > > > > > > > > > > > > > > > > > via > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > `polaris.persistence.relational.jdbc.*` on > > > > > > > > > the > > > > > > > > > > > > > other. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Those two paths look > similar > > to > > > > > > operators, > > > > > > > > > but > > > > > > > > > > > > they > > > > > > > > > > > > > > do > > > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > > > > have the > > > > > > > > > > > > > > > > > > > > > > same > > > > > > > > > > > > > > > > > > > > > > > > > contract. > > > > > > > > > > > > > > > > > > > > > > > > > The Quarkus path brings > > > > > > Quarkus/Agroal > > > > > > > > > > > lifecycle, > > > > > > > > > > > > > > > health, > > > > > > > > > > > > > > > > > > > metrics, > > > > > > > > > > > > > > > > > > > > > > > > > credentials/secret-manager > > > > > > integrations, > > > > > > > > > and > > > > > > > > > > > the > > > > > > > > > > > > > > > broader > > > > > > > > > > > > > > > > > > > datasource > > > > > > > > > > > > > > > > > > > > > > > > config > > > > > > > > > > > > > > > > > > > > > > > > > surface; those are all > > important > > > > for > > > > > > > > > operators. > > > > > > > > > > > > > > > > > > > > > > > > > The Polaris-managed path > > means > > > > > > Polaris owns > > > > > > > > > > > pool > > > > > > > > > > > > > > > > lifecycle, > > > > > > > > > > > > > > > > > > > driver > > > > > > > > > > > > > > > > > > > > > > > > loading, > > > > > > > > > > > > > > > > > > > > > > > > > classloader behavior, and a > > > > separate > > > > > > > > > > > > config/support > > > > > > > > > > > > > > > > > surface. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > So I do not think this is > > ready > > > > to > > > > > > move > > > > > > > > > forward > > > > > > > > > > > > as > > > > > > > > > > > > > > just > > > > > > > > > > > > > > > > > > > “another > > > > > > > > > > > > > > > > > > > > > JDBC > > > > > > > > > > > > > > > > > > > > > > > > > configuration option.” > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Before I would consider > this > > > > > > mergeable, I > > > > > > > > > think > > > > > > > > > > > > we > > > > > > > > > > > > > > need > > > > > > > > > > > > > > > > > > > explicit > > > > > > > > > > > > > > > > > > > > > > > > agreement > > > > > > > > > > > > > > > > > > > > > > > > > on the contract: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 1. Is Polaris-managed JDBC > > only a > > > > > > narrow > > > > > > > > > escape > > > > > > > > > > > > > hatch > > > > > > > > > > > > > > > for > > > > > > > > > > > > > > > > > > > > > > > > runtime-provided > > > > > > > > > > > > > > > > > > > > > > > > > driver jars, or a peer > > supported > > > > > > datasource > > > > > > > > > > > path? > > > > > > > > > > > > > > > > > > > > > > > > > 2. Which Quarkus/Agroal > > > > integrations > > > > > > are > > > > > > > > > > > > > > intentionally > > > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > > > > > > available > > > > > > > > > > > > > > > > > > > > > > on > > > > > > > > > > > > > > > > > > > > > > > > > that path? > > > > > > > > > > > > > > > > > > > > > > > > > 3. What lifecycle does > > Polaris > > > > own > > > > > > for > > > > > > > > > pools, > > > > > > > > > > > > > loaded > > > > > > > > > > > > > > > > > drivers, > > > > > > > > > > > > > > > > > > > > > > shutdown, > > > > > > > > > > > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > > > > > > > > > > driver upgrades? > > > > > > > > > > > > > > > > > > > > > > > > > 4. Is this meant to be part > > of > > > > future > > > > > > > > > per-realm > > > > > > > > > > > > > > > > datasource > > > > > > > > > > > > > > > > > > > routing? > > > > > > > > > > > > > > > > > > > > > > If > > > > > > > > > > > > > > > > > > > > > > > > so, > > > > > > > > > > > > > > > > > > > > > > > > > I think that needs a > separate > > > > design > > > > > > > > > > > discussion. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Until that contract is > > agreed, I > > > > do > > > > > > not > > > > > > > > > think > > > > > > > > > > > we > > > > > > > > > > > > > > should > > > > > > > > > > > > > > > > > present > > > > > > > > > > > > > > > > > > > > > this > > > > > > > > > > > > > > > > > > > > > > as a > > > > > > > > > > > > > > > > > > > > > > > > > second supported JDBC path > or > > > > treat > > > > > > the PR > > > > > > > > > as > > > > > > > > > > > > > > mergeable > > > > > > > > > > > > > > > > > with > > > > > > > > > > > > > > > > > > > > > > > > documentation > > > > > > > > > > > > > > > > > > > > > > > > > updates alone. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Jul 7, 2026 at > > 3:48 AM > > > > Dmitri > > > > > > > > > > > > Bourlatchkov > > > > > > > > > > > > > < > > > > > > > > > > > > > > > > > > > > > [email protected] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Yufei, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for the update. > That > > > > > > approach to > > > > > > > > > > > loading > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > driver > > > > > > > > > > > > > > > > > > > can > > > > > > > > > > > > > > > > > > > > > > work, I > > > > > > > > > > > > > > > > > > > > > > > > > > think. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > However, I'm not sure > > whether > > > > it is > > > > > > > > > > > preferable > > > > > > > > > > > > > to a > > > > > > > > > > > > > > > > > proper > > > > > > > > > > > > > > > > > > > > > Quarkus > > > > > > > > > > > > > > > > > > > > > > > > > > downstream build. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Adding jars to Polaris > > still > > > > > > requires > > > > > > > > > some > > > > > > > > > > > form > > > > > > > > > > > > > of > > > > > > > > > > > > > > > > > downstream > > > > > > > > > > > > > > > > > > > > > > build, > > > > > > > > > > > > > > > > > > > > > > > > > > whether it is tar-based > or > > > > > > docker-based. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Performing a full Quarkus > > build > > > > > > > > > downstream > > > > > > > > > > > > offers > > > > > > > > > > > > > > > some > > > > > > > > > > > > > > > > > > > > > advantages, > > > > > > > > > > > > > > > > > > > > > > > > > though: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > * Integration tests can > be > > > > > > executed with > > > > > > > > > the > > > > > > > > > > > > > > specific > > > > > > > > > > > > > > > > > driver. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > * Dependencies are > > resolved / > > > > > > validated > > > > > > > > > at > > > > > > > > > > > > build > > > > > > > > > > > > > > > time. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > * Quarkus manages the > > > > DataSource > > > > > > > > > lifecycle. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I wonder what other > people > > > > think > > > > > > too. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > > > > > > > > > > > > > > > > > Dmitri. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Jul 6, 2026 at > > 9:22 PM > > > > > > Yufei Gu < > > > > > > > > > > > > > > > > > > > [email protected]> > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Dmitri, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Good catch. The initial > > POC > > > > only > > > > > > > > > proved the > > > > > > > > > > > > > > driver > > > > > > > > > > > > > > > > > works if > > > > > > > > > > > > > > > > > > > > > it’s > > > > > > > > > > > > > > > > > > > > > > > > > already > > > > > > > > > > > > > > > > > > > > > > > > > > > visible to the runtime > > > > > > classloader. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I updated the approach > > so the > > > > > > > > > > > Polaris-managed > > > > > > > > > > > > > > JDBC > > > > > > > > > > > > > > > > > > > datasource > > > > > > > > > > > > > > > > > > > > > can > > > > > > > > > > > > > > > > > > > > > > > > load > > > > > > > > > > > > > > > > > > > > > > > > > > > driver jars explicitly > > before > > > > > > creating > > > > > > > > > > > > Hikari. > > > > > > > > > > > > > In > > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > binary > > > > > > > > > > > > > > > > > > > > > > > > > > distribution, > > > > > > > > > > > > > > > > > > > > > > > > > > > users can drop jars > into: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > server/jdbc-drivers/ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > For admin-tool > > > > bootstrap/purge, > > > > > > the > > > > > > > > > same > > > > > > > > > > > > > applies > > > > > > > > > > > > > > > > under: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > admin/jdbc-drivers/ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > They can also override > > the > > > > > > location > > > > > > > > > with: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > polaris.persistence.relational.jdbc.driver-directory=/path/to/jdbc-drivers > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > So this does not depend > > on > > > > > > adding jars > > > > > > > > > to > > > > > > > > > > > > > > lib/main > > > > > > > > > > > > > > > or > > > > > > > > > > > > > > > > > > > > > rebuilding > > > > > > > > > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > > > > > > Quarkus fast-jar > > metadata. > > > > The > > > > > > jar just > > > > > > > > > > > needs > > > > > > > > > > > > > to > > > > > > > > > > > > > > be > > > > > > > > > > > > > > > > > present > > > > > > > > > > > > > > > > > > > > > > before > > > > > > > > > > > > > > > > > > > > > > > > > > Polaris > > > > > > > > > > > > > > > > > > > > > > > > > > > creates the datasource. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yufei > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Jul 6, 2026 at > > > > 3:25 PM > > > > > > Dmitri > > > > > > > > > > > > > > Bourlatchkov > > > > > > > > > > > > > > > < > > > > > > > > > > > > > > > > > > > > > > [email protected] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Yufei, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Could you provide > some > > more > > > > > > details > > > > > > > > > about > > > > > > > > > > > > how > > > > > > > > > > > > > > > > > exactly a > > > > > > > > > > > > > > > > > > > 3rd > > > > > > > > > > > > > > > > > > > > > > party > > > > > > > > > > > > > > > > > > > > > > > > > JDBC > > > > > > > > > > > > > > > > > > > > > > > > > > > > driver is > incorporated > > into > > > > > > Polaris? > > > > > > > > > I > > > > > > > > > > > > might > > > > > > > > > > > > > > have > > > > > > > > > > > > > > > > > missed > > > > > > > > > > > > > > > > > > > that > > > > > > > > > > > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > > > > > PR, > > > > > > > > > > > > > > > > > > > > > > > > > > > > but it was not > > apparent to > > > > me > > > > > > at > > > > > > > > > first > > > > > > > > > > > > > reading. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > > > > > > > > > > > Dmitri. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Jul 6, 2026 > at > > > > 6:22 PM > > > > > > Yufei > > > > > > > > > Gu < > > > > > > > > > > > > > > > > > > > > > [email protected]> > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi all, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I put together a > > small > > > > POC( > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://github.com/apache/polaris/pull/4984 > > > > > > > > > > > > > > > > > > > > > > > > > > > ) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > for > > > > > > > > > > > > > > > > > > > > > > > > > > > > > the relational JDBC > > > > backend > > > > > > so > > > > > > > > > Polaris > > > > > > > > > > > > can > > > > > > > > > > > > > > > create > > > > > > > > > > > > > > > > > its > > > > > > > > > > > > > > > > > > > own > > > > > > > > > > > > > > > > > > > > > > JDBC > > > > > > > > > > > > > > > > > > > > > > > > > > > datasource > > > > > > > > > > > > > > > > > > > > > > > > > > > > > from config, > instead > > of > > > > > > always > > > > > > > > > relying > > > > > > > > > > > on > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > Quarkus > > > > > > > > > > > > > > > > > > > > > > datasource. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > The config looks > like > > > > this: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > polaris.persistence.relational.jdbc.jdbc-url=jdbc:postgresql://... > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > polaris.persistence.relational.jdbc.driver=org.postgresql.Driver > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > polaris.persistence.relational.jdbc.username=... > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > polaris.persistence.relational.jdbc.password=... > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If jdbc-url is set, > > > > Polaris > > > > > > > > > creates and > > > > > > > > > > > > > owns > > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > Hikari > > > > > > > > > > > > > > > > > > > > > > > > datasource. > > > > > > > > > > > > > > > > > > > > > > > > > > If > > > > > > > > > > > > > > > > > > > > > > > > > > > it > > > > > > > > > > > > > > > > > > > > > > > > > > > > > is not set, we keep > > > > using the > > > > > > > > > existing > > > > > > > > > > > > > > Quarkus > > > > > > > > > > > > > > > > > > > datasource > > > > > > > > > > > > > > > > > > > > > > path. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I also added tests > > > > showing > > > > > > that: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - We can create > > > > > > datasources > > > > > > > > > > > > dynamically > > > > > > > > > > > > > > from > > > > > > > > > > > > > > > > > config > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Different > > > > > > configurations can > > > > > > > > > > > create > > > > > > > > > > > > > > > > > independent > > > > > > > > > > > > > > > > > > > > > > datasources, > > > > > > > > > > > > > > > > > > > > > > > > > > which > > > > > > > > > > > > > > > > > > > > > > > > > > > > > could help > future > > > > > > per-realm > > > > > > > > > > > datasource > > > > > > > > > > > > > > > support > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - A JDBC driver > > can be > > > > > > supplied > > > > > > > > > at > > > > > > > > > > > > > runtime > > > > > > > > > > > > > > > > from > > > > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > > > jar > > > > > > > > > > > > > > > > > > > > > > instead > > > > > > > > > > > > > > > > > > > > > > > > of > > > > > > > > > > > > > > > > > > > > > > > > > > > being > > > > > > > > > > > > > > > > > > > > > > > > > > > > > on the > build-time > > > > > > classpath. > > > > > > > > > This is > > > > > > > > > > > > > very > > > > > > > > > > > > > > > > > helpful > > > > > > > > > > > > > > > > > > > for > > > > > > > > > > > > > > > > > > > > > > > > > proprietary > > > > > > > > > > > > > > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Apache > > > > > > license-incompatible > > > > > > > > > drivers, > > > > > > > > > > > > > like > > > > > > > > > > > > > > > > MySQL. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > This POC does not > yet > > > > > > implement > > > > > > > > > full > > > > > > > > > > > > > > per-realm > > > > > > > > > > > > > > > > > > > datasource > > > > > > > > > > > > > > > > > > > > > > > > routing. > > > > > > > > > > > > > > > > > > > > > > > > > It > > > > > > > > > > > > > > > > > > > > > > > > > > > > only > > > > > > > > > > > > > > > > > > > > > > > > > > > > > demonstrates the > > > > lower-level > > > > > > > > > building > > > > > > > > > > > > > blocks: > > > > > > > > > > > > > > > > > Polaris > > > > > > > > > > > > > > > > > > > can > > > > > > > > > > > > > > > > > > > > > > create > > > > > > > > > > > > > > > > > > > > > > > > > > > managed > > > > > > > > > > > > > > > > > > > > > > > > > > > > > JDBC pools from > > config, > > > > > > multiple > > > > > > > > > pools > > > > > > > > > > > > can > > > > > > > > > > > > > be > > > > > > > > > > > > > > > > > created > > > > > > > > > > > > > > > > > > > > > > > > > independently, > > > > > > > > > > > > > > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > > > > > > > > > > > > > > the JDBC driver can > > be > > > > > > supplied at > > > > > > > > > > > > runtime. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Feedback is welcome > > > > before I > > > > > > turn > > > > > > > > > this > > > > > > > > > > > > > into a > > > > > > > > > > > > > > > > > formal > > > > > > > > > > > > > > > > > > > PR. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yufei > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
