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

Method putTransaction

src/jrd/Monitoring.cpp:1155–1221  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1153
1154
1155void Monitoring::putTransaction(SnapshotData::DumpRecord& record, const jrd_tra* transaction)
1156{
1157 fb_assert(transaction);
1158
1159 record.reset(rel_mon_transactions);
1160
1161 int temp = mon_state_idle;
1162 for (const Request* request = transaction->tra_requests;
1163 request; request = request->req_tra_next)
1164 {
1165 if (request->req_transaction && (request->req_flags & req_active))
1166 {
1167 temp = mon_state_active;
1168 break;
1169 }
1170 }
1171
1172 // transaction id
1173 record.storeInteger(f_mon_tra_id, transaction->tra_number);
1174 // attachment id
1175 record.storeInteger(f_mon_tra_att_id, transaction->tra_attachment->att_attachment_id);
1176 // state
1177 record.storeInteger(f_mon_tra_state, temp);
1178 // timestamp
1179 record.storeTimestampTz(f_mon_tra_timestamp, transaction->tra_timestamp);
1180 // top transaction
1181 record.storeInteger(f_mon_tra_top, transaction->tra_top);
1182 // oldest transaction
1183 record.storeInteger(f_mon_tra_oit, transaction->tra_oldest);
1184 // oldest active transaction
1185 record.storeInteger(f_mon_tra_oat, transaction->tra_oldest_active);
1186 // isolation mode
1187 if (transaction->tra_flags & TRA_degree3)
1188 temp = iso_mode_consistency;
1189 else if (transaction->tra_flags & TRA_read_committed)
1190 {
1191 temp = (transaction->tra_flags & TRA_read_consistency) ?
1192 iso_mode_rc_read_consistency :
1193 (transaction->tra_flags & TRA_rec_version) ?
1194 iso_mode_rc_version : iso_mode_rc_no_version;
1195 }
1196 else
1197 temp = iso_mode_concurrency;
1198 record.storeInteger(f_mon_tra_iso_mode, temp);
1199 // lock timeout
1200 record.storeInteger(f_mon_tra_lock_timeout, transaction->tra_lock_timeout);
1201 // read only flag
1202 temp = (transaction->tra_flags & TRA_readonly) ? 1 : 0;
1203 record.storeInteger(f_mon_tra_read_only, temp);
1204 // autocommit flag
1205 temp = (transaction->tra_flags & TRA_autocommit) ? 1 : 0;
1206 record.storeInteger(f_mon_tra_auto_commit, temp);
1207 // auto undo flag
1208 temp = (transaction->tra_flags & TRA_no_auto_undo) ? 0 : 1;
1209 record.storeInteger(f_mon_tra_auto_undo, temp);
1210 // statistics
1211 const int stat_id = fb_utils::genUniqueId();
1212 record.storeGlobalId(f_mon_tra_stat_id, getGlobalId(stat_id));

Callers

nothing calls this directly

Calls 6

genUniqueIdFunction · 0.85
storeIntegerMethod · 0.80
storeTimestampTzMethod · 0.80
storeGlobalIdMethod · 0.80
resetMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected