A less intrusive deadlock prevention workaround
{
struct ctdb_db_context *ctdb_db;
for (ctdb_db=ctdb->db_list;ctdb_db;ctdb_db=ctdb_db->next) {
+ if (strstr(ctdb_db->db_name, "notify") != NULL) {
+ continue;
+ }
+ if (tdb_lockall(ctdb_db->ltdb->tdb) != 0) {
+ return -1;
+ }
+ }
+ for (ctdb_db=ctdb->db_list;ctdb_db;ctdb_db=ctdb_db->next) {
+ if (strstr(ctdb_db->db_name, "notify") == NULL) {
+ continue;
+ }
if (tdb_lockall(ctdb_db->ltdb->tdb) != 0) {
return -1;
}
return -1;
}
for (ctdb_db=ctdb->db_list;ctdb_db;ctdb_db=ctdb_db->next) {
+ if (strstr(ctdb_db->db_name, "notify") != NULL) {
+ continue;
+ }
+ if (tdb_lockall_mark(ctdb_db->ltdb->tdb) != 0) {
+ return -1;
+ }
+ }
+ for (ctdb_db=ctdb->db_list;ctdb_db;ctdb_db=ctdb_db->next) {
+ if (strstr(ctdb_db->db_name, "notify") == NULL) {
+ continue;
+ }
if (tdb_lockall_mark(ctdb_db->ltdb->tdb) != 0) {
return -1;
}