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