Details

    • Type: Sub-task Sub-task
    • Status: Closed 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).

        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: