You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by Chetan Mehrotra <ch...@gmail.com> on 2014/07/04 11:35:02 UTC

Avoiding intermediate saves while installing packages via File Vault

Hi,

Currently JR FileVault supports 'noIntermediateSaves' property which
indicates that no intermediate save would be performed while a package
is being installed. However it does not appear to work as expected

1. AutoSave Usage
------------------------

For this it uses AutoSave class which commits the change if certain
threshold is reached. If 'noIntermediateSaves' is set then this
threshold is set to Integer.MAX thus effectively disabling
intermediate commits. I see AutoSave being used at two placed in
Importer. One of them is guarded by autoSave.needsSave but other one
is not [1]. Would that be a bug?

2. Sub Packages
-------------------------

Other place where it does not work properly is when  a package
contains sub packages as Vault needs to save details regarding
intermediate packages at various stages which causes any content
changes also getting committed.

I see quite a few calls to Item.save in vault codebase for the path
taken by package installation. It might be possible to use a sub
session to perform internal bookkeeping task by vault and use ther
other session to save the package content and thus avoid intermediate
save.

Chetan Mehrotra
[1] https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java#L402

Re: Avoiding intermediate saves while installing packages via File Vault

Posted by Tobias Bocanegra <tr...@adobe.com>.
Hi Chetan,

On Fri, Jul 4, 2014 at 2:35 AM, Chetan Mehrotra
<ch...@gmail.com> wrote:
> Hi,
>
> Currently JR FileVault supports 'noIntermediateSaves' property which
> indicates that no intermediate save would be performed while a package
> is being installed. However it does not appear to work as expected
>
> 1. AutoSave Usage
> ------------------------
>
> For this it uses AutoSave class which commits the change if certain
> threshold is reached. If 'noIntermediateSaves' is set then this
> threshold is set to Integer.MAX thus effectively disabling
> intermediate commits. I see AutoSave being used at two placed in
> Importer. One of them is guarded by autoSave.needsSave but other one
> is not [1]. Would that be a bug?
no. see [2]

> 2. Sub Packages
> -------------------------
>
> Other place where it does not work properly is when  a package
> contains sub packages as Vault needs to save details regarding
> intermediate packages at various stages which causes any content
> changes also getting committed.
>
> I see quite a few calls to Item.save in vault codebase for the path
> taken by package installation. It might be possible to use a sub
> session to perform internal bookkeeping task by vault and use ther
> other session to save the package content and thus avoid intermediate
> save.

well, it is to discuss if sub-packages should be part of the atomicity
of a package install. the current implementation treats each package
individually.
also, other operations like versioning are not atomic - this is just
not possible w/o XA transactions. and IIRC, applying group membership
was also done as a workspace operation, at least in early jackrabbit
versions.

I would also like to change the way that sub-packages are bundled [3],
so this will streamline the auto-save handling.
regards, toby


>
> Chetan Mehrotra
> [1] https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java#L402

[2] https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/AutoSave.java#L141
[3] https://issues.apache.org/jira/browse/JCRVLT-33