NAME

Riap::Transaction - Transactions/undo/redo over Riap

VERSION

This document describes version 1.2.4 of Riap::Transaction (from Perl distribution Riap), released on 2015-09-04.

SYNOPSIS

This document specifies doing transactions/undo/redo over Riap.

SPECIFICATION VERSION

1.2

SPECIFICATION

This documentation specifies a set of Riap actions to do transaction/undo/redo over Riap. The actions basically correspond to TM's methods of the same/similar name, so please refer to Rinci::Transaction for more details on each action/method.

For these actions, Riap request key uri can be set to / as it is irrelevant.

Action: begin_tx

Additional Riap request keys: tx_id

Some notes:

tx_id should ideally be hard to guess by other clients, for security.

tx_id should be passed as a Riap request key to every subsequent call request or any one of transaction-management actions described on this list, until the transaction is committed or rolled back.

Riap requests which does not incorporate tx_id key should not be affected by transaction management. But some servers, in order to maintain ACID property, can require that all subsequent call requests be inside some transaction. Call without transaction can be responded with 412 status in such case.

Action: commit_tx

Additional required Riap request keys: tx_id.

Action: savepoint_tx

Additional required Riap request keys: tx_id, tx_spid.

Action: rollback_tx

Additional required Riap request keys: tx_id

Optional Riap request keys: tx_spid

Rollback the transaction, or (if tx_spid is specified) rollback to a specific savepoint.

Action: release_tx_savepoint

Additional required Riap request keys: tx_id, tx_spid

Action: list_txs

Additional required Riap request keys: tx_id

List client's transactions. Should return an array containing transaction ID's.

Optional request key: detail (bool, default false, is set to true will return an array of result records instead), tx_status (str, filter by transaction status).

Example:

# Riap request
{"action":"list_txs", "uri":"/", "detail":1}

# result
[200, "OK",
 [
  {"tx_id": "TX1", "tx_status":"C", "tx_start_time":1336043060,
   "tx_commit_time":1336043065, "tx_summary":"Some summary"},
  {"tx_id": "TX2", "tx_status":"C", "tx_start_time":1336043070,
   "tx_commit_time":1336043071, "tx_summary":null},
  {"tx_id": "TX3", "tx_status":"i", "tx_start_time":1336043090,
   "tx_commit_time":null, "tx_summary":"Some summary"},
 ],
 {"riap.v":1.2}
]

Action: undo

Optional Riap request keys: tx_id.

Undo a committed transaction (defaults to the newest committed transaction).

Action: redo

Optional Riap request keys: tx_id.

Redo a committed transaction (defaults to the newest undone committed transaction).

Action: discard_tx

Additional required Riap request keys: tx_id.

Action: discard_all_txs

Additional required Riap request keys: none.

Discard all committed transactions for this client.

SEE ALSO

Riap

Rinci::Transaction

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Riap.

SOURCE

Source repository is at https://github.com/perlancar/perl-Riap.

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Riap

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.