Fixed concurrency issue in PNF uploading 40/113340/2
authorkuldipr <kuldip.rai@amdocs.com>
Tue, 29 Sep 2020 19:13:36 +0000 (15:13 -0400)
committerkuldipr <kuldip.rai@amdocs.com>
Thu, 1 Oct 2020 15:33:03 +0000 (11:33 -0400)
Issue-ID: AAI-3100
Signed-off-by: kuldipr <kuldip.rai@amdocs.com>
Change-Id: I27b9b5f44229798cc1fe116a27b480e61ba0e339

aai-core/src/main/java/org/onap/aai/dbgen/SchemaGenerator.java
aai-core/src/test/java/org/onap/aai/parsers/uri/URIToExtensionInformationTest.java
aai-els-onap-logging/src/main/java/org/onap/aai/util/AAIConstants.java

index d253f87..c1ef1cc 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.onap.aai.dbgen;
 
+import org.onap.aai.util.AAIConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import com.google.common.collect.Multimap;
@@ -36,6 +37,8 @@ import org.janusgraph.core.JanusGraph;
 import org.janusgraph.core.Multiplicity;
 import org.janusgraph.core.PropertyKey;
 import org.janusgraph.core.schema.JanusGraphManagement;
+import org.janusgraph.core.schema.JanusGraphIndex;
+import org.janusgraph.core.schema.ConsistencyModifier;
 import org.onap.aai.config.SpringContextAware;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.edges.EdgeIngestor;
@@ -145,6 +148,14 @@ public class SchemaGenerator {
                         if (!seenProps.containsKey(dbPropName)) {
                             propK = graphMgmt.makePropertyKey(dbPropName).dataType(type).cardinality(cardinality)
                                     .make();
+                            if (dbPropName.equals("aai-uri")) {
+                                String aai_uri_lock_enabled = AAIConfig.get(AAIConstants.AAI_LOCK_URI_ENABLED, "false");
+                                LOGGER.info(" Info: aai_uri_lock_enabled:" + aai_uri_lock_enabled);
+                                if ("true".equals(aai_uri_lock_enabled)) {
+                                    LOGGER.info(" Lock is being set for aai-uri Property.");
+                                    graphMgmt.setConsistency(propK, ConsistencyModifier.LOCK);
+                                }
+                            }
                             seenProps.put(dbPropName, propK);
                         } else {
                             propK = seenProps.get(dbPropName);
@@ -154,15 +165,23 @@ public class SchemaGenerator {
                             LOGGER.debug(dmsg);
                         } else {
                             if (obj.getIndexedProperties().contains(propName)) {
+                                JanusGraphIndex indexG = null;
                                 if (obj.getUniqueProperties().contains(propName)) {
                                     imsg = "Add Unique index for PropertyKey: [" + dbPropName + "]";
                                     LOGGER.info(imsg);
-                                    graphMgmt.buildIndex(dbPropName, Vertex.class).addKey(propK).unique()
-                                            .buildCompositeIndex();
+                                    indexG = graphMgmt.buildIndex(dbPropName, Vertex.class).addKey(propK).unique().buildCompositeIndex();
                                 } else {
                                     imsg = "Add index for PropertyKey: [" + dbPropName + "]";
                                     LOGGER.info(imsg);
-                                    graphMgmt.buildIndex(dbPropName, Vertex.class).addKey(propK).buildCompositeIndex();
+                                    indexG = graphMgmt.buildIndex(dbPropName, Vertex.class).addKey(propK).buildCompositeIndex();
+                                }
+                                if (indexG != null && dbPropName.equals("aai-uri")) {
+                                    String aai_uri_lock_enabled = AAIConfig.get(AAIConstants.AAI_LOCK_URI_ENABLED, "false");
+                                    LOGGER.info(" Info:: aai_uri_lock_enabled:" + aai_uri_lock_enabled);
+                                    if ("true".equals(aai_uri_lock_enabled)) {
+                                        LOGGER.info("Lock is being set for aai-uri Index.");
+                                        graphMgmt.setConsistency(indexG, ConsistencyModifier.LOCK);
+                                    }
                                 }
                             } else {
                                 imsg = "No index added for PropertyKey: [" + dbPropName + "]";
index 7d7d284..3035d4b 100644 (file)
@@ -30,6 +30,8 @@ import javax.ws.rs.core.UriBuilder;
 import javax.xml.bind.JAXBException;
 
 import org.junit.Test;
+import org.springframework.test.annotation.DirtiesContext;
+
 import org.onap.aai.AAISetup;
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.introspection.Loader;
@@ -37,6 +39,7 @@ import org.onap.aai.introspection.ModelType;
 import org.onap.aai.restcore.HttpMethod;
 import org.onap.aai.setup.SchemaVersion;
 
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class URIToExtensionInformationTest extends AAISetup {
 
     private Loader specificLoader;
index 3ddd008..f44f736 100644 (file)
@@ -154,6 +154,9 @@ public final class AAIConstants {
     public static final String AAI_TRAVERSAL_MS = "aai-traversal";
     public static final String AAI_RESOURCES_MS = "aai-resources";
 
+    /** Flag to control concurrency lock */
+    public static final String AAI_LOCK_URI_ENABLED = "aai.lock.uri.enabled";
+
     /**
      * Instantiates a new AAI constants.
      */