diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/clients/pipeline/MeteredPipelineServiceClient.java b/openmetadata-service/src/main/java/org/openmetadata/service/clients/pipeline/MeteredPipelineServiceClient.java index f3c2080f9d7..9b0bf2b999f 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/clients/pipeline/MeteredPipelineServiceClient.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/clients/pipeline/MeteredPipelineServiceClient.java @@ -151,8 +151,8 @@ public class MeteredPipelineServiceClient implements PipelineServiceClientInterf } @Override - public Boolean validServerClientVersions(String clientVersion) { - return decoratedClient.validServerClientVersions(clientVersion); + public Boolean validServerClientVersions(String clientVersion, String serverVersion) { + return decoratedClient.validServerClientVersions(clientVersion, serverVersion); } @Override diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/clients/pipeline/airflow/AirflowRESTClient.java b/openmetadata-service/src/main/java/org/openmetadata/service/clients/pipeline/airflow/AirflowRESTClient.java index 10e260e830f..ae005128468 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/clients/pipeline/airflow/AirflowRESTClient.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/clients/pipeline/airflow/AirflowRESTClient.java @@ -460,7 +460,7 @@ public class AirflowRESTClient extends PipelineServiceClient { if (response.statusCode() == 200) { JSONObject responseJSON = new JSONObject(response.body()); String ingestionVersion = responseJSON.getString("version"); - return Boolean.TRUE.equals(validServerClientVersions(ingestionVersion)) + return validServerClientVersions(ingestionVersion, SERVER_VERSION) ? buildHealthyStatus(ingestionVersion) : buildUnhealthyStatus( buildVersionMismatchErrorMessage(ingestionVersion, SERVER_VERSION)); diff --git a/openmetadata-spec/src/main/java/org/openmetadata/sdk/PipelineServiceClientInterface.java b/openmetadata-spec/src/main/java/org/openmetadata/sdk/PipelineServiceClientInterface.java index cf6f95d071d..f5647528614 100644 --- a/openmetadata-spec/src/main/java/org/openmetadata/sdk/PipelineServiceClientInterface.java +++ b/openmetadata-spec/src/main/java/org/openmetadata/sdk/PipelineServiceClientInterface.java @@ -71,7 +71,7 @@ public interface PipelineServiceClientInterface { String getBasicAuthenticationHeader(String username, String password); - Boolean validServerClientVersions(String clientVersion); + Boolean validServerClientVersions(String clientVersion, String serverVersion); Response getHostIp(); diff --git a/openmetadata-spec/src/main/java/org/openmetadata/service/clients/pipeline/PipelineServiceClient.java b/openmetadata-spec/src/main/java/org/openmetadata/service/clients/pipeline/PipelineServiceClient.java index d07fee02250..694e8b58425 100644 --- a/openmetadata-spec/src/main/java/org/openmetadata/service/clients/pipeline/PipelineServiceClient.java +++ b/openmetadata-spec/src/main/java/org/openmetadata/service/clients/pipeline/PipelineServiceClient.java @@ -126,9 +126,20 @@ public abstract class PipelineServiceClient implements PipelineServiceClientInte } } + private String getMajorMinorVersion(String fullVersion) { + String[] versionParts = fullVersion.split("\\."); + if (versionParts.length >= 2) { + return versionParts[0] + "." + versionParts[1]; + } + return fullVersion; + } + @Override - public final Boolean validServerClientVersions(String clientVersion) { - return getVersionFromString(clientVersion).equals(getVersionFromString(SERVER_VERSION)); + public final Boolean validServerClientVersions(String clientVersion, String serverVersion) { + String clientFullVersion = getVersionFromString(clientVersion); + String serverFullVersion = getVersionFromString(serverVersion); + + return getMajorMinorVersion(clientFullVersion).equals(getMajorMinorVersion(serverFullVersion)); } public String buildVersionMismatchErrorMessage(String ingestionVersion, String serverVersion) {