| /*========================================================================= |
| * Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved. |
| * This product is protected by U.S. and international copyright |
| * and intellectual property laws. Pivotal products are covered by |
| * one or more patents listed at http://www.pivotal.io/patents. |
| *========================================================================= |
| */ |
| #include "ace/Timer_Queue.h" |
| #include "ace/Timer_Heap.h" |
| #include "ace/Reactor.h" |
| #include "ace/svc_export.h" |
| #include "ace/Timer_Heap_T.h" |
| #include "ace/Timer_Queue_Adapters.h" |
| |
| #include "CacheImpl.hpp" |
| #include "ExpiryTaskManager.hpp" |
| #include "SuspendedTxExpiryHandler.hpp" |
| |
| using namespace gemfire; |
| |
| SuspendedTxExpiryHandler::SuspendedTxExpiryHandler( |
| CacheTransactionManagerImpl* cacheTxMgr, |
| TransactionIdPtr tid, |
| uint32_t duration): |
| m_cacheTxMgr(cacheTxMgr), |
| m_txid(tid), |
| m_duration(duration) |
| { |
| } |
| |
| int SuspendedTxExpiryHandler::handle_timeout(const ACE_Time_Value& current_time, |
| const void* arg) |
| { |
| LOGDEBUG("Entered SuspendedTxExpiryHandler"); |
| try { |
| // resume the transaction and rollback it |
| if (m_cacheTxMgr->tryResume(m_txid, false)) |
| m_cacheTxMgr->rollback(); |
| } |
| catch (...) { |
| // Ignore whatever exception comes |
| LOGFINE("Error while rollbacking expired suspended transaction. Ignoring the error"); |
| } |
| return 0; |
| } |
| |
| int SuspendedTxExpiryHandler::handle_close( ACE_HANDLE, ACE_Reactor_Mask ) |
| { |
| return 0; |
| } |
| |