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

Document Kubernetes Kit backend session expiration policy #4144

Open
wants to merge 11 commits into
base: latest
Choose a base branch
from
Next Next commit
Document Kubernetes Kit backend session expiration policy
  • Loading branch information
TatuLund authored Feb 24, 2025
commit 26c9abb69277eb3721fc681b8fdc7044f39f488a
21 changes: 21 additions & 0 deletions articles/tools/kubernetes/configuration.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,24 @@ spring:
host: redis-service
----
--

== Backend Session Expiration Policy

Backend session expiration policy allows to define an expiration timeout for the backend stored session. By default no expiration is set, but can be expiration can be activated setting the property or by providing a custom SessionExpirationPolicy bean. If no unit is provided in the property, seconds are assumed.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By implementing the SessionExpirationPolicy interface, the developer can define the expiration timeout.
However, the property does not define the timeout value, but the amount of time to be added to the HTTP session timeout to determine the expiration of the backend session. If time unit is not given, milliseconds is assumed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to add also a SessionExpirationPolicy implementation example

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for clarification

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this suffice for code example?

    @Bean
    SessionExpirationPolicy sessionExpirationPolicy() {
        return Duration.ofMinutes(60);
    }

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The SessionExpirationPolicy.apply() method takes current HTTP session timeout as argument

@Bean
SessionExpirationPolicy sessionExpirationPolicy() {
    return sessionTimeout -> Duration.ofMinutes(60);
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If time unit is not given, milliseconds is assumed.

This may be the default, but it's not particularly useful. If seconds are more appropriate, perhaps the property should be annotated with @DurationUnit(ChronoUnit.SECONDS) and the original phrasing kept?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sound a good idea


[.example]
--
.application.properties
[source,properties]
----
vaadin.kubernetes.backend-session-expiration-tolerance: duration
----

.application.yaml
[source,yaml]
----
vaadin:
kubernetes:
backend-session-expiration-tolerance: duration
----
--
Loading