keycloak / keycloak

Open Source Identity and Access Management For Modern Applications and Services
https://www.keycloak.org
Apache License 2.0
22.98k stars 6.71k forks source link

Signature change for method KeycloakModelUtils.runJobInTransactionWithResult #33733

Open pruivo opened 1 week ago

pruivo commented 1 week ago

Before reporting an issue

Area

core

Describe the bug

The Keycloak Benchmark failed to compile (see [1]) due to a change in the method signature KeycloakModelUtils.runJobInTransactionWithResult due to the change in commit [2].

Although this API lives in server-spi-private and the lines are blurred, I suggest adding a new method with the old signature and marking it deprecated and for removal.

[1] https://github.com/keycloak/keycloak-benchmark/actions/runs/11248541133/job/31274639477#step:12:1493

[2] https://github.com/keycloak/keycloak/commit/07cf71e818e7feca1a36164c216a225f198d50f0#diff-8c2760488fe1f23b33122b763c930a8efd4e8d5ee4e41261e6de6b48d9157bd2R379

Version

nightly

Regression

Expected behavior

Users may use this API in their custom provider and, when upgrading to the latest patch release, they should not get a compile error.

Actual behavior

User custom provider using this API will get a compile error.

How to Reproduce?

hmm... create a custom provider that uses the API from KC 26 and try to compile with the KC nightly :)

Anything else?

No response

pruivo commented 1 week ago

cc @mposolda @keycloak/core To bring awareness that this change may surprise some users.

shawkins commented 1 week ago

Relates to #33397 and caused by #32914 - where this was discussed briefly on the PR. It's definitely not good moving forward to have blurred lines around the role of public / private dependencies. Can we capture somewhere what the eventual goal is for the private module - should it not be transitively available from anything public, and in particular should a public contract for using KeycloakModelUtils be created?