Merge "Process data-updated event asynchronously"
authorToine Siebelink <toine.siebelink@est.tech>
Wed, 25 Aug 2021 13:48:07 +0000 (13:48 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 25 Aug 2021 13:48:07 +0000 (13:48 +0000)
1  2 
cps-application/src/main/resources/application.yml
cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java
cps-service/src/main/java/org/onap/cps/notification/CpsDataUpdatedEventFactory.java

@@@ -71,9 -71,16 +71,16 @@@ spring
  notification:\r
      data-updated:\r
          enabled: false\r
 -        topic: ${CPS_CHANGE_EVENT_TOPIC:cps.cfg-state-events}\r
 +        topic: ${CPS_CHANGE_EVENT_TOPIC:cps.data-updated-events}\r
          filters:\r
-             enabled-dataspaces: ${DATASPACE_FILTER_PATTERNS:""}\r
+             enabled-dataspaces: ${NOTIFICATION_DATASPACE_FILTER_PATTERNS:""}\r
+     async-executor:\r
+         core-pool-size: 2\r
+         max-pool-size: 10\r
+         queue-capacity: 500\r
+         wait-for-tasks-to-complete-on-shutdown: true\r
+         thread-name-prefix: Async-\r
\r
  \r
  springdoc:\r
      swagger-ui:\r
@@@ -94,21 -96,9 +96,21 @@@ public class CpsDataServiceImpl impleme
          final var dataNode = buildDataNodeFromJson(dataspaceName, anchorName, parentNodeXpath, jsonData);
          cpsDataPersistenceService
              .updateDataLeaves(dataspaceName, anchorName, dataNode.getXpath(), dataNode.getLeaves());
-         notificationService.processDataUpdatedEvent(dataspaceName, anchorName);
+         processDataUpdatedEventAsync(dataspaceName, anchorName);
      }
  
 +    @Override
 +    public void updateNodeLeavesAndExistingDescendantLeaves(final String dataspaceName, final String anchorName,
 +                                                            final String parentNodeXpath,
 +                                                            final String dataNodeUpdatesAsJson) {
 +        final Collection<DataNode> dataNodeUpdates =
 +            buildDataNodeCollectionFromJson(dataspaceName, anchorName, parentNodeXpath, dataNodeUpdatesAsJson);
 +        for (final DataNode dataNodeUpdate : dataNodeUpdates) {
 +            processDataNodeUpdate(dataspaceName, anchorName, dataNodeUpdate);
 +        }
 +        notificationService.processDataUpdatedEvent(dataspaceName, anchorName);
 +    }
 +
      @Override
      public void replaceNodeTree(final String dataspaceName, final String anchorName, final String parentNodeXpath,
          final String jsonData) {
@@@ -35,17 -38,15 +37,17 @@@ import org.onap.cps.utils.DataMapUtils
  import org.springframework.stereotype.Component;
  
  @Component
- class CpsDataUpdatedEventFactory {
public class CpsDataUpdatedEventFactory {
  
 +    private static final URI EVENT_SCHEMA;
      private static final URI EVENT_SOURCE;
      private static final String EVENT_TYPE = "org.onap.cps.data-updated-event";
      private static final DateTimeFormatter dateTimeFormatter =
          DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
  
-     static  {
+     static {
          try {
 +            EVENT_SCHEMA = new URI("urn:cps:org.onap.cps:data-updated-event-schema:v1");
              EVENT_SOURCE = new URI("urn:cps:org.onap.cps");
          } catch (final URISyntaxException e) {
              // As it is fixed string, I don't expect to see this error