server: trans2_active: don't report a transaction active on the node that performs...
[metze/ctdb/wip.git] / server / ctdb_persistent.c
index 3c51742b1c2b14e9cb2c13b6f6c34c463c1244d4..66a3f7229b6b8394562a526e9585b8fa98b209f8 100644 (file)
@@ -608,9 +608,11 @@ int32_t ctdb_control_trans2_error(struct ctdb_context *ctdb,
  * Tell whether a transaction is active on this node on the give DB.
  */
 int32_t ctdb_control_trans2_active(struct ctdb_context *ctdb,
+                                  struct ctdb_req_control *c,
                                   uint32_t db_id)
 {
        struct ctdb_db_context *ctdb_db;
+       struct ctdb_client *client = ctdb_reqid_find(ctdb, c->client_id, struct ctdb_client);
 
        ctdb_db = find_ctdb_db(ctdb, db_id);
        if (!ctdb_db) {
@@ -618,6 +620,10 @@ int32_t ctdb_control_trans2_active(struct ctdb_context *ctdb,
                return -1;
        }
 
+       if (client->db_id == db_id) {
+               return 0;
+       }
+
        if (ctdb_db->transaction_active) {
                return 1;
        } else {