Details

    • Type: Sub-task Sub-task
    • Status: Closed (View Workflow)
    • Priority: Blocker Blocker
    • Resolution: Done
    • Affects Version/s: 3.0.0.Beta1
    • Fix Version/s: 3.0.0.Beta3
    • Component/s: JCR
    • Labels:
      None
    • Similar Issues:
      Show 10 results 

      Description

      Provide an API and utility for backing up and restoring content. The materialized file format should be compatible with 2.x (MODE-1580).

        Gliffy Diagrams

          Activity

          Hide
          Randall Hauch added a comment -

          Introduced a new facility for backing up an entire repository to files on the file system. The backup process writes the JSON representation of each node's content (up to 100K JSON documents per compressed backup file) and writes out the binary content (one file per binary value, named with the value's SHA1). The process also listens for changes made to the repository during the time the backup process is running, and writes the JSON representations of each of the nodes changed during that time - this means that backups can be performed while the repository is still in use (although backing up a repository for migration should only be done on a repository that is not being used). The result should be a consistent backup of a repository's entire content.

          It is also possible to restore a repository to the state represented in a backup. This destroys all existing repository content, adds all of the nodes and binary values in the backup, restarts the repository, and reindexes all content in the repository.

          Note that there still may be issues with how we're getting accessing all of the keys in the Infinispan cache. This has been encapsulated in the InfinispanUtil class, and can be improved over time. (At this point, Infinispan only supports using distributed execution on clustered caches; see https://issues.jboss.org/browse/ISPN-2192 for an enhancement request to allow using distributed execution on all caches. Additionally, there are limitations for local caches, though InfinispanUtil attempts to work around these limitations).

          Show
          Randall Hauch added a comment - Introduced a new facility for backing up an entire repository to files on the file system. The backup process writes the JSON representation of each node's content (up to 100K JSON documents per compressed backup file) and writes out the binary content (one file per binary value, named with the value's SHA1). The process also listens for changes made to the repository during the time the backup process is running, and writes the JSON representations of each of the nodes changed during that time - this means that backups can be performed while the repository is still in use (although backing up a repository for migration should only be done on a repository that is not being used). The result should be a consistent backup of a repository's entire content. It is also possible to restore a repository to the state represented in a backup. This destroys all existing repository content, adds all of the nodes and binary values in the backup, restarts the repository, and reindexes all content in the repository. Note that there still may be issues with how we're getting accessing all of the keys in the Infinispan cache. This has been encapsulated in the InfinispanUtil class, and can be improved over time. (At this point, Infinispan only supports using distributed execution on clustered caches; see https://issues.jboss.org/browse/ISPN-2192 for an enhancement request to allow using distributed execution on all caches. Additionally, there are limitations for local caches, though InfinispanUtil attempts to work around these limitations).
          Hide
          Randall Hauch added a comment -

          Merged the first pull-request into the 'master' branch.

          Show
          Randall Hauch added a comment - Merged the first pull-request into the 'master' branch.
          Hide
          Randall Hauch added a comment -

          Reopening to complete the BinaryStore integration.

          Show
          Randall Hauch added a comment - Reopening to complete the BinaryStore integration.
          Hide
          Randall Hauch added a comment -

          The BinaryStore interface was changed to provide a method that returns an Iterable over the store's BinaryKeys. This allows the BackupService to now include all of the binary values in the backup, and the values are included when restoring a repository from a backup.

          Show
          Randall Hauch added a comment - The BinaryStore interface was changed to provide a method that returns an Iterable over the store's BinaryKeys. This allows the BackupService to now include all of the binary values in the backup, and the values are included when restoring a repository from a backup.
          Hide
          Randall Hauch added a comment -

          Merged the second pull-request into the 'master' branch.

          Show
          Randall Hauch added a comment - Merged the second pull-request into the 'master' branch.
          Hide
          Randall Hauch added a comment -

          The new InfinispanBinaryStore implementation added in MODE-1291 just has a stub for the 'getAllBinaryKeys()' method; this needs to be implemented.

          Show
          Randall Hauch added a comment - The new InfinispanBinaryStore implementation added in MODE-1291 just has a stub for the 'getAllBinaryKeys()' method; this needs to be implemented.
          Hide
          Randall Hauch added a comment -

          I'm going to close this and re-open MODE-1291 for implementing the 'getAllBinaryKeys()' method.

          Show
          Randall Hauch added a comment - I'm going to close this and re-open MODE-1291 for implementing the 'getAllBinaryKeys()' method.

            People

            • Assignee:
              Randall Hauch
              Reporter:
              Randall Hauch
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development