[
https://issues.apache.org/jira/browse/TRANSACTION-9?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12515376
]
Peter Fassev commented on TRANSACTION-9:
----------------------------------------
1) FYI: The implementation I have already attached to this Issue DOES solve the
problem of failing of a commit. All primitive actions, like "create",
"move/rename", "delete", "overwrite/append" have "do()" and "undo()" methods,
which allows to rollback the transaction at any time, even after an error
during a commit or after prepare commit. So we can implement a two phase commit
and support distributed transactions. But a rollback (after a commit/prepare
commit has bee started) currently may fail (and must be fixed) because of:
a) There is not enough free space, for instance because the temp-transaction
directory (where the undo files have been copied), is on a different volume.
b) An external process is accessing a committed file (for instance a backup),
and the rollback can not delete or rename or delete the already committed file.
What we can do:
a) Create a temp-directory at each volume, and create a shadow copies only on
the same volume. Here we have to support a multiple temp directory for a single
transaction.
b) Actually, we can only wait (in a separate thread may be) for the external
process to end and to rollback the transaction. But we have to hold the locks
until the full rollback is completed and throw a Lock-Timeout exception, if
somebody whants to access the resources in the mean time. Or we have to use
FileLocks, to prevent exterenal access to the changed transaction files.
So I think, we can manage it and create a secure transactional file access,
even without a FileLock synchronization. But if FileLocks do really work, why
not use them? This may be also an option, which may be chosen by the user.
4) Filtering: It is correct, we don't need to know about filtering, but FYI
there is a Jakarta Commons IO library at Apache, which contains a set of file
filter.
> [transaction] Add full file management capabilities to the FileResourceManager
> ------------------------------------------------------------------------------
>
> Key: TRANSACTION-9
> URL: https://issues.apache.org/jira/browse/TRANSACTION-9
> Project: Commons Transaction
> Issue Type: Improvement
> Environment: Operating System: All
> Platform: All
> Reporter: Peter Fassev
> Assignee: Oliver Zeigermann
> Priority: Minor
> Fix For: 2.0
>
> Attachments: filemanager.zip
>
>
> Hi,
> As stated in the doc the FileResourceManager is:
> "A resource manager for streamable objects stored in a file system"
> I agree, that this is a resource manager, but it could be easily extended, to
> support a full file management system. It will be very helpful to have
> additional methods like renameResource(), getResourceSize(),
> getResourceTime(),
> setResourceTime() etc. This are common file operations, which should be
> managed
> by the FileResourceManager.
> Further it will be very helpful to have (real) support for resource
> collections
> (folders). It will be necessary to distinguish between single resources
> (files)
> and collections (folders).
> Together, this features will enable a transactional access to any file based
> resources - for instance a document repository.
> Are there plans for such extensions and if not, will they actually fit in the
> goals of the transaction library?
> If not, please open the underlying structure, like the inner class
> TransactionContext, in order to add extensions the file management. For
> instance, it will be good to have a separate factory method, which creates
> the
> context.
> If you are interested in this proposal, I am ready to contribute to this
> project. I consider myself as an experienced java developer and I will be
> glad
> to help you.
> Best regards
> Peter Fassev
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]