[
https://issues.apache.org/jira/browse/IVY-492?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12494982
]
Xavier Hanin commented on IVY-492:
----------------------------------
It seems we'd better have agreed on our jira/mailing list guidelines :-)
I see an advantage of using directly the file resolver for this and modifying
the Repository and DependencyResolver interface directly: people could benefit
of this without changing their settings, by simply droping the appropriate jar
in their classpath. And you could control atomicity with a simple property on
the resolver (transactional="true" for instance).
OTOH, with explicit transactional resolvers, you can raise an error if the jar
is not available. But we could also do that if one set explictly the property
'transactional' (which could actually the values true, false, or auto (the
default value) for automatic detection.
And if we later provide transactional support for other resolvers (maybe all),
it will make the settings easier IMHO.
WDYT?
> support atomic publish operation
> --------------------------------
>
> Key: IVY-492
> URL: https://issues.apache.org/jira/browse/IVY-492
> Project: Ivy
> Issue Type: New Feature
> Components: Core
> Reporter: Geoff Reedy
>
> Some resolver types (e.g. one that uses subversion) could benefit from
> publishing a module as a single atomic transaction. Currently, each artifact
> (and it's checksums) are published as separate operations, if one of the
> artifact uploads fail (perhaps an artifact is missing or another user is
> trying to publish the same version at the same time) the ivy repository can
> be in an inconsistent state with a half published module. In addition, if
> uploads are logged many entries in the log are generated for a single logical
> operation.
> A possible implementation strategy is to add three new methods to the
> resolver interface:
> beginPublish(ModuleRevisionId)
> abortPublish()
> commitPublish()
> beginPublish would be called before publishing the artifacts of the module,
> abortPublish would be called if there is an error while publishing the
> module, commitPublish would be called if all artifacts were successfully
> published. Existing resolvers could simple implement these methods as no-ops
> to retain the present behavior.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.