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

Method dumpAttachment

src/jrd/Monitoring.cpp:1533–1615  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1531
1532
1533void Monitoring::dumpAttachment(thread_db* tdbb, Attachment* attachment, ULONG generation)
1534{
1535 if (!attachment->att_user)
1536 return;
1537
1538 const auto dbb = tdbb->getDatabase();
1539 auto& pool = *dbb->dbb_permanent;
1540
1541 attachment->mergeStats();
1542
1543 const auto attId = attachment->att_attachment_id;
1544 const auto userName = attachment->getUserName();
1545
1546 fb_assert(dbb->dbb_monitoring_data);
1547
1548 attachment->att_monitor_generation = generation;
1549
1550 MonitoringData::Guard guard(dbb->dbb_monitoring_data);
1551 dbb->dbb_monitoring_data->cleanup(attId);
1552
1553 DumpWriter writer(dbb->dbb_monitoring_data, attId, userName.c_str(), generation);
1554 SnapshotData::DumpRecord record(pool, writer);
1555
1556 putAttachment(record, attachment);
1557
1558 jrd_tra* transaction = nullptr;
1559
1560 // Transaction information
1561
1562 for (transaction = attachment->att_transactions; transaction;
1563 transaction = transaction->tra_next)
1564 {
1565 putTransaction(record, transaction);
1566 }
1567
1568 // Call stack information
1569
1570 for (transaction = attachment->att_transactions; transaction;
1571 transaction = transaction->tra_next)
1572 {
1573 for (Request* request = transaction->tra_requests;
1574 request && (request->req_flags & req_active) && (request->req_transaction == transaction);
1575 request = request->req_caller)
1576 {
1577 request->adjustCallerStats();
1578
1579 if (!(request->getStatement()->flags &
1580 (Statement::FLAG_INTERNAL | Statement::FLAG_SYS_TRIGGER)) &&
1581 request->req_caller)
1582 {
1583 putCall(record, request);
1584 }
1585 }
1586 }
1587
1588 if (dbb->getEncodedOdsVersion() >= ODS_13_1)
1589 {
1590 // Statement information, must be put into dump before requests

Callers

nothing calls this directly

Calls 8

getDatabaseMethod · 0.80
mergeStatsMethod · 0.80
adjustCallerStatsMethod · 0.80
getEncodedOdsVersionMethod · 0.80
getUserNameMethod · 0.45
cleanupMethod · 0.45
c_strMethod · 0.45
getStatementMethod · 0.45

Tested by

no test coverage detected