Uploaded image for project: 'Magnolia'
  1. Magnolia
  2. MAGNOLIA-7858

Version events fired in all workspaces

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 5.7.8, 6.2.3
    • Fix Version/s: 5.7.9, 6.2.4
    • Component/s: None
    • Release notes required:
      Yes
    • Epic Link:
    • Sprint:
      Maintenance 24, Maintenance 25, Maintenance 26
    • Story Points:
      13

      Description

      When a page or asset is versioned a node added event occurs in all workspaces. The versions can be visually inspected from the JCR Browser:

      Set true: /modules/jcr-browser-app/apps/jcr-browser/subApps/browser/contentConnector@includeSystemNodes

      This screenshots one example of a page version and one example of an asset version:
      Page in messages wksp

      Asset in messages wksp

      Expected
      New versions should not effect the observation mechanism of every workspace.

      Actual Result
      A node added event is fired in every workspace.

      To see the issue create this groovy script in the package structure info.magnolia.test:
      import: scripts.info.xml

      package info.magnolia.test;
      
      import javax.jcr.observation.*;
      import javax.jcr.RepositoryException;
      import javax.jcr.observation.Event;
      
      import info.magnolia.observation.*;
      
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      
      public class NodeAddedEvent implements EventListener {
      
          private static final Logger log = LoggerFactory.getLogger(NodeAddedEvent.class);
          
          private String workspace = "";
          public NodeAddedEvent(String workspace) {
              log.info("Worksapce listener registered: {}", workspace);
              this.workspace = workspace;
          }
          
          @Override
          public void onEvent(EventIterator events) {
              
              while (events.hasNext()) {
                  Event event = events.nextEvent();
                  
              if (event.getType() == Event.NODE_ADDED)
                  try {
                      log.info("Node added to {}: {}", workspace, event.getPath());
                  } catch (RepositoryException e) {
                      e.printStackTrace();
                  }
              
              }
          }
      }
      
      workspaces = [
          "advancedCache", "campaigns", "category",
          "config", "dam", "imaging", "keystore",
          "marketing-tags", "messages", "magnolia-mgnlSystem",
          "magnolia-mgnlVersion", "personas", "profiles", "rankings", "resources",
          "rss", "scripts", "segments", "stories", "tags", "tasks",
          "usergroups", "userroles", "users", "visitors", "website", "workflow"
      ];
      
      for (workspace : workspaces) {
          println workspace;
          (WorkspaceEventListenerRegistration
              .observe(workspace, "/", new NodeAddedEvent(workspace))
              .withSubNodes(true)).register();
      }
      

      Create a page and publish it. The NodeAddedEvent will log every new node created. page-node-creation-and-publish.log

      Conclusions

      • Each time you add a new workspace to the system you are creating additional drag on the versioning system.
      • Since the versions can be seen from every workspace you must be careful when iterating the nodes of a workspace. Most likely you do not want to iterate the system level nodes.

        Checklists

        Acceptance criteria

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                fgrilli Federico Grilli
                Reporter:
                rgange Richard Gange
                Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved:
                  Date of First Response:

                    Checklists

                    Bug DoR
                    DoD

                      Time Tracking

                      Estimated:
                      Original Estimate - Not Specified
                      Not Specified
                      Remaining:
                      Remaining Estimate - 0d
                      0d
                      Logged:
                      Time Spent - 0.25d
                      0.25d