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

Implement a sticky session interface for multiple client interfaces #1986

Merged
merged 4 commits into from
Aug 2, 2023

Conversation

carterkozak
Copy link
Contributor

==COMMIT_MSG==
Implement a sticky session interface for multiple client interfaces
==COMMIT_MSG==

@changelog-app
Copy link

changelog-app bot commented Aug 1, 2023

Generate changelog in changelog/@unreleased

What do the change types mean?
  • feature: A new feature of the service.
  • improvement: An incremental improvement in the functionality or operation of the service.
  • fix: Remedies the incorrect behaviour of a component of the service in a backwards-compatible way.
  • break: Has the potential to break consumers of this service's API, inclusive of both Palantir services
    and external consumers of the service's API (e.g. customer-written software or integrations).
  • deprecation: Advertises the intention to remove service functionality without any change to the
    operation of the service itself.
  • manualTask: Requires the possibility of manual intervention (running a script, eyeballing configuration,
    performing database surgery, ...) at the time of upgrade for it to succeed.
  • migration: A fully automatic upgrade migration task with no engineer input required.

Note: only one type should be chosen.

How are new versions calculated?
  • ❗The break and manual task changelog types will result in a major release!
  • 🐛 The fix changelog type will result in a minor release in most cases, and a patch release version for patch branches. This behaviour is configurable in autorelease.
  • ✨ All others will result in a minor version release.

Type

  • Feature
  • Improvement
  • Fix
  • Break
  • Deprecation
  • Manual task
  • Migration

Description

Implement a sticky session interface for multiple client interfaces

Check the box to generate changelog(s)

  • Generate changelog entry

@carterkozak carterkozak changed the title Ckozak/sticky session Implement a sticky session interface for multiple client interfaces Aug 1, 2023
* Represents a single session of {@link StickyChannelFactory2} where the underlying channel will not change.
* This is useful when multiple client interfaces must be bound to use the same host.
*/
public interface StickyChannelSession {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Naming: should this interface have a 2 somewhere? Unlike the sticky channels factory, it is meant to be stored for reuse, so there's upside to having a cleaner name. I don't have a strong opinion either way.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think at this point it might be time to remove the previous sticky channel implementation, that was the plan all along. 2+ seems enough to prove out it's correctness? :P

Comment on lines +148 to +150
Channel getStickyChannel();

<T> T sticky(Class<T> clientInterface);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I considered naming these getChannel and create(Class<T> clientInterface) since the interface name implies sticky, but figured matching the sticky factory would be a bit more obvious for readers

Copy link
Contributor

@jkozlowski jkozlowski left a comment

Choose a reason for hiding this comment

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

I forgot how this code works, I thought it would be harder to knock out. THanks!

@bulldozer-bot bulldozer-bot bot merged commit 68a83e4 into develop Aug 2, 2023
1 check passed
@bulldozer-bot bulldozer-bot bot deleted the ckozak/sticky_session branch August 2, 2023 08:40
@svc-autorelease
Copy link
Collaborator

Released 3.89.0

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

Successfully merging this pull request may close these issues.

4 participants