[JBoss JIRA] (JBTM-1107) Recovery Support in Compensation API
by Tom Jenkinson (JIRA)
[ https://issues.jboss.org/browse/JBTM-1107?page=com.atlassian.jira.plugin.... ]
Tom Jenkinson updated JBTM-1107:
--------------------------------
Fix Version/s: 5.later
> Recovery Support in Compensation API
> ------------------------------------
>
> Key: JBTM-1107
> URL: https://issues.jboss.org/browse/JBTM-1107
> Project: JBoss Transaction Manager
> Issue Type: Feature Request
> Components: Compensations
> Reporter: Tom Jenkinson
> Assignee: Gytis Trikleris
> Fix For: 5.later
>
>
> *Background*
> Currently Compensations API cannot handle system failures. Transaction state is not persisted in any stage. Thus no handlers will be invoked in case of the system crash.
> *Requirements*
> # Make handlers persistable (CompensationHandler, ConfirmationHandler, TransactionLoggedHandler).
> ## Require Serializable interface.
> ## Create PersistableHandler interface (similar to PersistableParticipant in RTS integration).
> # Make participant persistable (ParticipantImpl, LocalParticipant, RemoteParticipant).
> ## Make transaction identifier persistable (converting it to String should work).
> ## Implement PersistableParticipant in ParticipantImpl.
> ## Investigate if PARTICIPANT_COUNTERS in ParticipatnImpl have to be updated.
> # Make compensation scoped beans persistable.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (JBTM-2819) Recover operation does not work for participant of JCA type transactions
by Michael Musgrove (JIRA)
[ https://issues.jboss.org/browse/JBTM-2819?page=com.atlassian.jira.plugin.... ]
Michael Musgrove commented on JBTM-2819:
----------------------------------------
The participant has already rolled back (its status is HEURISTIC_ROLLBACK) and therefore it is too late to attempt another commit. The only states where we will reattempt the commit/abort is if we do not know what the resource did:- ie HEURISTIC_MIXED or HEURISTIC_HAZARD.
I can either reject this JIRA or make it a documentation issue so that it is clear under what circumstances the recover operation can succeed. FYI the bit of code that indicates why the recover attempt fails is here:
https://github.com/jbosstm/narayana/blob/master/ArjunaCore/arjuna/classes...
> Recover operation does not work for participant of JCA type transactions
> ------------------------------------------------------------------------
>
> Key: JBTM-2819
> URL: https://issues.jboss.org/browse/JBTM-2819
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Affects Versions: 5.4.0.Final
> Reporter: Ondra Chaloupka
> Assignee: Michael Musgrove
> Attachments: heuristic-rollback-objectstore.zip
>
>
> Jboss cli {{:recover}} operation does not work when having JCA type transaction. My test shows following
> {code}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store:probe
> {"outcome" => "success"}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store:read-resource(recursive=true)
> {
> "outcome" => "success",
> "result" => {
> "expose-all-logs" => false,
> "type" => "default",
> "transactions" => {
> "0:ffff7f000001:-4cecb39b:585109e2:31" => {
> "age-in-seconds" => undefined,
> "id" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "jmx-name" => undefined,
> "type" => "CosTransactions/XAResourceRecord",
> "participants" => undefined
> },
> "0:ffff7f000001:-4cecb39b:585109e2:28" => {
> "age-in-seconds" => "1481798762",
> "id" => "0:ffff7f000001:-4cecb39b:585109e2:28",
> "jmx-name" => undefined,
> "type" => "StateManager/BasicAction/TwoPhaseCoordinator/ArjunaTransactionImple/ServerTransaction/JCA",
> "participants" => {"0:ffff7f000001:-4cecb39b:585109e2:31" => {
> "eis-product-name" => "unavailable",
> "eis-product-version" => "unavailable",
> "jmx-name" => undefined,
> "jndi-name" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "status" => "HEURISTIC_ROLLBACK",
> "type" => "/StateManager/AbstractRecord/ExtendedResourceRecord"
> }}
> }
> }
> }
> }
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-4cecb39b\:585109e2\:28/participants=0\:ffff7f000001\:-4cecb39b\:585109e2\:31:recover
> {"outcome" => "success"}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-4cecb39b\:585109e2\:28/participants=0\:ffff7f000001\:-4cecb39b\:585109e2\:31:read-resource
> {
> "outcome" => "success",
> "result" => {
> "eis-product-name" => "unavailable",
> "eis-product-version" => "unavailable",
> "jmx-name" => undefined,
> "jndi-name" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "status" => "HEURISTIC_ROLLBACK",
> "type" => "/StateManager/AbstractRecord/ExtendedResourceRecord"
> }
> }
> {code}
> I expect that {{:recover}} put the participant to {{PREPARED}} state and at that point RAR {{XATerminator.commit}} could commit such participant.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (JBTM-1107) Recovery Support in Compensation API
by Tom Jenkinson (JIRA)
[ https://issues.jboss.org/browse/JBTM-1107?page=com.atlassian.jira.plugin.... ]
Tom Jenkinson updated JBTM-1107:
--------------------------------
Issue Type: Feature Request (was: Enhancement)
> Recovery Support in Compensation API
> ------------------------------------
>
> Key: JBTM-1107
> URL: https://issues.jboss.org/browse/JBTM-1107
> Project: JBoss Transaction Manager
> Issue Type: Feature Request
> Components: Compensations
> Reporter: Tom Jenkinson
> Assignee: Gytis Trikleris
>
> *Background*
> Currently Compensations API cannot handle system failures. Transaction state is not persisted in any stage. Thus no handlers will be invoked in case of the system crash.
> *Requirements*
> # Make handlers persistable (CompensationHandler, ConfirmationHandler, TransactionLoggedHandler).
> ## Require Serializable interface.
> ## Create PersistableHandler interface (similar to PersistableParticipant in RTS integration).
> # Make participant persistable (ParticipantImpl, LocalParticipant, RemoteParticipant).
> ## Make transaction identifier persistable (converting it to String should work).
> ## Implement PersistableParticipant in ParticipantImpl.
> ## Investigate if PARTICIPANT_COUNTERS in ParticipatnImpl have to be updated.
> # Make compensation scoped beans persistable.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (JBTM-2813) Cli operation for listing transactions returns not only transactions but participants too - for JTS inflow txn
by Michael Musgrove (JIRA)
[ https://issues.jboss.org/browse/JBTM-2813?page=com.atlassian.jira.plugin.... ]
Michael Musgrove updated JBTM-2813:
-----------------------------------
Status: Resolved (was: Pull Request Sent)
Resolution: Done
> Cli operation for listing transactions returns not only transactions but participants too - for JTS inflow txn
> --------------------------------------------------------------------------------------------------------------
>
> Key: JBTM-2813
> URL: https://issues.jboss.org/browse/JBTM-2813
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Components: JTS
> Affects Versions: 5.4.0.Final
> Reporter: Ondra Chaloupka
> Assignee: Michael Musgrove
> Attachments: JcaInflowTransactionTestCase_rmerrWithRecovery_jts_server.log, tx-object-store_after-prepare.zip, tx-object-store_after-recover.zip
>
>
> This is a follow-up from JBEAP-6307 where change JBTM-2767 (Allow JTS JCA imported transactions to have clearHeuristic called on their participants) was part of it.
> That seems to bring wrong behavior of cli operation for listing transactions when JTS inflow txn is in use. Currently I do observe that operation [1] lists not only transactions as it should but there are listed participants of transaction as well - what is not expected.
> When inflow transaction is prepared then I can see (the testcase contains only one prepared transaction at the time which consists of two test XAResources)
> {code}
> [standalone@localhost:42042 /] /subsystem=transactions/log-store=log-store:probe()
> {"outcome" => "success"}
> [standalone@localhost:42042 /] /subsystem=transactions/log-store=log-store:read-resource()
> {
> "outcome" => "success",
> "result" => {
> "expose-all-logs" => false,
> "type" => "default",
> "transactions" => {
> "0:ffff7f000001:-f30b80c:58480e0a:2c" => undefined,
> "0:ffff7f000001:-f30b80c:58480e0a:26" => undefined,
> "0:ffff7f000001:-f30b80c:58480e0a:2f" => undefined
> }
> }
> }
> {code}
> My test causes that one participant ends in heuristic state thus recovery is processed only for the second one. After recovery is processed the listing changes to
> {code}
> [standalone@localhost:42042 /] /subsystem=transactions/log-store=log-store:probe()
> {"outcome" => "success"}
> [standalone@localhost:42042 /] /subsystem=transactions/log-store=log-store:read-resource()
> {
> "outcome" => "success",
> "result" => {
> "expose-all-logs" => false,
> "type" => "default",
> "transactions" => {
> "0:ffff7f000001:-f30b80c:58480e0a:26" => undefined,
> "0:ffff7f000001:-f30b80c:58480e0a:2f" => undefined
> }
> }
> }
> {code}
> I'm adding the content of {{tx-object-store}} at both phases and the {{server.log}} as well.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (JBTM-2819) Recover operation does not work for participant of JCA type transactions
by Ondra Chaloupka (JIRA)
[ https://issues.jboss.org/browse/JBTM-2819?page=com.atlassian.jira.plugin.... ]
Ondra Chaloupka updated JBTM-2819:
----------------------------------
Attachment: heuristic-rollback-objectstore.zip
> Recover operation does not work for participant of JCA type transactions
> ------------------------------------------------------------------------
>
> Key: JBTM-2819
> URL: https://issues.jboss.org/browse/JBTM-2819
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Affects Versions: 5.4.0.Final
> Reporter: Ondra Chaloupka
> Assignee: Michael Musgrove
> Attachments: heuristic-rollback-objectstore.zip
>
>
> Jboss cli {{:recover}} operation does not work when having JCA type transaction. My test shows following
> {code}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store:probe
> {"outcome" => "success"}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store:read-resource(recursive=true)
> {
> "outcome" => "success",
> "result" => {
> "expose-all-logs" => false,
> "type" => "default",
> "transactions" => {
> "0:ffff7f000001:-4cecb39b:585109e2:31" => {
> "age-in-seconds" => undefined,
> "id" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "jmx-name" => undefined,
> "type" => "CosTransactions/XAResourceRecord",
> "participants" => undefined
> },
> "0:ffff7f000001:-4cecb39b:585109e2:28" => {
> "age-in-seconds" => "1481798762",
> "id" => "0:ffff7f000001:-4cecb39b:585109e2:28",
> "jmx-name" => undefined,
> "type" => "StateManager/BasicAction/TwoPhaseCoordinator/ArjunaTransactionImple/ServerTransaction/JCA",
> "participants" => {"0:ffff7f000001:-4cecb39b:585109e2:31" => {
> "eis-product-name" => "unavailable",
> "eis-product-version" => "unavailable",
> "jmx-name" => undefined,
> "jndi-name" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "status" => "HEURISTIC_ROLLBACK",
> "type" => "/StateManager/AbstractRecord/ExtendedResourceRecord"
> }}
> }
> }
> }
> }
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-4cecb39b\:585109e2\:28/participants=0\:ffff7f000001\:-4cecb39b\:585109e2\:31:recover
> {"outcome" => "success"}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-4cecb39b\:585109e2\:28/participants=0\:ffff7f000001\:-4cecb39b\:585109e2\:31:read-resource
> {
> "outcome" => "success",
> "result" => {
> "eis-product-name" => "unavailable",
> "eis-product-version" => "unavailable",
> "jmx-name" => undefined,
> "jndi-name" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "status" => "HEURISTIC_ROLLBACK",
> "type" => "/StateManager/AbstractRecord/ExtendedResourceRecord"
> }
> }
> {code}
> I expect that {{:recover}} put the participant to {{PREPARED}} state and at that point RAR {{XATerminator.commit}} could commit such participant.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (JBTM-2819) Recover operation does not work for participant of JCA type transactions
by Ondra Chaloupka (JIRA)
[ https://issues.jboss.org/browse/JBTM-2819?page=com.atlassian.jira.plugin.... ]
Ondra Chaloupka updated JBTM-2819:
----------------------------------
Affects Version/s: 5.4.0.Final
> Recover operation does not work for participant of JCA type transactions
> ------------------------------------------------------------------------
>
> Key: JBTM-2819
> URL: https://issues.jboss.org/browse/JBTM-2819
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Affects Versions: 5.4.0.Final
> Reporter: Ondra Chaloupka
> Attachments: heuristic-rollback-objectstore.zip
>
>
> Jboss cli {{:recover}} operation does not work when having JCA type transaction. My test shows following
> {code}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store:probe
> {"outcome" => "success"}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store:read-resource(recursive=true)
> {
> "outcome" => "success",
> "result" => {
> "expose-all-logs" => false,
> "type" => "default",
> "transactions" => {
> "0:ffff7f000001:-4cecb39b:585109e2:31" => {
> "age-in-seconds" => undefined,
> "id" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "jmx-name" => undefined,
> "type" => "CosTransactions/XAResourceRecord",
> "participants" => undefined
> },
> "0:ffff7f000001:-4cecb39b:585109e2:28" => {
> "age-in-seconds" => "1481798762",
> "id" => "0:ffff7f000001:-4cecb39b:585109e2:28",
> "jmx-name" => undefined,
> "type" => "StateManager/BasicAction/TwoPhaseCoordinator/ArjunaTransactionImple/ServerTransaction/JCA",
> "participants" => {"0:ffff7f000001:-4cecb39b:585109e2:31" => {
> "eis-product-name" => "unavailable",
> "eis-product-version" => "unavailable",
> "jmx-name" => undefined,
> "jndi-name" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "status" => "HEURISTIC_ROLLBACK",
> "type" => "/StateManager/AbstractRecord/ExtendedResourceRecord"
> }}
> }
> }
> }
> }
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-4cecb39b\:585109e2\:28/participants=0\:ffff7f000001\:-4cecb39b\:585109e2\:31:recover
> {"outcome" => "success"}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-4cecb39b\:585109e2\:28/participants=0\:ffff7f000001\:-4cecb39b\:585109e2\:31:read-resource
> {
> "outcome" => "success",
> "result" => {
> "eis-product-name" => "unavailable",
> "eis-product-version" => "unavailable",
> "jmx-name" => undefined,
> "jndi-name" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "status" => "HEURISTIC_ROLLBACK",
> "type" => "/StateManager/AbstractRecord/ExtendedResourceRecord"
> }
> }
> {code}
> I expect that {{:recover}} put the participant to {{PREPARED}} state and at that point RAR {{XATerminator.commit}} could commit such participant.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (JBTM-2819) Recover operation does not work for participant of JCA type transactions
by Ondra Chaloupka (JIRA)
[ https://issues.jboss.org/browse/JBTM-2819?page=com.atlassian.jira.plugin.... ]
Ondra Chaloupka reassigned JBTM-2819:
-------------------------------------
Assignee: Michael Musgrove
> Recover operation does not work for participant of JCA type transactions
> ------------------------------------------------------------------------
>
> Key: JBTM-2819
> URL: https://issues.jboss.org/browse/JBTM-2819
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Affects Versions: 5.4.0.Final
> Reporter: Ondra Chaloupka
> Assignee: Michael Musgrove
> Attachments: heuristic-rollback-objectstore.zip
>
>
> Jboss cli {{:recover}} operation does not work when having JCA type transaction. My test shows following
> {code}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store:probe
> {"outcome" => "success"}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store:read-resource(recursive=true)
> {
> "outcome" => "success",
> "result" => {
> "expose-all-logs" => false,
> "type" => "default",
> "transactions" => {
> "0:ffff7f000001:-4cecb39b:585109e2:31" => {
> "age-in-seconds" => undefined,
> "id" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "jmx-name" => undefined,
> "type" => "CosTransactions/XAResourceRecord",
> "participants" => undefined
> },
> "0:ffff7f000001:-4cecb39b:585109e2:28" => {
> "age-in-seconds" => "1481798762",
> "id" => "0:ffff7f000001:-4cecb39b:585109e2:28",
> "jmx-name" => undefined,
> "type" => "StateManager/BasicAction/TwoPhaseCoordinator/ArjunaTransactionImple/ServerTransaction/JCA",
> "participants" => {"0:ffff7f000001:-4cecb39b:585109e2:31" => {
> "eis-product-name" => "unavailable",
> "eis-product-version" => "unavailable",
> "jmx-name" => undefined,
> "jndi-name" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "status" => "HEURISTIC_ROLLBACK",
> "type" => "/StateManager/AbstractRecord/ExtendedResourceRecord"
> }}
> }
> }
> }
> }
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-4cecb39b\:585109e2\:28/participants=0\:ffff7f000001\:-4cecb39b\:585109e2\:31:recover
> {"outcome" => "success"}
> [standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-4cecb39b\:585109e2\:28/participants=0\:ffff7f000001\:-4cecb39b\:585109e2\:31:read-resource
> {
> "outcome" => "success",
> "result" => {
> "eis-product-name" => "unavailable",
> "eis-product-version" => "unavailable",
> "jmx-name" => undefined,
> "jndi-name" => "0:ffff7f000001:-4cecb39b:585109e2:31",
> "status" => "HEURISTIC_ROLLBACK",
> "type" => "/StateManager/AbstractRecord/ExtendedResourceRecord"
> }
> }
> {code}
> I expect that {{:recover}} put the participant to {{PREPARED}} state and at that point RAR {{XATerminator.commit}} could commit such participant.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (JBTM-2819) Recover operation does not work for participant of JCA type transactions
by Ondra Chaloupka (JIRA)
Ondra Chaloupka created JBTM-2819:
-------------------------------------
Summary: Recover operation does not work for participant of JCA type transactions
Key: JBTM-2819
URL: https://issues.jboss.org/browse/JBTM-2819
Project: JBoss Transaction Manager
Issue Type: Bug
Reporter: Ondra Chaloupka
Jboss cli {{:recover}} operation does not work when having JCA type transaction. My test shows following
{code}
[standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store:probe
{"outcome" => "success"}
[standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store:read-resource(recursive=true)
{
"outcome" => "success",
"result" => {
"expose-all-logs" => false,
"type" => "default",
"transactions" => {
"0:ffff7f000001:-4cecb39b:585109e2:31" => {
"age-in-seconds" => undefined,
"id" => "0:ffff7f000001:-4cecb39b:585109e2:31",
"jmx-name" => undefined,
"type" => "CosTransactions/XAResourceRecord",
"participants" => undefined
},
"0:ffff7f000001:-4cecb39b:585109e2:28" => {
"age-in-seconds" => "1481798762",
"id" => "0:ffff7f000001:-4cecb39b:585109e2:28",
"jmx-name" => undefined,
"type" => "StateManager/BasicAction/TwoPhaseCoordinator/ArjunaTransactionImple/ServerTransaction/JCA",
"participants" => {"0:ffff7f000001:-4cecb39b:585109e2:31" => {
"eis-product-name" => "unavailable",
"eis-product-version" => "unavailable",
"jmx-name" => undefined,
"jndi-name" => "0:ffff7f000001:-4cecb39b:585109e2:31",
"status" => "HEURISTIC_ROLLBACK",
"type" => "/StateManager/AbstractRecord/ExtendedResourceRecord"
}}
}
}
}
}
[standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-4cecb39b\:585109e2\:28/participants=0\:ffff7f000001\:-4cecb39b\:585109e2\:31:recover
{"outcome" => "success"}
[standalone@localhost:9990 /] /subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-4cecb39b\:585109e2\:28/participants=0\:ffff7f000001\:-4cecb39b\:585109e2\:31:read-resource
{
"outcome" => "success",
"result" => {
"eis-product-name" => "unavailable",
"eis-product-version" => "unavailable",
"jmx-name" => undefined,
"jndi-name" => "0:ffff7f000001:-4cecb39b:585109e2:31",
"status" => "HEURISTIC_ROLLBACK",
"type" => "/StateManager/AbstractRecord/ExtendedResourceRecord"
}
}
{code}
I expect that {{:recover}} put the participant to {{PREPARED}} state and at that point RAR {{XATerminator.commit}} could commit such participant.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months