-
Notifications
You must be signed in to change notification settings - Fork 947
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
Add support for CLIENT TRACKINGINFO #2862
base: main
Are you sure you want to change the base?
Conversation
src/main/java/io/lettuce/core/cluster/models/tracking/TrackingInfoParser.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should return Map<String, String> to make the response usable even without a parser.
src/main/java/io/lettuce/core/cluster/models/tracking/TrackingInfoParser.java
Outdated
Show resolved
Hide resolved
src/main/java/io/lettuce/core/cluster/models/tracking/TrackingInfoParser.java
Outdated
Show resolved
Hide resolved
This is what I initially went with, but the existing The only place we had a similar parsing done is with the @mp911de do we have a way to handle this or should I create a new CommandOutput? |
Have you tried |
Sooo folks I'd love to hear from you what you think about the latest solution. I already had a discussion with @uglide on that, but would love to hear any comments. Obviously it has some downsides, but I personally find it a good compromise between what we have as a solution right now and having an actual mapping to a domain object. The latter would also incur some more heavy duty maintenance on our part. |
The new output is pretty complex and its result seems pretty complex to understand as well. A |
I agree. It is a tradeoff. The proposed solution is supposed to be used (mainly) in conjunction with the parser logic. Further down the line the parser could be extended to generate stubs based on some schema definition. For a strongly typed language such as Java this is the only working way to consume an API of a service, that has complex types and could be changed down the line. Jedis has a model object for complex return types, but this makes the design tightly coupled with the current API. Any change to the API would break the existing model. I was aiming for a middle ground where we have a utility to help the user consume the logic in a simple way (see the integration test), but also allow them to parse the information themselves if the model changes. A good example for this is if another value is added to the Map. The consumers of the driver could start polling the new value without having to wait until we release a new version of the parser. So we gat a bit of more stability for the price of having to deal with this interim object that is a bit complex to use. |
@uglide what is your take on this solution? |
Closes #2761
Make sure that: