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

Support for Quarkus 3.15 LTS #4163

Closed
2 tasks done
toco-cam opened this issue Mar 13, 2024 · 12 comments
Closed
2 tasks done

Support for Quarkus 3.15 LTS #4163

toco-cam opened this issue Mar 13, 2024 · 12 comments
Assignees
Labels
type:feature Issues that add a new user feature to the project. version:7.22.0

Comments

@toco-cam
Copy link
Member

toco-cam commented Mar 13, 2024

Acceptance Criteria (Required on creation)

Update Quarkus to 3.x LTS release.

Hints

Links

Breakdown

Tasks

Preview Give feedback
  1. 3 of 3
    type:subtask version:7.22.0 version:7.22.0-alpha6
    joaquinfelici
  2. 6 of 6
    type:subtask version:7.22.0
    joaquinfelici

Dev2QA handover

  • Does this ticket need a QA test and the testing goals are not clear from the description? Add a Dev2QA handover comment
@toco-cam toco-cam added the type:task Issues that are a change to the project that is neither a feature nor a bug fix. label Mar 13, 2024
@toco-cam toco-cam changed the title Update Quarkus to newest 3.x.LTS release Support Quarkus to newest 3.x.LTS release Mar 13, 2024
@tasso94 tasso94 changed the title Support Quarkus to newest 3.x.LTS release Support Quarkus to newest 3.x LTS release Mar 15, 2024
@tasso94 tasso94 changed the title Support Quarkus to newest 3.x LTS release Support Quarkus to newest 3.15 LTS release Jul 17, 2024
@tasso94
Copy link
Member

tasso94 commented Jul 17, 2024

Won't happen with 7.22.0 since Quarkus 3.15 is released after our code freeze.
@toco-cam, please update the customer about it.

tasso94 added a commit that referenced this issue Aug 22, 2024
@joaquinfelici joaquinfelici self-assigned this Aug 26, 2024
joaquinfelici added a commit that referenced this issue Aug 26, 2024
joaquinfelici added a commit that referenced this issue Aug 26, 2024
joaquinfelici added a commit that referenced this issue Aug 26, 2024
joaquinfelici added a commit that referenced this issue Aug 27, 2024
joaquinfelici added a commit that referenced this issue Aug 27, 2024
joaquinfelici added a commit that referenced this issue Aug 27, 2024
joaquinfelici added a commit that referenced this issue Aug 27, 2024
@tasso94 tasso94 changed the title Support Quarkus to newest 3.15 LTS release Support for Quarkus 3.15 LTS Aug 28, 2024
joaquinfelici added a commit that referenced this issue Aug 28, 2024
joaquinfelici added a commit that referenced this issue Aug 28, 2024
joaquinfelici added a commit that referenced this issue Aug 28, 2024
joaquinfelici added a commit that referenced this issue Aug 28, 2024
@joaquinfelici
Copy link
Contributor

Notes about upgrading

Upgrading to quarkus 3.14 or 3.15 requires some modifications in the way we implement configuration classes. This is because we're using the legacy behavior of using the @ConfigRoot annotation without a related @ConfigMapping annotation.

This leaves us with a few options:

  1. Add a flag to allow for legacy behavior: By adding flag -AlegacyConfigRoot=true, we can keep the current behavior and upgrade with no issues. However, we don't know until when this flag and behavior will be supported, so migration might be enforced sooner or later.

  2. Migrating to the new behavior: Best option to ensure future compatibility and smother version upgrades in the future. However, there's a behavior change in the way that quarkus now handles unnamed property maps, such as genericConfig. Because of this difference, we're left with two options:

    1. Change this map to a named property. This behavior is the recommended one in the quarkus documentation. This would mean having to replace all existing properties to include the new name of the property. For example, changing quarkus.camunda.cmmn-enabled=false to quarkus.camunda.generic-config.cmmn-enabled=false (see more examples in the documentation).
    2. Keeping this map as an unnamed property, which produces a difference in behavior as well, because all matching properties will be included in this map, including the specific ones defined in the class. This means that for example, the known property quarkus.camunda.datasource will be both set in the datasource property and in the genericConfig property, producing some unexpected behavior. A potential solution to this is a workaround to manually remove known properties.

@psavidis psavidis assigned psavidis and unassigned joaquinfelici Sep 2, 2024
@psavidis
Copy link
Contributor

psavidis commented Sep 2, 2024

Assigning the ticket to @psavidis to continue the progress.

@tasso94
Copy link
Member

tasso94 commented Sep 3, 2024

Decision

  1. Use the -AlegacyConfigRoot=true flag
  • Pros:
    • Easy to implement.
    • No migration effort for users. And for us since we don't need to add something to the migration guide.
  • Cons:
    • Unpredictability of support. I.e., Quarkus maintainers might remove this flag in future releases and we will be in the same situation again.
    • Assumption: the user has to pass this flag.
  1. Migrate to the new config structure. I.e., generic configuration is prefixed with generic-config.
  • Pros:
    • Our extension is future-proof. Once Quarkus maintainers remove the legacy flag, there will be no need to fiddle around with it again.
    • Straight forward: no custom implementation that might break in the future, and we have to maintain.
    • We do it similarly with Spring Boot; this is most likely how frameworks will handle it in the future.
  • Cons:
    • Breaking change => users have to migrate configs; We have to provide a migration guide explanation.
    • A little bit more complex to implement compared to # 1.
  1. Filter out generic configuration properties to maintain the previous configuration structure.
  • Pros:
    • No migration effort for users and no migration guide contribution for us.
    • Low documentation complexity.
  • Cons:
    • Unpredictability: Quarkus maintainers might introduce code changes that break our logic again.
      • Would be a big problem when introduced by a Quarkus patch.
      • Might be an acceptable risk when introduced by a Quarkus minor release.
    • Highest complexity to implement; we might need to test more thoroughly to ensure it works as expected.
  1. To be investigated: is there any way to skip the "generic-config" in Quarkus 3.14 again?

Conclusion

  • Option 3 has too much complexity and risk/uncertainty.
  • Option 1 we just postpone the problem to a future point in time.
  • Option 2 is preferred since we see the smallest risk, and maintenance effort, and we don't postpone having to fix this in the future again.

Let's do option 2.

@psavidis
Copy link
Contributor

psavidis commented Sep 4, 2024

Investigation Update

Decision | Point 4

quarkus.camunda.enforce-history-time-to-live=false

becomes

quarkus.camunda."enforce-history-time-to-live"=false

which does not prevent the migration

psavidis added a commit to camunda/camunda-docs-manual that referenced this issue Sep 4, 2024
- generic-config suffix is added to process-engine, job-executor properties

Related-to: camunda/camunda-bpm-platform#4163
psavidis pushed a commit that referenced this issue Sep 4, 2024
@psavidis
Copy link
Contributor

psavidis commented Sep 4, 2024

Assigning to @mboskamp for doing the Review.

@psavidis psavidis assigned mboskamp and unassigned psavidis Sep 4, 2024
@tasso94 tasso94 added type:feature Issues that add a new user feature to the project. and removed type:task Issues that are a change to the project that is neither a feature nor a bug fix. labels Sep 4, 2024
@tasso94
Copy link
Member

tasso94 commented Sep 4, 2024

Hey @psavidis, can you create another follow-up task to bump Quarkus to 3.15?

@psavidis psavidis added type:task Issues that are a change to the project that is neither a feature nor a bug fix. type:feature Issues that add a new user feature to the project. and removed type:feature Issues that add a new user feature to the project. type:task Issues that are a change to the project that is neither a feature nor a bug fix. labels Sep 5, 2024
@psavidis psavidis assigned psavidis and unassigned mboskamp Sep 5, 2024
@psavidis
Copy link
Contributor

psavidis commented Sep 5, 2024

Hey @psavidis, can you create another follow-up task to bump Quarkus to 3.15?

Split the ticket into separate tasks for upgrading to 3.14 and 3.15 versions respectivelly.

@psavidis psavidis assigned mboskamp and unassigned psavidis Sep 6, 2024
@mboskamp
Copy link
Member

mboskamp commented Sep 9, 2024

@psavidis, what is my current TODO with this ticket? You assigned #4579 to me for review, but since nothing in this ticket needs reviewing, I would suggest we keep your assignment since you are the DRI. WDYT?

@mboskamp mboskamp assigned psavidis and unassigned mboskamp Sep 9, 2024
psavidis pushed a commit that referenced this issue Sep 9, 2024
psavidis added a commit to camunda/camunda-docs-manual that referenced this issue Sep 12, 2024
@psavidis psavidis mentioned this issue Sep 6, 2024
3 tasks
@psavidis
Copy link
Contributor

psavidis commented Sep 12, 2024

Update to Quarkus 3.14 is completed ✔️

Next step: Try the upgrade to Quarkus 3.15 after the code-freeze as a low-risk item and update this thread with the results of the task (positive or negative)

@psavidis psavidis assigned joaquinfelici and unassigned psavidis Sep 16, 2024
@psavidis
Copy link
Contributor

Assigning to @joaquinfelici to continue the upgrade to 3.15 task in due time.

@joaquinfelici
Copy link
Contributor

joaquinfelici commented Sep 24, 2024

Upgrade to Quarkus 3.15.0 is done and merged on PR #4612.

Pending:

  • Merge docs.
  • Test during minor release.

hauptmedia added a commit to hauptmedia/operaton that referenced this issue Nov 6, 2024
Related-to: camunda/camunda-bpm-platform#4163

Backported commit 816b58f from the camunda-bpm-platform repository.
Original author: Joaquín <[email protected]>"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:feature Issues that add a new user feature to the project. version:7.22.0
Projects
None yet
Development

No branches or pull requests

5 participants