helidon icon indicating copy to clipboard operation
helidon copied to clipboard

4.x Eclipse store integration

Open hrstoyanov opened this issue 1 year ago • 4 comments

Description

Add Eclipse Store support to Helidon.

Eclipse Store is the successor of Microstream, both of which will be avialble in Helidon 4.x (once this request is merged) enabling smooth transition.

This request targets Eclipse Store 1.1.0

Documentation

The official Eclipse Store documentation can be found here.

If no doc impact: None

hrstoyanov avatar Jan 19 '24 09:01 hrstoyanov

@fh-ms @zdenek-jonas - this is the DRFAT merge request. ^^^^

Question for the Helidon team: If Eclipse Store 1.1.0 is released in about 2 weeks, in which version of Helidon 4.x will you be able to merge this extension in?

hrstoyanov avatar Jan 19 '24 09:01 hrstoyanov

EclipseStore 1.1.0 is available.

@hg-ms and I did a code review. Looks good for us.

fh-ms avatar Jan 26 '24 09:01 fh-ms

Thank you @fh-ms and @hg-ms for reviewing the code! The only additional commit I did was to change the versions to 1.1.0 from 1.1.0-SNAPSHOT, as per the Eclipse Store/Serializer official releases.

@tjquinno @ljnelson @barchetta This pull request is now ready for your consideration - I removed [DRAFT] from the title and changed the description a bit.

Any clue in which Helidon version it could be included, assuming we missed the 4.0.4 train?

hrstoyanov avatar Jan 26 '24 20:01 hrstoyanov

@fh-ms Please review the latest commit:

  • deprecate MicroStream, invite users to switch to Eclipse Store.
  • better module definitions.
  • compiler warnings addressed.

hrstoyanov avatar Feb 03 '24 21:02 hrstoyanov

@fh-ms @zdenek-jonas. Please review the latest Eclipse Store 1.2.0 upgrade to this pull request.

A couple of things:

  • I added @Aot to the metadata in the module definitions (same as @Aot(true)) to signify that in a GraalVM compile of an Helidon app, it is safe to include Exclipe Store 1.2.0. If EclipseStore 1.2.0 is not aot-compile safe, we need to set it back to @Aot(false) in the ES integrations module definitions.

  • I wonder what is the value of Eclipse Store Cache integration - javax.cache API has not even been moved to jakarta namespace, neither has anyone bothered to modularize it, doubt anyone uses it. It causes compiler warning due to automatic modules, etc.

hrstoyanov avatar Feb 23 '24 21:02 hrstoyanov

@fh-ms @zdenek-jonas. Please review the latest Eclipse Store 1.2.0 upgrade to this pull request.

I did a review of the EclipseStore specific parts, everything is ok from our side.

Regarding Aot support: it should work but requires additional user actions because all user defined classes that are going to be persisted must be accessible by reflections. I’d suggest to add a description to @Aot documenting this.

As we don’t have a replacement for the javax.cache API we need to live with that.

hg-ms avatar Feb 29 '24 06:02 hg-ms

@danielkec Looks like the CI/CD checks could not run for quite some time now?

hrstoyanov avatar Mar 06 '24 20:03 hrstoyanov

@danielkec I did my best, please review. I still do not understand when the checks kick in ...

hrstoyanov avatar Mar 08 '24 07:03 hrstoyanov

@danielkec I still do not understand why I get 3 checkstyle import statement violations, please help.

hrstoyanov avatar Mar 11 '24 04:03 hrstoyanov

Did you run etc/scripts/checkstyle.sh and etc/scripts/copyright.sh ?

romain-grecourt avatar Mar 11 '24 18:03 romain-grecourt

@romain-grecourt I can reproduce the checkstyle errors locally, i just do not understand why they are there, the import statments look perfectly ordered to me: https://github.com/helidon-io/helidon/actions/runs/8227709854/job/22507176972?pr=8269

The rest of the filures are not because of this pull request, but after I sync with the main branch.

hrstoyanov avatar Mar 11 '24 19:03 hrstoyanov

static imports should be at the end.

romain-grecourt avatar Mar 11 '24 19:03 romain-grecourt

Thanks @romain-grecourt checked and pushed imports re-ordering change - checkstyle should work now.

Do you want me to squash commits?

hrstoyanov avatar Mar 11 '24 20:03 hrstoyanov

Do you want me to squash commits?

Sure. You can squash and rebase against the latest main. That might clear up the copyright errors you have with the .helidon-oidc-secret files.

romain-grecourt avatar Mar 11 '24 21:03 romain-grecourt

@romain-grecourt Commits squashed, pull request caught up to main branch

next steps?

hrstoyanov avatar Mar 12 '24 00:03 hrstoyanov

You have 214 files changed, it does not look right. Let me fix it.

romain-grecourt avatar Mar 12 '24 00:03 romain-grecourt

Thanks @romain-grecourt , might have messed something .. pls help

hrstoyanov avatar Mar 12 '24 00:03 hrstoyanov

@romain-grecourt plese review the new commits/ run the pipeline.

hrstoyanov avatar Mar 16 '24 21:03 hrstoyanov

@romain-grecourt assuming we square away all little things today, what is a realistic date where this merge can be relased as part of an official Helidon - 4.0.7? 4.1.0? This pull request is 3 months old already.

hrstoyanov avatar Mar 19 '24 18:03 hrstoyanov

Thanks for this contribution. We are now making some decisions regarding the timing. I want to spend some time on this to use our new Builder APIs and do a bit of Helidon alignment, will let you know asap

tomas-langer avatar Mar 20 '24 16:03 tomas-langer

@tomas-langer thanks! Depending on my time availability (mostly my free time), I would also be making some final code review for this contribution (particularly whether I implemented correctly all ES 1.2.0 config options), so no rush ...

hrstoyanov avatar Mar 20 '24 16:03 hrstoyanov

@fh-ms @zdenek-jonas - I noticed that EclipseStore 1.3.1 came out yesterday. And siince this pull request is still not approved yet, maybe it is better to upgrade it to EclipseStore 1.3.1 anyway?

I also noticed that EclipseStore 1.3.1 provides CDI4 integration now "out-of-the-box". This potentially means that Helidon MicroProfile (MP) will no longer need the CDI and Cache modules, and they can be removed - do you agree? My only gripe with the new ES 1.3.1 CDI and Cache code is that it is missing module-info.java - any chance that can be fixed quickly?

@romain-grecourt @tomas-langer - please refrain from merging this pull request just yet, until we hear from the Microstream team - at the very least we need to upgrade from 1.2.0 to 1.3.1

hrstoyanov avatar Mar 20 '24 22:03 hrstoyanov

An update to 1.3.1 makes sense due to an adjustment for Java 22.

We still have to test the CDI stuff with Helidon properly, and maybe we find a way to add the module-infos there, so we should wait until we remove the modules.

fh-ms avatar Mar 21 '24 08:03 fh-ms

Regarding CDI integration - I think the Helidon MP integration is not "just" CDI, but it should also support MP Config as a source of configuration data. If that is the case, it may still be useful. If not, then I agree it can be removed and we can use the built-in CDI integration.

tomas-langer avatar Mar 21 '24 15:03 tomas-langer