Persistence plugins in default build artifacts #125
Replies: 4 comments 6 replies
-
Compared Polaris to Nessie, Nessie supportes a list of plug-able backend metastore out of box (https://projectnessie.org/nessie-latest/configuration/#version-store-settings with setting Currently even if we enabled eclipselink by default (and add h2 lib back for dependency), it is still pretty useless imo for production. For anyone to use it, they will still need to modify the gradle dependencies to include the driver jars they will needed and test out if that driver will work or not which is a bit inconvenience and making reproduce issues a bit more tedious (e.g. assuming user A is using driver A and user B is using driver Z to connect to MySQL and user A reported there are issues with connections etc. it will be hard for user B to reproduce the issue as the issue can be from driver as well as diff configures settings supported by various drivers). Then people will end up running their own forks for their prod workload. Then for licensing purpose, can we not avoid it by pulling down dependencies on runtime or use Apache licensed driver lib? For example, for Spark to connect to MySQL, a end-user will need to either pass in arguments to pull those dependencies before the job started or copy the jar into their image during build. |
Beta Was this translation helpful? Give feedback.
-
I think it is important to make the default build close to production ready as much as possible. We don't have to include every options, but at least a default ORM layer. In case of driver's licensing restriction, pulling at runtime or picking a Apache licensed one could be a solution as @MonkeyCanCode suggested. We can use a deployment script or any orchestrator to pull the driver. |
Beta Was this translation helpful? Give feedback.
-
I recommend moving the eclipse link extension to a different repo. |
Beta Was this translation helpful? Give feedback.
-
I merged #114 as a result of this. Closed the discussion. |
Beta Was this translation helpful? Give feedback.
-
Should we include persistence plugins in the default build output? Originally, we included
eclipselink
in the build output of the shadow jar that is used in the Docker image. This is nice for anyone that wants to configure the default docker image to useeclipselink
instead of the in-memory PolarisMetaStoreManager. That was accidentally removed in #53 . It's easy enough to fix that, but I wanted to bring up the question of whether or not we should, by default, include the extension project(s) in the default build output.The intention of the
extension
builds is to support multiple options for plugins which, possibly for licensing reasons, would not be required dependencies (hibernate was one use case). If we were to add support for other persistence plugins, we may have to deal with conflicting dependencies, as everything is lumped into the same shadow jar.On the other hand, not shipping a persistent metastore plugin makes the default Docker image somewhat useless for production. Though,
eclipselink
's requirement on a jar that contains thepersistence.xml
file also makes the default Docker image unusable for production anyhow, so...Thoughts?
Beta Was this translation helpful? Give feedback.
All reactions