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