type=page
status=published
title=recover-transactions
next=redeploy.html
prev=ping-node-ssh.html
~~~~~~
recover-transactions
====================

[[recover-transactions-1]][[GSRFM00216]][[recover-transactions]]

recover-transactions
--------------------

manually recovers pending transactions

[[sthref1952]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] recover-transactions [--help] 
[--transactionlogdir transaction_log_dir]
[--target target_server_name] server_name
----

[[sthref1953]]

Description

The `recover-transactions` subcommand manually recovers pending
transactions.

For an installation of multiple server instances, you can run the
`recover-transactions` subcommand from a surviving server instance to
recover transactions after a server failure. To use this subcommand in
this way, the following conditions must be met:

* Delegated transaction recovery is disabled.
* Transaction logs are stored on a shared file system or in a database
that is accessible to all server instances.

For a stand-alone server, do not use this subcommand to recover
transactions after a server failure. For a stand-alone server, the
`recover-transactions` subcommand can recover transactions only when a
resource fails, but the server is still running. If a stand-alone server
fails, only the full startup recovery process can recover transactions
that were pending when the server failed.

This subcommand is supported in remote mode only.

[[sthref1954]]

Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--transactionlogdir`::
  The location of the transaction logs for a server for which
  transaction recovery is requested. This option applies only if
  transaction logs are stored on a shared file system.
`--target`::
  The target server that performs the recovery for the server that is
  specified by the server_name operand. The target server should be
  running.
`--destination`::
  This option is deprecated. It works exactly as the `--target` option
  does.

[[sthref1955]]

Operands

server_name::
  For a stand-alone server, the value of this operand is typically
  `server`. Transactions are recovered only if a resource fails, but the
  server is still running. +
  For an installation of multiple server instances, the value of this
  operand is the name of the server for which the recovery is required.
  The in-flight transactions on this server will be recovered. If this
  server is running, recovery is performed by the same server. In this
  situation, the `--transactionlogdir` and `--target` options should be
  omitted. If the server is not running, the `--target` option is
  required, and the `--transactionlogdir` option is also required if
  transaction logs are stored on a shared file system.

[[sthref1956]]

Examples

[[GSRFM733]][[sthref1957]]

Example 1   Recovering transactions on a running server

[source,oac_no_warn]
----
% asadmin recover-transactions server1
Transaction recovered.
----

[[GSRFM734]][[sthref1958]]

Example 2   Recovering transactions for a server that is not running

[source,oac_no_warn]
----
% asadmin recover-transactions --transactionlogdir /logs/tx --target server1 server2
Transaction recovered.
----

[[sthref1959]]

Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref1960]]

See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:freeze-transaction-service.html#freeze-transaction-service-1[`freeze-transaction-service`(1)],
link:rollback-transaction.html#rollback-transaction-1[`rollback-transaction`(1)],
link:unfreeze-transaction-service.html#unfreeze-transaction-service-1[`unfreeze-transaction-service`(1)]

"link:../administration-guide/transactions.html#GSADG00022[Administering Transactions]" in GlassFish Server Open
Source Edition Administration Guide

"http://docs.oracle.com/javaee/7/tutorial/doc/transactions.html[Transactions]"
in The Java EE 8 Tutorial


