uint32_t destnode, struct timeval timeout,
uint32_t set, uint32_t clear);
+struct ctdb_server_id ctdb_client_get_server_id(
+ struct ctdb_client_context *client,
+ uint32_t task_id);
+
bool ctdb_server_id_equal(struct ctdb_server_id *sid1,
struct ctdb_server_id *sid2);
h->readonly = readonly;
h->updated = false;
- /* SRVID is unique for databases, so client can have transactions active
- * for multiple databases */
- h->sid.pid = getpid();
- h->sid.task_id = db->db_id;
- h->sid.vnn = state->destnode;
- h->sid.unique_id = h->sid.task_id;
- h->sid.unique_id = (h->sid.unique_id << 32) | h->sid.pid;
+ /* SRVID is unique for databases, so client can have transactions
+ * active for multiple databases */
+ h->sid = ctdb_client_get_server_id(client, db->db_id);
h->recbuf = ctdb_rec_buffer_init(h, db->db_id);
if (tevent_req_nomem(h->recbuf, req)) {
return ret;
}
+struct ctdb_server_id ctdb_client_get_server_id(
+ struct ctdb_client_context *client,
+ uint32_t task_id)
+{
+ struct ctdb_server_id sid;
+
+ sid.pid = getpid();
+ sid.task_id = task_id;
+ sid.vnn = ctdb_client_pnn(client);
+ sid.unique_id = task_id;
+ sid.unique_id = (sid.unique_id << 32) | sid.pid;
+
+ return sid;
+}
+
bool ctdb_server_id_equal(struct ctdb_server_id *sid1,
struct ctdb_server_id *sid2)
{