Hi Yufei,

Thanks for opening this discussion, I agree that we could improve the
naming.

I have a slight preference for Option 1, first because it's more
extensible: realms could maybe require more properties one day, e.g. a
state (initializing/active/inactive/deleted). But also because using
strings as CDI beans requires us to annotate them, so Option 2 boils down
to something like `@Inject @Realm String realm` each time we need to inject
the realm. All in all, I think that's more verbose than just `@Inject Realm
realm`.

Thanks,

Alex

On Sat, Jan 25, 2025 at 2:51 AM Yufei Gu <flyrain...@gmail.com> wrote:

> Hi Folks
>
> I wanted to share my thoughts on the ongoing discussion in PR #741
> <https://github.com/apache/polaris/pull/741>. about whether to use Realm
> or
> RealmId.
>
> The more I consider it, the more it seems that the name Realm is the more
> natural choice. It is more an atomic concept, much like the concept of a
> region in AWS.
>
> If we take a closer look at the current usage across Polaris—in
> documentation, error messages, and configurations—realm and realmId are
> already used interchangeably. In fact, in most cases, we simply use realm
> rather than realmId.
>
> Here are a few examples in the Polaris repo:
>
> Error Messages:
>
>
>    - realm: <realm> root principal credentials:
>    <client-id>:<client-secret>
>
> Configurations:
>
>    - Polaris.realm-context.realms
>    - jdbc:h2:file:./build/test_data/polaris/{realm}/db
>
> Documentation:
> <https://polaris.apache.org/in-dev/unreleased/metastores/>
>
>    <https://polaris.apache.org/in-dev/unreleased/metastores/>
>    - <https://polaris.apache.org/in-dev/unreleased/metastores/>Metastores
>    <https://polaris.apache.org/in-dev/unreleased/metastores/>
>    - Configuring Polaris for Production
>    <
> https://polaris.apache.org/in-dev/unreleased/configuring-polaris-for-production/
> >
>    - Admin Tool <https://polaris.apache.org/in-dev/unreleased/admin-tool/>
>
> Proposal
>
> Based on this consistency and the conceptual clarity it brings, I proposed
> two options:
>
> Option 1, using the name realm instead of realmId throughout Polaris and
> still keeping the interface (public interface Realm) for dependency
> injection purposes. The interface can be extensible in case we want to add
> any subconcept to the realm, which may never happen to be honest.
>
> Option 2, purely using a string for realm instead of an interface, this is
> simpler ultimately, but not extensible and needs more effort to refactor
> the current code.
>
>
> Looking forward to hearing your thoughts on this.
>
>
> Yufei
>

Reply via email to