You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by of...@apache.org on 2020/12/09 09:46:42 UTC
[incubator-datalab] branch develop updated: [DATALAB-2180] / [DATALAB-2179] -- fixed NPE, and terminated_with_err… (#1006)
This is an automated email from the ASF dual-hosted git repository.
ofuks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
The following commit(s) were added to refs/heads/develop by this push:
new 094d889 [DATALAB-2180] / [DATALAB-2179] -- fixed NPE, and terminated_with_err… (#1006)
094d889 is described below
commit 094d889efa8af8d5d535e5ad8c6f7859da1634fa
Author: Kinash Yurii <ur...@gmail.com>
AuthorDate: Wed Dec 9 11:46:29 2020 +0200
[DATALAB-2180] / [DATALAB-2179] -- fixed NPE, and terminated_with_err… (#1006)
[DATALAB-2180] / [DATALAB-2179] -- fixed NPE, and terminated_with_error
---
.../com/epam/datalab/dto/UserInstanceStatus.java | 2 +-
.../java/com/epam/datalab/model/ResourceType.java | 2 +-
.../handlers/ResourcesStatusCallbackHandler.java | 13 ++++++++++++-
.../resources/base/InfrastructureService.java | 4 +---
.../resources/callback/BackupCallback.java | 2 +-
.../callback/EnvironmentStatusCallback.java | 4 +---
.../CheckInfrastructureStatusScheduler.java | 16 +++++++++-------
.../impl/InfrastructureInfoServiceImpl.java | 22 ++++++++++++----------
8 files changed, 38 insertions(+), 27 deletions(-)
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/UserInstanceStatus.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/UserInstanceStatus.java
index 4682484..a12428d 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/UserInstanceStatus.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/UserInstanceStatus.java
@@ -34,7 +34,7 @@ public enum UserInstanceStatus {
RECONFIGURING("reconfiguring"),
REUPLOADING_KEY("reuploading key");
- private String name;
+ private final String name;
UserInstanceStatus(String name) {
this.name = name;
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/model/ResourceType.java b/services/datalab-model/src/main/java/com/epam/datalab/model/ResourceType.java
index 2997144..9926fe7 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/model/ResourceType.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/model/ResourceType.java
@@ -24,7 +24,7 @@ public enum ResourceType {
EDGE("edge_node"),
EXPLORATORY("exploratory");
- private String name;
+ private final String name;
ResourceType(String name) {
this.name = name;
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ResourcesStatusCallbackHandler.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ResourcesStatusCallbackHandler.java
index 3a93b62..13137a1 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ResourcesStatusCallbackHandler.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ResourcesStatusCallbackHandler.java
@@ -21,6 +21,7 @@
package com.epam.datalab.backendapi.core.response.handlers;
import com.epam.datalab.backendapi.core.commands.DockerAction;
+import com.epam.datalab.dto.UserInstanceStatus;
import com.epam.datalab.dto.status.EnvResource;
import com.epam.datalab.dto.status.EnvResourceList;
import com.epam.datalab.dto.status.EnvStatusDTO;
@@ -60,6 +61,7 @@ public class ResourcesStatusCallbackHandler extends ResourceCallbackHandler<EnvS
@Override
protected EnvStatusDTO parseOutResponse(JsonNode resultNode, EnvStatusDTO baseStatus) {
+ log.trace("Trying to parse: {}, with {}", resultNode, baseStatus);
if (resultNode == null) {
return baseStatus;
}
@@ -85,6 +87,15 @@ public class ResourcesStatusCallbackHandler extends ResourceCallbackHandler<EnvS
return baseStatus;
}
+ private String checkAndMapStatus(String status) {
+ if (status.equalsIgnoreCase ("terminated_with_errors")) {
+ log.trace("While parsing response changed: {} -> {}", status, UserInstanceStatus.TERMINATED);
+ return UserInstanceStatus.TERMINATED.toString();
+ } else {
+ return status;
+ }
+ }
+
@Override
public boolean handle(String fileName, byte[] content) {
try {
@@ -111,7 +122,7 @@ public class ResourcesStatusCallbackHandler extends ResourceCallbackHandler<EnvS
.stream()
.filter(e -> !e.getStatus().equals(datalabHostResources.get(e.getId()).getStatus()))
.map(e -> datalabHostResources.get(e.getId())
- .withStatus(e.getStatus()))
+ .withStatus(checkAndMapStatus(e.getStatus())))
.collect(Collectors.toList());
}
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/base/InfrastructureService.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/base/InfrastructureService.java
index 6a2d870..4379f1d 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/base/InfrastructureService.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/base/InfrastructureService.java
@@ -107,8 +107,7 @@ public abstract class InfrastructureService implements DockerCommands {
throws Exception {
final ProcessInfo processInfo = commandExecutor.executeSync(username, DockerCommands.generateUUID(),
- String.format(DockerCommands
- .GET_RUNNING_CONTAINERS_FOR_USER, dto.getEdgeUserName()));
+ String.format(DockerCommands.GET_RUNNING_CONTAINERS_FOR_USER, dto.getEdgeUserName()));
final String processInfoStdOut = processInfo.getStdOut();
if (StringUtils.isNoneEmpty(processInfoStdOut)) {
@@ -123,7 +122,6 @@ public abstract class InfrastructureService implements DockerCommands {
dto.getResourceList().setHostList(hostList);
dto.getResourceList().setClusterList(clusterList);
-
}
}
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/BackupCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/BackupCallback.java
index 52e5fb1..5460625 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/BackupCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/BackupCallback.java
@@ -56,4 +56,4 @@ public class BackupCallback {
dto.getEnvBackupStatus().withErrorMessage(dto.getErrorMessage()));
return Response.created(uriInfo.getRequestUri()).build();
}
-}
+}
\ No newline at end of file
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/EnvironmentStatusCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/EnvironmentStatusCallback.java
index c8caa0c..4a9c0d0 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/EnvironmentStatusCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/EnvironmentStatusCallback.java
@@ -42,13 +42,11 @@ import javax.ws.rs.core.Response;
@Slf4j
public class EnvironmentStatusCallback {
- private final EnvDAO envDAO;
private final RequestId requestId;
private final EnvironmentService environmentService;
@Inject
- public EnvironmentStatusCallback(EnvDAO envDAO, RequestId requestId, EnvironmentService environmentService) {
- this.envDAO = envDAO;
+ public EnvironmentStatusCallback(RequestId requestId, EnvironmentService environmentService) {
this.requestId = requestId;
this.environmentService = environmentService;
}
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java
index c081ab2..e3a0c95 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java
@@ -38,6 +38,7 @@ import com.google.inject.Inject;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
+import java.util.Collections;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
@@ -81,21 +82,22 @@ public class CheckInfrastructureStatusScheduler implements Job {
Map<String, List<EnvResource>> exploratoryAndSparkInstances = userInstanceDTOS
.stream()
.map(this::getExploratoryAndSparkInstances)
- .flatMap(Collection::stream)
- .collect(Collectors.groupingBy(EnvResource::getEndpoint));
+ .flatMap(Collection::stream)
+ .collect(Collectors.groupingBy(EnvResource::getEndpoint));
Map<String, List<EnvResource>> clusterInstances = userInstanceDTOS
.stream()
- .map(this::getCloudInstances)
- .flatMap(Collection::stream)
- .collect(Collectors.groupingBy(EnvResource::getEndpoint));
+ .map(this::getClusterInstances)
+ .flatMap(Collection::stream)
+ .collect(Collectors.groupingBy(EnvResource::getEndpoint));
activeEndpoints.forEach(e -> {
List<EnvResource> hostInstances = Stream.of(getEdgeInstances(e), exploratoryAndSparkInstances.get(e))
.flatMap(Collection::stream)
.collect(Collectors.toList());
- infrastructureInfoService.updateInfrastructureStatuses(serviceUser, e, hostInstances, clusterInstances.get(e));
+ infrastructureInfoService.updateInfrastructureStatuses(serviceUser, e, hostInstances,
+ clusterInstances.getOrDefault(e, Collections.emptyList()));
}
);
}
@@ -125,7 +127,7 @@ public class CheckInfrastructureStatusScheduler implements Job {
return instances;
}
- private List<EnvResource> getCloudInstances(UserInstanceDTO userInstanceDTO) {
+ private List<EnvResource> getClusterInstances(UserInstanceDTO userInstanceDTO) {
return userInstanceDTO.getResources().stream()
.filter(c -> DataEngineType.CLOUD_SERVICE == DataEngineType.fromDockerImageName(c.getImageName()))
.filter(c -> statusesToCheck.contains(UserInstanceStatus.of(c.getStatus())))
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
index 2030516..b7ad081 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
@@ -103,13 +103,13 @@ public class InfrastructureInfoServiceImpl implements InfrastructureInfoService
.map(p -> {
List<UserInstanceDTO> exploratories = expDAO.findExploratories(user.getName(), p.getName());
return ProjectInfrastructureInfo.builder()
- .project(p.getName())
- .billingQuoteUsed(billingService.getBillingProjectQuoteUsed(p.getName()))
- .shared(getSharedInfo(p.getName()))
- .exploratory(exploratories)
- .exploratoryBilling(getExploratoryBillingData(exploratories))
- .endpoints(getEndpoints(allEndpoints, p))
- .odahu(p.getOdahu())
+ .project(p.getName())
+ .billingQuoteUsed(billingService.getBillingProjectQuoteUsed(p.getName()))
+ .shared(getSharedInfo(p.getName()))
+ .exploratory(exploratories)
+ .exploratoryBilling(getExploratoryBillingData(exploratories))
+ .endpoints(getEndpoints(allEndpoints, p))
+ .odahu(p.getOdahu())
.build();
})
.collect(Collectors.toList());
@@ -149,11 +149,13 @@ public class InfrastructureInfoServiceImpl implements InfrastructureInfoService
@Override
public void updateInfrastructureStatuses(UserInfo user, String endpoint, List<EnvResource> hostInstances, List<EnvResource> clusterInstances) {
EnvResourceList envResourceList = EnvResourceList.builder()
- .hostList(hostInstances)
- .clusterList(clusterInstances)
- .build();
+ .hostList(hostInstances)
+ .clusterList(clusterInstances)
+ .build();
EndpointDTO endpointDTO = endpointService.get(endpoint);
+ log.info("Send request to provisioning service:\n POST:{}, with EnvResources: {}", INFRASTRUCTURE_STATUS,
+ envResourceList);
String uuid = provisioningService.post(endpointDTO.getUrl() + INFRASTRUCTURE_STATUS, user.getAccessToken(),
requestBuilder.newInfrastructureStatus(user.getName(), endpointDTO.getCloudProvider(), envResourceList),
String.class);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org