[
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)