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

Hazelcast implementation of ReactiveSessionRepository #831

Open
vpavic opened this issue Jul 12, 2017 · 6 comments
Open

Hazelcast implementation of ReactiveSessionRepository #831

vpavic opened this issue Jul 12, 2017 · 6 comments

Comments

@vpavic
Copy link
Contributor

vpavic commented Jul 12, 2017

We should provide a Hazelcast based implementation of ReactiveSessionRepository.

@vpavic vpavic added type: enhancement A general enhancement in: hazelcast labels Jul 12, 2017
@vpavic vpavic added this to the 2.0.0.M3 milestone Jul 12, 2017
@rwinch rwinch modified the milestones: 2.0.0.M3, 2.0.0.M4 Jul 21, 2017
@vpavic vpavic self-assigned this Jul 26, 2017
@vpavic
Copy link
Contributor Author

vpavic commented Aug 3, 2017

While Hazelcast currently has reactive support, it is based on its own ICompletableFuture which extends from Future and not CompletableFuture since Hazelcast 3.x maintains compatibility with Java 6.

The plan is to replace ICompletableFuture with CompletableFuture in Hazelcast 4.0 when Java 8 becomes baseline - see hazelcast/hazelcast#3622.

Perhaps we should hold off our efforts of providing Hazelcast backed ReactorSessionRepository until Hazelcast 4.0 becomes available (ATM there's no target date for the milestone). WDYT @rwinch?

@vpavic vpavic removed this from the 2.0.0.M4 milestone Aug 8, 2017
@hantsy
Copy link

hantsy commented Nov 12, 2017

The hazelcast itself have Spring integration in the hazelcast core, I am not sure if it works when implementing a custom MapReactiveSessionRepository with a hazelcast managed Map as the constructor arguments ?

@vpavic vpavic changed the title Hazelcast implementation of ReactorSessionRepository Hazelcast implementation of ReactiveSessionRepository Feb 15, 2018
@vpavic vpavic removed their assignment May 2, 2018
@vpavic vpavic added this to the General Backlog milestone Nov 9, 2018
@d3bbrower
Copy link

d3bbrower commented Mar 27, 2020

Looks like the dependent change didn't make it into the hazelcast 4 release

@AndreasKasparek
Copy link
Contributor

Hi @vpavic @eleftherias,
I have implemented a ReactiveSessionRepository based on Hazelcast (following the general approach of the existing non-reactive Hazelcast4 session repo and reusing the existing entry processor) and was wondering if I should integrate this with Spring? I am a bit short on time at the moment and not sure if I can provide a full pull request. But I could at least publish my branch and let others fork from it and complete it, if you think that is worth it.

Hazelcast 4.2.4 returns CompletionStage from its async IMap methods, so the integration with the reactor chain is not that complicated. My solution does not support FlushMode because I don't see a good way how to properly implement immediate flushing via async saves in blocking methods like session.setAttribute(). And the FindByIndexNameSessionRepository interface is also not reactive and thus I omitted it.

Thanks for your feedback.

@eleftherias
Copy link
Contributor

Thanks @AndreasKasparek.

We're still planning to wait on hazelcast/hazelcast#3622 before we add this feature to Spring Session.
We want to make sure we can provide users with the full functionality of Spring Session and Hazelcast, rather than adding a partial solution.

For anyone that is waiting on this feature please continue to show your interest by upvoting this issue, as well as hazelcast/hazelcast#3622 which is currently scheduled for Hazelcast 6.

@rwinch rwinch removed this from the General Backlog milestone Nov 15, 2022
@DidierLoiseau
Copy link

@eleftherias Just to be clear, what are the features that cannot be implemented with IMap’s async methods and would require hazelcast/hazelcast#3622 ?

That ticket is 8 years old, it has been postponed to Hazelcast 6 now and does not look like it is going to be implemented any time soon… Moreover it is about changes to IExecutorService, what is needed from it? When I look at the Redis implementation it does not seem to require a similar service.

(I’m not familiar with the topic, I’m just trying to understand the issue)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants