Skip to content
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

Merge quarkus/[service|server] modules in polaris-server #1030

Open
jbonofre opened this issue Feb 20, 2025 · 17 comments
Open

Merge quarkus/[service|server] modules in polaris-server #1030

jbonofre opened this issue Feb 20, 2025 · 17 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@jbonofre
Copy link
Member

jbonofre commented Feb 20, 2025

All quarkus modules can be merged together in a single module. This module should be polaris-server directly (no need to keep Quarkus there).

@jbonofre jbonofre added the enhancement New feature or request label Feb 20, 2025
@jbonofre jbonofre self-assigned this Feb 20, 2025
@jbonofre jbonofre added this to the 1.0.0 milestone Feb 20, 2025
@snazy
Copy link
Member

snazy commented Feb 20, 2025

No, those cannot (and should not) be merged.

@snazy
Copy link
Member

snazy commented Feb 20, 2025

/cc @adutra

@jbonofre
Copy link
Member Author

@snazy It has been discussed with @adutra and yes it's possible and should be done.

@jbonofre
Copy link
Member Author

To be clear, the intent here is to "merge" the beans but still have a default module with just application.properties.

@snazy
Copy link
Member

snazy commented Feb 20, 2025

To be clear, the intent here is to "merge" the beans but still have a default module with just application.properties.

This is not what the title says: "merge admin-tool + server (+ service)". Those are two different executables

@jbonofre jbonofre changed the title Merge quarkus/[service|admin|server] modules in polaris-server Merge quarkus/[service|server] modules in polaris-server Feb 20, 2025
@jbonofre
Copy link
Member Author

Ah yes, the idea is to merge service and server as app. admin is still "separated". Sorry I wasn't clear enough.

@adutra
Copy link
Contributor

adutra commented Feb 20, 2025

Yes, we can (and probably should) merge service and server. But we should not touch admin or defaults.

I already have the change ready btw, but it's waiting on #987.

Also, the change will introduce a tricky issue related to docker images and integration tests. It's manageable, but It would maybe be easier if we waited for quarkusio/quarkus#46232.

@jbonofre
Copy link
Member Author

@adutra thanks for your update. I agree. The intent of this GitHub Issue is just to track it. I hope you don't mind: I assigned the issue to you as you already have the change ready.

@dimas-b
Copy link
Contributor

dimas-b commented Feb 20, 2025

What will the unified polaris-server module publish (to Maven)? Will it be the quarkus fat jar or a lean jar with just local classes?

How can downstream projects reuse service classes without pulling too much extra stuff?

@adutra
Copy link
Contributor

adutra commented Feb 21, 2025

What will the unified polaris-server module publish (to Maven)? Will it be the quarkus fat jar or a lean jar with just local classes?

How can downstream projects reuse service classes without pulling too much extra stuff?

It would be the fat jar (and the docker images).

You raise a very good point. Let me think about this more. It might not be a good idea after all.

@snazy
Copy link
Member

snazy commented Feb 21, 2025

It would be the fat jar (and the docker images).

I'd favor a zip/tgz distribution over a fat jar (aka don't tackle #797, #785 has a demo for this.)

Quarkus "fast jar" builds faster and leaves the individual dependency jars (although instrumented). IIRC "Quarkus uber-jar" is no longer really recommended.

A zip/tgz also allows us to include our own files (LICENSE/NOTICE or some README or whatever) in a "prominent place" next to some run.sh.

@jbonofre
Copy link
Member Author

I agree with @snazy : I also prefer distributions (not far jar).
Also I would advocate to have several modules with beans that people can use in their own packaging (I don't say now but something we should consider at some point).

@adutra
Copy link
Contributor

adutra commented Feb 21, 2025

It would be the fat jar (and the docker images).

I'm sorry, stupid typo 😆 : I meant FAST jar, not fat jar.

So to summarize: the quarkus-server module currently builds:

  • the FAST jar
  • all the application data files and dependency jars, in build/quarkus-app
  • Two distributions, zip and tar.gz, that contain the contents of build/quarkus-app + the NOTICE and LICENSE-BINARY-DIST files (the latter being renamed to LICENSE)
  • A docker image named apache/polaris with two tags: latest and the version number.

@dimas-b
Copy link
Contributor

dimas-b commented Feb 21, 2025

Sorry about the confusion, but my concern is about what will be published in Maven, because that is what downstream projects will use in their respective builds (I assume).

Would it be possible to pull a Maven dependency with Polaris service classes but without any other jars added by Quarkus during its build (downstream builds will have different sets of dependencies in the server).

@adutra
Copy link
Contributor

adutra commented Feb 22, 2025

my concern is about what will be published in Maven

That's indeed the question. I bet it will be the FAST jar, but we need to check. I also think that the distributions would be attached as build artifacts, but with different classifiers (this also needs checking).

@snazy
Copy link
Member

snazy commented Feb 24, 2025

my concern is about what will be published in Maven

That's indeed the question. I bet it will be the FAST jar, but we need to check. I also think that the distributions would be attached as build artifacts, but with different classifiers (this also needs checking).

Maven artifacts published to Maven Central MUST have a pom, a jar, a sources jar and a javadoc jar. Other artifacts (e.g. a zip or a tgz) can be published as well - that works fine.

@dimas-b
Copy link
Contributor

dimas-b commented Feb 24, 2025

Publishing the "fast" jar LGTM 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants