[ 
https://issues.apache.org/jira/browse/JCRVLT-50?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15766205#comment-15766205
 ] 

Tobias Bocanegra commented on JCRVLT-50:
----------------------------------------

suggested new method:

{code}
public interface JcrPackageManager extends PackageManager {
...
    /**
     * Extracts a package directly from the given input stream without 
uploading it to the repository first.
     * if {@code createShallowPackage} is {@code true} a package node is 
created but w/o any content.
     * The resulting package cannot be downloaded, uninstalled or re-installed.
     * <p/>
     * If the package defines unfulfilled dependencies {@link 
DependencyHandling} might cause the extraction to fail.
     * <p/>
     * If the package contains sub-packages, they will follow the same 
behaviour, i.e. they will not be uploaded to the
     * repository but directly installed unless {@link 
ImportOptions#setNonRecursive(boolean)} is set to true, in which
     * case the sub packages will be uploaded.
     * <p/>
     * The method will throw an {@link ItemExistsException} if a package with 
the name id already exists.
     * <p/>
     * Note that when the package source originates from a {@link File}, the 
method should be called with a 
     * {@link FileInputStream} so that the operations can be optimized.
     *
     * @param input the input stream that contains the package.
     * @param options the import options
     * @param createShallowPackage if {@code true} this method will create 
empty, shallow packages for reference
     * @return an array of the package(s) that were extracted.
     * @throws RepositoryException if an error occurs
     * @throws IOException if an I/O error occurrs
     * @throws ItemExistsException if the package was already present in the 
repository.
     * @throws IOException if an I/O exception occurs
     */
    @Nonnull
    PackageId[] extract(InputStream input, ImportOptions options, boolean 
createShallowPackage)
            throws RepositoryException, PackageException, IOException;
{code}

> Add support for "hollow" packages
> ---------------------------------
>
>                 Key: JCRVLT-50
>                 URL: https://issues.apache.org/jira/browse/JCRVLT-50
>             Project: Jackrabbit FileVault
>          Issue Type: New Feature
>          Components: Packaging
>            Reporter: Tobias Bocanegra
>
> when installing the customer package that is 3Gb, I noticed that installing 
> it requires about 10Gb...
> The root cause seems that it doesn't use the file directly, but instead 
> perform multiple copies before actually starting to extract it.
> 1. it copies the package from crx-quickstart/install to datastore 
> 2. from datastore if first copy it in /tmp like 
> vaultpack7793665768596308927.zip
> 3. in /tmp/ it create a second copy __vlttmpbuffer2535888623024233693.dat
> So at the end it will have used many diskspace which in the case of large 
> package is not efficient.
> It could be nice if it would use the original file (datastore or /install 
> folder) all the time.
> ---
> I think we should have 2 improvements:
> # add option for streaming install which would:
> ** create a "hollow" package, that does not store the package content in the 
> repository (basically, a 0 byte jcr:data). I think it's still good to have 
> the package node so that you see it was installed
> ** would not create a snapshot by default
> ** would not allow to uninstall
> ** would install directly from the stream, w/o need of tmp file (there might 
> be a problem with large zip's that still need a tmp file - but with java7 
> that might not be a problem anymore)
> # add option to select a file on the server disk for installation. this can 
> be done independent of the "hollow" package support above. but would allow to 
> scp the files on the server, and then install it w/o an ever-open browser 
> connection.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to