User Tools

Site Tools


transformations:exclusiveaccess

This is an old revision of the document!


Start/finish exclusive access

Enforce mutually exclusive access to a resource for simultaneously executed projects (tasks).

The action is intended for avoiding access conflicts when two or more simultaneously executed projects (tasks) attempt to access a resource (e.g. write into a file or web API) that can only be accessed by one project at a time. It's typically used to resolve access conflicts between several simultaneously executed instances of an EasyMorph Server task.

The action works similarly to a railroad semaphore. When one project starts exclusive access to a resource using the action, all the other projects running on the same computer and requiring access to the same resource will wait until the first project finishes the exclusive access. Once exclusive access is finished, one from the waiting projects will proceed to access the same resource.

For the access synchronization to work, all the projects that access the resource must use the "Start/finish exclusive access" with the same resource name. If a project doesn't use the action, it won't wait for another project even if the latter uses the action.

To finish exclusive access to a resource, use the action again but in the "Finish" mode. Make sure that the specified resource name is the same for starting and finishing exclusive access.

To make the synchronization work, all projects must use the "Start/finish exclusive access" action configured to start access to a resource with the same name.

Resource name

The resource name is symbolic. It is only used to identify a resource for the action. The name doesn't have to be the real name of the accessed resource. Although, it is recommended to give resources meaningful identifiers for clarity.

The resource name can be specified using a parameter.

Remarks

A project can start exclusive access to only one resource at a time. In order to start exclusive access to another resource, the previous exclusive access must be finished by using the action again but in the "Finish" mode. Nested locks are not supported.

After exclusive access is established, it must be finished as soon it's no longer needed. Therefore, when exclusive access is required in a workflow, two "Start/finish exclusive access" actions should be used: one in the "Start" mode before accessing the resource, and another in the "Finish" mode immediately after the resource is no longer used or interacted with.

If exclusive access is not finished explicitly, it will be finished automatically when project execution finishes. In such a case, a warning will be produced.

The action can't be used to synchronize actions within the same project. For that, use the "Synchronize" action.

The action can't be used to resolve access conflicts for projects running on different computers.

transformations/exclusiveaccess.1610801009.txt.gz · Last modified: 2021/01/16 07:43 by dmitry

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki