struct db_ctdb_rec {
struct db_ctdb_ctx *ctdb_ctx;
struct ctdb_ltdb_header header;
+ struct timeval lock_time;
};
static NTSTATUS tdb_error_to_ntstatus(struct tdb_context *tdb)
{
struct db_ctdb_rec *crec = talloc_get_type_abort(
data->private_data, struct db_ctdb_rec);
+ int threshold;
DEBUG(10, (DEBUGLEVEL > 10
? "Unlocking db %u key %s\n"
return -1;
}
+ threshold = lp_ctdb_locktime_warn_threshold();
+ if (threshold != 0) {
+ double timediff = timeval_elapsed(&crec->lock_time);
+ if ((timediff * 1000) > threshold) {
+ DEBUG(0, ("Held tdb lock %f seconds\n", timediff));
+ }
+ }
+
return 0;
}
migrate_attempts));
}
+ GetTimeOfDay(&crec->lock_time);
+
memcpy(&crec->header, ctdb_data.dptr, sizeof(crec->header));
result->value.dsize = ctdb_data.dsize - sizeof(crec->header);