CORBA Object Transaction Service - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

CORBA Object Transaction Service

Description:

3. Transactions Concept (ACID) ATOMIC: All or nothing. If interrupted, all transaction is undone ... Terminator Interface. interface Terminator. void commit (in ... – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 32
Provided by: wolfgang95
Category:

less

Transcript and Presenter's Notes

Title: CORBA Object Transaction Service


1
CORBA Object Transaction Service
2
Topics
  • Basic Concept
  • Architecture diagram
  • Interfaces introduction
  • Code sample

3
Transactions Concept (ACID)
  • ATOMIC
  • All or nothing. If interrupted, all
    transaction is undone
  • CONSISTENT
  • The whole transaction preserves the same
    properties
  • ISOLATED
  • All transactions think it is executing
    serially, even if they are running concurrently
  • DURABLE
  • The results of a completed transaction are
    permanent and will never be lost

4
Two phase commit protocol
Transaction Manager
Resource Manager
Transaction Manager
Resource Manager
Prepare
Prepare
Prepared
No
Commit
Abort
Done
Done
Successful transaction
Failed transaction
5
Role Definitions
  • Transactional Client (TC)
  • Transactional Objects (TO)
  • Transaction Coordinator
  • Non-transactional Objects
  • Recoverable Objects and Resource Objects
  • Transactional Servers
  • Recoverable Servers

6
Coordinator
  • Coordinator plays key role in managing
    transaction.
  • Coordinator is the component that handles begin /
    commit / abort transaction calls.
  • Coordinator allocates system-wide unique
    transaction identifier.
  • Different transactions may have different
    coordinators.

7
Transactional Server
  • Every component with a resource accessed or
    modified under transaction control.
  • Transactional server has to know coordinator.
  • Transactional server registers its participation
    in a transaction with the coordinator.
  • Transactional server has to implement a
    transaction protocol (two-phase commit).

8
Transactional Client
  • Only sees transactions through the transaction
    coordinator.
  • Invokes services from the coordinator to begin,
    commit and abort transactions.
  • Implementation of transactions are transparent
    for the client.
  • Cannot tell difference between server and
    transactional server.

9
Transaction models
  • Flat transactions
  • transaction service must support these
  • a top-level transaction and cannot have a child
    transaction
  • Nested transactions
  • transaction service need not implement
  • provide for a finer granularity of recovery
  • transaction family
  • parent, child, sibling, ancestor, descendant

10
Flat Transactions
Flat Transaction
Crash
Flat Transaction
Flat Transaction
11
Nested Transactions
12
Transaction Context
  • part of the environment of each ORB-aware thread
  • can be null or refers to a specific transaction
  • can be implicitly or explicitly transmitted to
    transactional objects
  • allow programmer to pass as an explicit parameter
    of a request
  • contains unique transaction id (tid)

13
Basic architecture
3
resource
2
3
Sub- Transaction resource
Transactional client
Transactional object
recoverable object
Recoverable server
Transation server
7
1
4
5
6
Object Transaction Service
Transaction context
Object Request Broker (ORB)
14
Resource object
Coordinator
Server
register_resource()
Client
Resource
Current
register_rescource()
Resource
15
Resource object
Coordinator
Server
prepare()
commit()
Client
Resource
commit()
Current
prepare()
commit()
Resource
16
OTS Interfaces (CosTransactions)
  • Current Interface
  • TransactionFactory Interface
  • Control Interface
  • Terminal Interface
  • Coordinator Interface
  • Recovery Coordinator Interface
  • Resource Interface
  • Synchronization Interface
  • Subtransaction Aware Resource Interface
  • TransactionalObject Interface

17
IDL Interfaces
ltltInterfacegtgt
ltltInterfacegtgt
TransactionFactory
Resource
create()
prepare()
rollback()
commit()
ltltInterfacegtgt
commit_one_phase()
Current
forget()
ltltInterfacegtgt
Control
begin()
commit()
rollback()
get_terminator()
ltltInterfacegtgt
rollback_only()
get_coordinator()
Terminator
get_control()
get_status()
ltltInterfacegtgt
commit()
Coordinator
rollback()
register_resource()
get_status()
18
Current Interface
  • interface Current CORBA Current
  • void begin ()
  • raises (SubstransactionsUnavailable)
  • void commit (in boolean report_heuristics)
  • raises (Notransaction, HeuristicMixed,
    HeuristicsHazard)
  • void rollback()
  • raises (NoTransaction)
  • void rollback_only()
  • raises (NoTransactoin)
  • Status get_status()
  • string get_transaction_name()
  • void set_timeout (in unsigned long seconds)
  • Control get_control()
  • Control suspend()
  • void resume (in Control which)
  • raises (InvalidControl)

19
Control Interface
  • interface Control
  • Terminator get_terminator()
  • raises (Unavailable)
  • Coordinator get_coordinator()
  • raises (Unavailable)

20
Coordinator Interface
  • interface Coordinator
  • Status get_status()
  • Status get_parent_status()
  • Status get_top_level_status()
  • boolean is_same_transaction (in Coordinator
    tc)
  • boolean is_related_transaction (in Coordinator
    tc)
  • boolean is_ancestor_transaction (in Coordinator
    tc)
  • boolean is_descendant_transaction (in
    Coordinator tc)
  • boolean is_top_level_transaction()
  • unsigned long hash_transaction()
  • unsigned long hash_top_level_tran()
  • RecoveryCoordinator register_resource (in
    Resource r)
  • raises (Inactive)
  • void register_synchronization (in
    Synchronization sync)

21
Terminator Interface
  • interface Terminator
  • void commit (in boolean report_heuristics)
  • raises (HeuristicMixed, HeuristicHazard)
  • void rollback ()

22
Resource Interface
  • interface Resource
  • Vote prepare()
  • raises (HeuristicMixed, HeuristicHazard)
  • void rollback()
  • raises (HeuristicCommit, HeuristicMixed,
    HeuristicHazard)
  • void commit()
  • raises (NotPrepared, HeuristicRollback,
    HeuristicMixed, HeuristicHazard)
  • void commit_one_phase()
  • raises (HeuristicHazard)
  • void forget()

23
IDL sample
  • //IDL sample
  • interface Stock CosTransactionsTransactionalObj
    ect
  • exception RejectOrder
  • string Reason
  • exception DBNotAvailable
  • attribute long inStock
  • readonly attribute string StockName
  • void Order ( in long amount ) raises
    (RejectOrder)
  • void Query ( out long amount ) raises
    (DBNotAvailable)
  • interface Store CosTransactionsTransactionalObj
    ect
  • Stock GetStock (in long stock_id) raises
    (NoPart)
  • void DeleteStock (in Stock p)

24
Code sample
  • int main ()
  • Stock_var pStock
  • try
  • //bind to the Stock object
  • pStock Stock_bind (Server, host)
  • catch (CORBASystemExeption ex)
  • cout ltlt Error Binding! ltlt ex ltlt endl
  • EncinaClientExit(1)
  • //rest of client code
  • return 0

25
Transaction Example
  • try
  • CosTransactionsCurrentbegin()
  • Stock_var StockObj pStore-gtGetStock(id)
  • StockObj.Order(100)
  • CosTransactionsCurrentcommit()
  • catch (CORBATRANSACTION_ROLLBACK)
  • CosTransactionsCurrentrollback()
  • cout ltlt TransactionRollback exception,
    transaction aborted ltlt endl
  • commit FALSE
  • catch (CORBAUserException ex)
  • CosTransactionsCurrentrollback()
  • commit FALSE
  • cout ltlt TransactionRollback by ltlt ex ltlt endl
  • catch ()
  • CoTransactionCurrentrollback()
  • cout ltlt Unknown exception, transaction abortd
    ltlt endl

26
Recovery in Two-Phase Commit
  • Failures prior to start of 2PC results in abort.
  • Coordinator failure prior to transmitting commit
    messages results in abort.
  • After this point, co-ordinator will retransmit
    all Commit messages on restart.
  • If server fails prior to voting, it aborts.
  • If it fails after voting, it sends GetDecision.
  • If it fails after committing it (re)sends
    HaveCommitted message.

27
Committing Nested Transactions
  • Cannot use same mechanism to commit nested
    transactions as
  • subtransactions can abort independently of
    parent.
  • subtransactions must have made decision to commit
    or abort before parent transaction.
  • Top level transaction needs to be able to
    communicate its decision down to all
    subtransactions so they may react accordingly.

28
Provisional Commit
  • Subtransactions vote either
  • aborted or
  • provisionally committed.
  • Abort is handled as normal.
  • Provisional commit means that coordinator and
    transactional servers are willing to commit
    subtransaction but have not yet done so.

29
Locking and Provisional Commits
  • Locks cannot be released after provisional
    commit.
  • Data items remain protected until top-level
    transaction commits.
  • This may reduce concurrency.
  • Interactions between sibling subtransactions
  • should they be prevented (different)?
  • allowed (part of the same transaction)?
  • Generally they are prevented.

30
Key Points
  • A distributed object transaction is an atomic,
    consistency-preserving, isolated durable sequence
    of object requests
  • Objects participating in transactions can be
    transactional clients, transactional servers and
    transaction co-ordinators
  • Isolation is achieved by two-phase locking that
    can either be delegated to a database or be done
    explicitly by the server designer

31
Key Points
  • Atomicity is achieved by two-phase commit, which
    consists of a voting and a completion phase
  • Object-oriented middleware supports distributed
    transaction through transaction services
  • CORBA Transaction Service
  • Microsoft Transaction Server
  • Java Transaction Service
Write a Comment
User Comments (0)
About PowerShow.com