Retry fetch assettoscatemplate in csar generation 19/129519/3
authorMichaelMorris <michael.morris@est.tech>
Fri, 3 Jun 2022 15:09:46 +0000 (16:09 +0100)
committerVasyl Razinkov <vasyl.razinkov@est.tech>
Thu, 9 Jun 2022 07:53:50 +0000 (07:53 +0000)
Change-Id: I328e174d34b1c8fb688510b498d50130827b9608
Issue-ID: SDC-4032
Signed-off-by: MichaelMorris <michael.morris@est.tech>
catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java
catalog-dao/src/main/java/org/openecomp/sdc/be/dao/cassandra/CassandraClient.java

index 9b0b25b..81d9e5d 100644 (file)
@@ -432,6 +432,7 @@ public class CsarUtils {
                                                                 boolean isInCertificationRequest) throws IOException {
         ArtifactDefinition artifactDef = component.getToscaArtifacts().get(ToscaExportHandler.ASSET_TOSCA_TEMPLATE);
         Either<ToscaRepresentation, ResponseFormat> toscaRepresentation = fetchToscaRepresentation(component, getFromCS, artifactDef);
+
         // This should not be done but in order to keep the refactoring small enough we stop here.
 
         // TODO: Refactor the rest of this function
@@ -879,10 +880,10 @@ public class CsarUtils {
         return Either.right(componentsUtils.getResponseFormat(ActionStatus.TOSCA_SCHEMA_FILES_NOT_FOUND, firstThreeOctets, CONFORMANCE_LEVEL));
     }
 
-    private Either<byte[], ActionStatus> getFromCassandra(String cassandraId) {
-        return artifactCassandraDao.getArtifact(cassandraId).right().map(cos -> {
-            log.debug("Failed to fetch artifact from Cassandra by id {} error {} ", cassandraId, cos);
-            StorageOperationStatus storageStatus = DaoStatusConverter.convertCassandraStatusToStorageStatus(cos);
+    private Either<byte[], ActionStatus> getFromCassandra(String cassandraId) {        
+        return artifactCassandraDao.getArtifact(cassandraId).right().map(operationstatus -> {
+            log.info("Failed to fetch artifact from Cassandra by id {} error {}.", cassandraId, operationstatus);        
+            StorageOperationStatus storageStatus = DaoStatusConverter.convertCassandraStatusToStorageStatus(operationstatus);
             return componentsUtils.convertFromStorageResponse(storageStatus);
         }).left().map(DAOArtifactData::getDataAsArray);
     }
index 3bd318c..998c8ea 100644 (file)
@@ -20,6 +20,7 @@
 package org.openecomp.sdc.be.dao.cassandra;
 
 import com.datastax.driver.core.Cluster;
+import com.datastax.driver.core.ConsistencyLevel;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.SocketOptions;
 import com.datastax.driver.core.policies.ConstantReconnectionPolicy;
@@ -28,6 +29,7 @@ import com.datastax.driver.core.policies.DefaultRetryPolicy;
 import com.datastax.driver.core.policies.LoadBalancingPolicy;
 import com.datastax.driver.core.policies.TokenAwarePolicy;
 import com.datastax.driver.mapping.Mapper;
+import com.datastax.driver.mapping.Mapper.Option;
 import com.datastax.driver.mapping.MappingManager;
 import fj.data.Either;
 import java.util.List;
@@ -167,9 +169,14 @@ public class CassandraClient {
             return Either.right(CassandraOperationStatus.CLUSTER_NOT_CONNECTED);
         }
         try {
-            Mapper<T> mapper = manager.mapper(clazz);
+            Mapper<T> mapper = manager.mapper(clazz);            
             T result = mapper.get(id);
             if (result == null) {
+                logger.info("Failed to get by Id [{}], trying again with consistency level ALL", id);
+                result = mapper.get(id, Option.consistencyLevel(ConsistencyLevel.ALL));
+            }
+            if (result == null) {
+                logger.info("Failed to get by Id [{}] with consistency level ALL", id);
                 return Either.right(CassandraOperationStatus.NOT_FOUND);
             }
             return Either.left(result);