MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / TRA_detach_request

Function TRA_detach_request

src/jrd/tra.cpp:230–272  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

228}
229
230void TRA_detach_request(Jrd::Request* request)
231{
232 if (!request->req_transaction)
233 {
234 fb_assert(!request->req_savepoints);
235 return;
236 }
237
238 // Release stored looper savepoints
239 Savepoint::destroy(request->req_savepoints);
240 fb_assert(!request->req_savepoints);
241
242 // Release procedure savepoints used by this request
243 if (request->req_proc_sav_point)
244 {
245 fb_assert(request->req_flags & req_proc_fetch);
246 Savepoint::destroy(request->req_proc_sav_point);
247 fb_assert(!request->req_proc_sav_point);
248 }
249
250 // Remove request from the doubly linked list
251 if (request->req_tra_next)
252 {
253 fb_assert(request->req_tra_next->req_tra_prev == request);
254 request->req_tra_next->req_tra_prev = request->req_tra_prev;
255 }
256
257 if (request->req_tra_prev)
258 {
259 fb_assert(request->req_tra_prev->req_tra_next == request);
260 request->req_tra_prev->req_tra_next = request->req_tra_next;
261 }
262 else
263 {
264 fb_assert(request->req_transaction->tra_requests == request);
265 request->req_transaction->tra_requests = request->req_tra_next;
266 }
267
268 // Clear references
269 request->req_transaction = NULL;
270 request->req_tra_next = NULL;
271 request->req_tra_prev = NULL;
272}
273
274bool TRA_active_transactions(thread_db* tdbb, Database* dbb)
275{

Callers 4

executeMethod · 0.85
EXE_unwindFunction · 0.85
TRA_attach_requestFunction · 0.85
TRA_release_transactionFunction · 0.85

Calls 1

destroyFunction · 0.50

Tested by

no test coverage detected