-
Notifications
You must be signed in to change notification settings - Fork 933
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
Set Eureka InstanceInfo to endpoint attribute #6069
base: main
Are you sure you want to change the base?
Set Eureka InstanceInfo to endpoint attribute #6069
Conversation
eureka/src/main/java/com/linecorp/armeria/client/eureka/EurekaEndpointGroup.java
Outdated
Show resolved
Hide resolved
d205a96
to
258fd3f
Compare
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.
Would you add a test that retrieve an InstanceInfo
from EurekaEndpointGroup
?
I think we can use EurekaEndpointGroupTest
class.
eureka/src/main/java/com/linecorp/armeria/common/eureka/InstanceInfo.java
Outdated
Show resolved
Hide resolved
eureka/src/main/java/com/linecorp/armeria/common/eureka/InstanceInfo.java
Outdated
Show resolved
Hide resolved
3dc8d19
to
9a88c9d
Compare
I’ve made the requested changes. Please have a look when you get a chance! Thanks @minwoox |
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.
Looks good to me, @Ivan-Montes
Thanks! 😄
Related: line#6056 Motivation: Users might want to use the metadata from the Eureka `InstanceInfo` but currently, there's no way to retrieve it. Modifications: - Add a helper class to hide the implementation detail. - Set the `InstanceInfo` to the `Endpoint` as an attribute. Result: - Closes line#6056 - Now users can retrieve it.
Related: line#6056 Motivation: Users might want to use the metadata from the Eureka `InstanceInfo` but currently, there's no way to retrieve it. Modifications: - Remove helper class because users cannot access this class to retrieve `InstanceInfo`. - Move `com.linecorp.armeria.internal.common.eureka.InstanceInfo` to `com.linecorp.armeria.common.eureka.InstanceInfo`. - Move the methods to the `InstanceInfo` class. - Add a test to verify that users can retrieve the `InstanceInfo`. Result: - Closes line#6056 - Now users can retrieve it.
Motivation: Since it is ensured that the public API does not expose the shaded classes, after moving `com.linecorp.armeria.internal.common.eureka.InstanceInfo` to `com.linecorp.armeria.common.eureka.InstanceInfo`, the same exception occurs with the following jobs: - build-ubicloud-standard-16-jdk-* - build-macos-latest-jdk-21 - build-windows-latest-jdk-21 ``` Execution failed for task ':javadoc:checkJavadoc'. > java.lang.Exception: Disallowed class(es) in the public API: - InstanceInfo -> com.linecorp.armeria.internal.common.eureka.DataCenterInfo - InstanceInfo -> com.linecorp.armeria.internal.common.eureka.LeaseInfo ``` Modifications: - Move `com.linecorp.armeria.internal.common.eureka.DataCenterInfo` to `com.linecorp.armeria.common.eureka.DataCenterInfo`. - Move `com.linecorp.armeria.internal.common.eureka.LeaseInfo` to `com.linecorp.armeria.common.eureka.LeaseInfo`. - Make public `com.linecorp.armeria.internal.common.eureka.DataCenterInfoSerializer` Result: DataCenterInfo and LeaseInfo classes are now allowed
1575885
to
ee0f298
Compare
* @return The {@link InstanceInfo} associated with the specified {@link Endpoint}. | ||
*/ | ||
@Nullable | ||
public static InstanceInfo instanceInfo(Endpoint endpoint) { |
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.
public static InstanceInfo instanceInfo(Endpoint endpoint) { | |
public static InstanceInfo from(Endpoint endpoint) { |
* @param endpoint The {@link Endpoint} to which the {@link InstanceInfo} will be set as an attribute. | ||
* @return The same {@link Endpoint} passed as a parameter. | ||
*/ | ||
public static Endpoint setInstanceInfo(Endpoint endpoint, InstanceInfo instanceInfo) { |
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.
Should we move this method to internal API? Generally, I don't think, users need this API. This setter may be only used in EurekaEndpointGroup
.
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.
The original issue was to retrieve metadata from an Endpoint
. Also, I think there's no reason to hide this API from public. If you don't want to put this API on InstanceInfo
, we might consider adding InstanceInfoUtil
.
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.
Understood. Let’s proceed that way.
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.
Thanks, @Ivan-Montes! 👍👍
Related: #6056
Motivation:
Users might want to use the metadata from the Eureka
InstanceInfo
but currently, there's no way to retrieve it.Modifications:
InstanceInfo
to theEndpoint
as an attribute.Result: